高并发场景下秒杀系统的设计思路
1 概述 秒杀系统之所以难做,是因为在极短的时间内涌入大量的请求,来同时访问有限的服务资源,从而造成系统负载压力大,甚至导致系统服务瘫痪以及宕机的可能。本文会介绍秒杀系统中存在的痛点以及针对这些点的优化思路。 2 秒杀系统是什么鬼 如:12306的春节抢票、各大电商搞的定时抢购活动,如小米手机的在线抢购等,抢过火车票的同学都知道在放票的那一瞬间可能1s都不到,票就被抢购一空了。 3 秒杀系统的难点 (1)短时间内高并发,系统负载压力大 (2)竞争的资源有限,数据库锁冲突严重 (3)避免对其他业务的影响 4 常见的互联网分层架构 (1)客户端层:手机或PC端操作的客户端页面,域名通过DNS解析路由到NG (2)反向代理层:一般通过NG作为反向代理,将客户端请求均衡路由到后端站点服务,NG也可以水平扩展为多实例,且每个实例可单独部署为主从的高可用方案。 (3)站点层:站点层可以水平扩展为多个实例部署,以此来均衡来自客户端请求产生的高并发负载,多个web server之间的session信息可以集中存储于分布式缓存服务(Redis,MemCache)中。 (4)服务层:服务层也可水平扩展为多个实例部署,即时下最火的微服务方式 (5)数据库层:数据库层的常见部署方式,如读写分离,分库分表等 5 秒杀系统的架构原则 (1)尽量将请求拦截在上游 对于秒杀系统来说,系统的瓶颈一般在数据库层