这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
限流削峰
秒杀系统不能让所有请求都进入库存扣减链路。库存只有 1000 件,如果有 1000 万请求,绝大多数请求注定失败。限流削峰的目标是尽早控制流量,保护核心资源。
本章主线
本章围绕三类削峰手段:
- 令牌桶:控制单位时间进入核心链路的请求数。
- 排队系统:把瞬时洪峰变成可处理的稳定流量。
- 答题门槛:降低脚本请求比例,同时给用户心理缓冲。
分层限流
限流应该分层:
- CDN 和网关层限制异常 IP、频率和地区。
- 用户层限制单用户、单设备、单账号请求次数。
- 活动层限制进入某个秒杀活动的总请求量。
- 库存层只允许接近库存规模的请求进入预扣链路。
越靠前拦截,成本越低。
排队不是万能
排队能改善体验,但队列长度必须可控。如果库存早已售罄,还让用户排队几分钟,只会制造更差体验。排队系统要能根据库存、处理速度和队列长度给出明确反馈:
- 排队中。
- 预计等待。
- 已售罄。
- 请求过多,请稍后再试。
答题和预约
答题、预约、开抢提醒等机制不是纯产品玩法,它们能降低瞬时流量:
- 预约让系统提前估算规模。
- 答题让脚本成本上升。
- 分批放量让流量更平滑。
限流削峰的核心不是拒绝用户,而是让系统把有限处理能力用在最有价值、最可能成功的请求上。