限流削峰

秒杀系统不能让所有请求都进入库存扣减链路。库存只有 1000 件,如果有 1000 万请求,绝大多数请求注定失败。限流削峰的目标是尽早控制流量,保护核心资源。

本章主线

本章围绕三类削峰手段:

  1. 令牌桶:控制单位时间进入核心链路的请求数。
  2. 排队系统:把瞬时洪峰变成可处理的稳定流量。
  3. 答题门槛:降低脚本请求比例,同时给用户心理缓冲。

分层限流

限流应该分层:

  • CDN 和网关层限制异常 IP、频率和地区。
  • 用户层限制单用户、单设备、单账号请求次数。
  • 活动层限制进入某个秒杀活动的总请求量。
  • 库存层只允许接近库存规模的请求进入预扣链路。

越靠前拦截,成本越低。

排队不是万能

排队能改善体验,但队列长度必须可控。如果库存早已售罄,还让用户排队几分钟,只会制造更差体验。排队系统要能根据库存、处理速度和队列长度给出明确反馈:

  • 排队中。
  • 预计等待。
  • 已售罄。
  • 请求过多,请稍后再试。

答题和预约

答题、预约、开抢提醒等机制不是纯产品玩法,它们能降低瞬时流量:

  • 预约让系统提前估算规模。
  • 答题让脚本成本上升。
  • 分批放量让流量更平滑。

限流削峰的核心不是拒绝用户,而是让系统把有限处理能力用在最有价值、最可能成功的请求上。

章节