限流算法

常见限流算法包括固定窗口、滑动窗口、令牌桶与漏桶;令牌桶允许突发,漏桶平滑输出,滑动窗口统计更平滑,选择取决于要抑制突发还是允许突发。

算法

算法特点适用场景
固定窗口实现简单,窗口边界可放行约两倍流量粗粒度保护
滑动窗口统计平滑,内存开销略高精确限流
令牌桶按速率补令牌,允许突发API 配额
漏桶恒定速率流出,削峰保护下游处理速率
限流要定义拒绝语义:返回 429 并携带 Retry-After,比静默排队或超时更利于客户端配合。

易错点

  • 固定窗口在边界处放行双倍流量
  • 限流按实例维度实施,扩容后整体阈值随实例数放大

数据来源与参考

  • 《System Design Interview》卷 1(Alex Xu)第 4 章
  • RFC 6585:429 Too Many Requests
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌