← 最新论文
💻 computer science

A Comparative Survey of API Rate-Limiting Algorithms: Token Bucket, Leaky Bucket, and Sliding Window

本文通过对五种广泛使用的 API 限流算法——令牌桶、漏桶、固定窗口、滑动日志窗口和滑动计数窗口——进行综述与实验对比,旨在评估它们在突发容忍度和精确度方面的权衡,并最终根据特定的流量特征和系统约束,为选择最合适的算法提供指导。

原作者: Umair Saleem

发布于 2026-09-09
📖 1 分钟阅读☕ 轻松阅读

原作者: Umair Saleem

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

现代数字服务依赖于可用性与保护之间的微妙平衡。当数百万人同时尝试访问一个网站或应用程序时,背后的服务器可能会变得不堪重负,就像单车道桥梁被突如其来的交通激增所堵塞一样。为了防止这种崩溃,工程师使用一种被称为“速率限制”(rate limiting)的机制,它充当了守门员的角色。这个守门员会统计特定用户或设备在一定时期内发送了多少次请求,并拦截任何超过安全阈值的请求。其目的并非惩罚用户,而是确保系统对所有人保持稳定,防止少数高负载用户消耗掉所有可用资源。然而,并非所有的流量都以平稳流的形式到达;有时它会以突然且剧烈的爆发形式出现,例如当热门新闻爆发或系统重试失败连接时。工程师面临的挑战是决定如何处理这些爆发:系统应该允许暂时的峰值通过,还是无论情况如何都严格执行统一的限制?

Umair Saleem 最近的一项研究调查了用于构建这些数字守门员的不同数学规则。该研究重点关注了行业中常用的五种特定方法:令牌桶(token bucket)、漏桶(leaky bucket)、固定窗口计数器(fixed window counter)、滑动窗口日志(sliding window log)以及滑动窗口计数器(sliding window counter)。每种方法在追踪时间和统计请求的方式上各不相同,导致在流量激增时表现出不同的行为。为了了解哪种方法效果最好,作者不仅依赖理论,还建立了一个计算机模拟实验,在完全相同的条件下对它们进行测试。该模拟创建了一个真实的请求流,在一百秒的时间内发送了超过一千个请求。这个请求流包含了一个每秒八次请求的稳定背景流,期间被两次明显的活动爆发所中断:一次是持续五秒、流量跳升至每秒四十次请求的阶段,随后是一个更剧烈的、持续两秒、达到每秒六十次请求的峰值。通过将这一完全相同的流量模式运行在每一种算法中,该研究可以精确测量每种方法接受了多少请求、拒绝了多少请求,以及系统在峰值期间的表现如何。

结果显示,这些算法在处理流量激增压力方面存在明显的差异。当仅用于决定接受或拒绝请求时,令牌桶和漏桶的表现几乎完全一致。这两种方法都能比其他方法更有效地吸收爆发流量,在发送的 1,057 个请求中总共接受了 844 个,这意味着接受率约为 80%。在第一次大规模爆发期间,这两种方法允许 69 个请求通过;而在第二次更剧烈的爆发期间,它们允许 38 个请求通过。这是因为这些算法在设计时就具备了存储未来使用的“备用”权限的能力,从而能够平滑处理峰值,而不会立即拒绝用户。相比之下,滑动窗口日志是所有方法中最僵化的。它在任何单秒内都不会允许超过十个请求通过,严格遵守配置的限制。虽然这提供了针对过载最精确的保护,但也付出了高昂的代价:它拒绝了最多的流量,仅接受了 67.9% 的请求。它是唯一一种能保证系统绝不会看到超过限制的峰值的方法,但它是通过比其他方法更频繁地拒绝合法用户来实现这一点的。

其余三种方法处于中间位置,表现出基于其测量时间方式的预见性缺陷。固定窗口计数器由于在每一秒开始时都会重置其计数,因此在边界处遭受了计时误差的影响。因为它可能在流量爆发到达的同时重置计数器,所以它允许单秒内出现高达十五个请求的临时峰值,高于预设限制。滑动窗口计数器试图通过参考前一秒来修复这个问题,但仅部分纠正了该问题,峰值达到了十三。研究发现,算法的选择完全取决于系统需要保护什么。如果目标是让用户满意并允许自然的活动爆发(例如页面重新加载并带有多次数据调用),那么令牌桶是更优的选择,因为它在保持高接受率的同时兼顾了稳定的性能。如果目标是保护一个无法容忍任何峰值的脆弱下游系统,那么滑动窗口日志是更好的选择,尽管其接受率较低。研究结论指出,不存在适用于所有工作的完美工具;相反,工程师必须选择与他们对流量峰值的容忍度以及可用内存资源相匹配的方法。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →