秒杀是检验高并发设计能力的试金石。10 万 QPS 的秒杀系统,从 0 到 1 的完整设计过程。

一、需求分析与容量预估

  • 1.1 业务场景——限时抢购、库存有限
  • 1.2 流量特点——瞬时峰值极高、读写比例悬殊
  • 1.3 QPS 预估——10 万人同时抢 1000 件商品
  • 1.4 核心目标——不超卖、少超时、防刷

二、前端层优化

  • 2.1 动静分离——CDN 缓存静态资源
  • 2.2 按钮防重复——置灰 + 倒计时
  • 2.3 验证码——分散用户点击时间
  • 2.4 限流——答题/滑块验证

三、网关层防护

  • 3.1 Nginx 限流——limit_req_zone
  • 3.2 黑白名单——IP 级别
  • 3.3 请求校验——Token/签名防刷

四、应用层设计

  • 4.1 队列削峰——RocketMQ 异步下单
  • 4.2 Redis 预热——库存预加载
  • 4.3 Redis Lua 原子扣减——核心逻辑
  • 4.4 下单结果异步通知

五、数据库层设计

  • 5.1 分库分表——按用户 ID
  • 5.2 热点隔离——秒杀商品独立库
  • 5.3 最终一致性——支付异步确认

六、防刷设计

  • 6.1 用户维度限购
  • 6.2 设备指纹
  • 6.3 风控系统接入

七、压测验证

  • 7.1 JMeter 压测脚本
  • 7.2 全链路压测 vs 单接口压测
  • 7.3 瓶颈分析——CPU/内存/DB/Redis
  • 7.4 容量模型验证

八、总结

  • 秒杀系统的核心——层层过滤,减少到数据库的流量
  • 架构全景图