Skip to content

秒杀系统设计

raymond-zhao edited this page Aug 17, 2020 · 2 revisions

秒杀(高并发系统)关注的问题

高并发有三宝:缓存、异步、队排好。

秒杀(高并发)系统关注的问题

  • 服务单一职责,独立部署
    • 秒杀服务及时自己扛不住压力挂掉,也不要影响到其他服务。
  • 秒杀链接加密
    • 防止恶意攻击,模拟秒杀请求。
    • 防止链接暴露,内部工作人员提前秒杀商品
  • 库存预热+快速扣减
    • 秒杀读多写少,无需每次实时校验库存,进行库存预热,放到Redis中,信号量控制秒杀的请求。
  • 动静分离
    • Nginx做好动静分离,保证秒杀和商品详情页的动态请求才发送到后端服务器集群。
    • 使用CDN回流,分担本集群压力。
  • 恶意请求拦截
    • 识别非法攻击请求并进行拦截,网关层。
  • 流量错峰
    • 使用各种手段,将流量分担到更大宽度的时 间点。比如验证码,加入购物车
  • 限流、熔断、降级
    • 前端限流+后端限流
    • 限制次数,限制总量,快速失败降级运行, 熔断隔离防止雪崩
  • 队列削峰
    • 1万个商品,每个1000件秒杀。双11 所有秒杀成功的请求,进入队列,慢慢创建订单,扣减库存即可。

秒杀业务具有瞬间高并发的特点,必须要做限流+异步+缓存(页面静态化)+独立部署,限流方式:

  • 前端限流: 一些高并发的网站直接在前端页面开始限流。
  • nginx限流: 直接负载部分请求到错误的静态页面,令牌算法,漏斗算法。
  • 网关限流: 限流的过滤器
  • 代码中使用分布式信号量
  • RabbitMQ限流,保证发挥所有服务器的性能。

秒杀架构图

秒杀架构图

Clone this wiki locally