秒杀系统设计方案
秒杀是检验高并发设计能力的试金石。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 容量模型验证
八、总结
- 秒杀系统的核心——层层过滤,减少到数据库的流量
- 架构全景图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 谜思录!