调节请求速率与限流阈值,点击「注入突发流量」,直观观察五种限流算法的行为差异
| 算法 | 核心思想 | 应对突发 | 平滑度 | 内存开销 | 典型应用 |
|---|---|---|---|---|---|
| 固定窗口计数器 | 每个时间窗口内计数,超限即拒 | 差(边界双倍) | 差 | 极低 O(1) | 粗粒度配额、API 日限额 |
| 滑动窗口日志 | 记录每次请求时间戳,精确统计窗口内数量 | 好 | 好 | 高 O(n) | 对精度要求极高的小流量场景 |
| 滑动窗口计数器 | 当前窗口计数 + 上一窗口加权估算 | 较好 | 较好 | 低 O(1) | 通用 API 限流(精度与成本折中) |
| 令牌桶 | 恒定速率发令牌,请求取令牌通行 | 好(可攒令牌) | 较好 | 低 O(1) | Guava RateLimiter、Nginx limit_req |
| 漏桶 | 请求入桶排队,恒定速率漏出处理 | 差(强行整流) | 极好 | 低 O(1) | 保护下游、消息队列削峰 |