场景解剖四:秒杀系统(全链路总复习)
2026/8/24大约 3 分钟
亿级规模系统系列 · 阶段 7 · 亿级场景实战 · 第 42/49 篇 · 🚧 占位待学
上一篇:《场景解剖三:千万长连接推送系统》
下一篇:《全链路压测:为什么单机压测会骗人》
学习大纲:《QPS 过万与亿级消息系统设计学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 7 · 单元 7.4
一、本文要解决的问题
10 万库存、100 万请求、1 秒抢完,系统怎么活?秒杀是高并发的「高考题」:缓存、MQ、分片、限流、降级、高可用全部要在一个系统里协同工作。这一篇是前六个阶段的总装车间,每个环节都要能回答「为什么这么设计、不用这个方案会怎样」。
二、知识点清单
- 全链路逐层漏斗:CDN / 前端(按钮防抖、答题)→ 网关限流 → 应用层(Redis 预扣)→ MQ 削峰 → DB 终态——每层漏掉多少
- 库存不超卖的三层防线:Redis 原子扣减(Lua / DECR)→ MQ 串行化 → DB 乐观锁(affected rows 校验)
- 热点应对:库存 key 是超级热点(阶段 2.6 的拆分:分段库存)、活动页静态化 + CDN
- 防刷与风控:答题拖慢请求、黑名单、设备指纹、下单频率限制
- 隔离:秒杀链路独立部署(独立网关分组 / 独立 Redis / 独立 DB),失败不传染主站
- 兜底降级:库存售罄后的快速失败(本地标记)、活动结束的静态页切换
三、动手实验(学习时必须真跑)
- 实现完整秒杀:活动页 + 秒杀接口(Redis 预扣 + MQ + DB 终扣)+ 订单查询
- 全链路压测:10 万库存,模拟 100 万请求 1 万并发,验证:不超卖(对账三层数据一致)、不雪崩(各层水位)、支撑 1 万+ QPS
- 对比实验:去掉 MQ 直连 DB 版 vs 完整版,压测 DB 曲线与系统存活对比
四、验收标准(全部通过才进入下一篇)
五、阶段验收(本篇是阶段 7收尾篇)
六、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(Spring Boot 3.x / MySQL 8.0 / Redis 8.x / RocketMQ 5.3.x / Kafka 4.3 / ShardingSphere 5.5.3)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。