-
Notifications
You must be signed in to change notification settings - Fork 106
秒杀系统设计
raymond-zhao edited this page Aug 17, 2020
·
2 revisions
高并发有三宝:缓存、异步、队排好。
- 服务单一职责,独立部署
- 秒杀服务及时自己扛不住压力挂掉,也不要影响到其他服务。
- 秒杀链接加密
- 防止恶意攻击,模拟秒杀请求。
- 防止链接暴露,内部工作人员提前秒杀商品
- 库存预热+快速扣减
- 秒杀读多写少,无需每次实时校验库存,进行库存预热,放到
Redis
中,信号量控制秒杀的请求。
- 秒杀读多写少,无需每次实时校验库存,进行库存预热,放到
- 动静分离
-
Nginx
做好动静分离,保证秒杀和商品详情页的动态请求才发送到后端服务器集群。 - 使用
CDN
回流,分担本集群压力。
-
- 恶意请求拦截
- 识别非法攻击请求并进行拦截,网关层。
- 流量错峰
- 使用各种手段,将流量分担到更大宽度的时 间点。比如验证码,加入购物车
- 限流、熔断、降级
- 前端限流+后端限流
- 限制次数,限制总量,快速失败降级运行, 熔断隔离防止雪崩
- 队列削峰
- 1万个商品,每个1000件秒杀。双11 所有秒杀成功的请求,进入队列,慢慢创建订单,扣减库存即可。
秒杀业务具有瞬间高并发的特点,必须要做限流+异步+缓存(页面静态化)+独立部署,限流方式:
- 前端限流: 一些高并发的网站直接在前端页面开始限流。
-
nginx
限流: 直接负载部分请求到错误的静态页面,令牌算法,漏斗算法。 - 网关限流: 限流的过滤器
- 代码中使用分布式信号量
-
RabbitMQ
限流,保证发挥所有服务器的性能。
分布式电商系统,用来学习分布式相关理论知识与技术的试验平台,欢迎补充与PR。