这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
开始 - 秒杀系统概述
秒杀活动的特点是“少量库存 + 巨大瞬时流量”。用户看到的只是一个抢购按钮,但系统背后要同时处理流量接入、资格校验、库存扣减、订单生成、支付超时、风控拦截和结果通知。
如果直接把所有请求打到数据库,下场通常是:
- 数据库连接池被打满。
- 库存行被频繁加锁。
- 成功用户很少,失败请求却消耗了大部分资源。
- 脚本流量抢占正常用户机会。
- 订单和库存状态出现不一致。
秒杀系统的核心目标
秒杀系统不是让所有请求都成功,而是让有限库存被公平、正确、可控地卖出:
- 不超卖:卖出的商品数不能超过库存。
- 不少卖:库存真实存在时不要因为系统异常浪费。
- 抗高峰:流量洪峰不能压垮核心服务。
- 可解释:用户知道排队、售罄或失败原因。
- 可治理:脚本、黄牛和异常账号要被识别和限制。
关键取舍
秒杀设计里最常见的取舍是:
- 同步下单体验好,但高峰期容易拖垮系统。
- 异步排队能削峰,但用户要等待结果。
- 数据库扣库存一致性强,但吞吐低。
- Redis 扣库存吞吐高,但需要补偿和对账。
本课程会按真实演进路线展开:先理解业务特性,再从数据库锁方案开始,逐步引入 Redis、队列、限流、库存同步和风控。