秒杀抢购

设计防超卖、限流、削峰的秒杀系统

系统设计 秒杀 高并发

系统演进路线

从数据库扣库存到秒杀活动作战平台

第 1 版

数据库扣库存

第一次限量活动只有几百人参与,用事务扣库存。

商品库存表订单表乐观锁

能防超卖,但高峰期数据库锁冲突会迅速放大。

第 2 版

Redis 预扣库存

活动入口流量暴涨,需要把库存判断前置到内存。

库存预热Redis 扣减资格校验下单队列

核心链路变快,但 Redis 与数据库库存必须对账。

第 3 版

流量削峰排队

无效请求远大于库存,系统要先保护入口。

限流排队页令牌防刷异步下单

秒杀不再追求所有请求进系统,而是让有效用户有序进入。

生产版

活动作战平台

多场活动、黑产、支付超时和客服补偿进入日常。

活动配置库存同步风控监控大盘应急开关

生产秒杀系统要可预演、可观测、可止损。

课程简介

系统总览
秒杀系统总览
把流量削峰、库存扣减、异步下单和防刷治理拆成可控链路。
入口
活动页
答题/验证码
限流
库存
Redis 扣减
队列串行化
最终校准
订单
异步创建
支付超时
风控拦截

秒杀系统是高并发系统设计里最典型的场景之一:短时间内大量用户争抢有限库存,系统既不能超卖,也不能让核心链路被流量打垮。真正困难的不是“扣库存”这一行代码,而是如何在流量洪峰、库存一致性、用户体验、防刷和下单可靠性之间做取舍。

这门课从一次限量抢购活动开始,逐步构建一套可上线的秒杀系统。

学习路线

  1. 秒杀系统概述:理解秒杀活动的业务目标、流量特征和核心风险。
  2. 特性分析:拆解瞬时高并发、库存稀缺、防刷和下单链路。
  3. 数据库锁方案:从悲观锁、乐观锁看第一版防超卖设计的边界。
  4. Redis 队列方案:把库存扣减前置到内存,并通过队列串行化下单。
  5. 限流削峰:使用令牌桶、排队、答题门槛等方式保护核心链路。
  6. 库存同步:处理 Redis 库存、数据库库存、订单状态之间的一致性。
  7. 防刷风控:识别脚本、黑产账号和异常设备,减少无效流量。
  8. 完整系统:总结最终架构、关键决策和上线检查清单。

读完后,你应该能解释秒杀系统为什么要把“流量进入、资格校验、库存扣减、订单创建、支付确认”拆成不同阶段,并能判断每一阶段需要强一致还是最终一致。

章节