速率限制的交互式指南
[!NOTE]
本文非原创,原文由Sagyam Thapa创作
原文链接:https://blog.sagyamthapa.com.np/interactive-guide-to-rate-limiting
This article is not original. The original text was created by Sagyam Thapa
The original link: https://blog.sagyamthapa.com.np/interactive-guide-to-rate-limiting
介绍
限流是每个后端应用程序中的必备策略。它可以防止一个用户过度使用资源并降低其他用户的服务质量。以下是速率限制的一些好处:
- 它呈现资源匮乏
- 降低服务器托管成本
- 提供针对 DDoS 的基本保护
我制作了四个交互式应用程序,让您尝试常见的速率限制算法。
令牌桶
工作原理
桶中保存固定数量的令牌
令牌以固定速率添加到存储桶中
当收到请求时:
- 如果令牌可用,则会将其从存储桶中删除并允许请求。
- 如果没有可用的令牌,则请求将被拒绝或延迟。
如果令牌可用,则允许偶尔进行短暂的并发
我创建了一个应用程序 ,让您玩转漏桶算法。
漏水桶
工作原理
将其视为以固定速率泄漏的桶
传入请求将添加到存储桶中
请求以恒定速率处理(或“泄漏”)
如果新请求到达时存储桶已满,则会丢弃该请求
平滑连拍;以稳定的速率输出请求
我制作了一个应用程序 ,让您玩转漏桶算法。
固定窗口
工作原理
时间被划分为固定大小的窗口(例如,1 分钟)
计数器跟踪当前窗口中每个客户端/IP 的请求数
如果计数超过限制,则进一步的请求将被拒绝,直到下一个窗口
简单高效,但允许在结束/开始时出现突发流量峰值
我创建了一个应用程序 ,让您使用固定窗口算法。
滑动窗口
工作原理
保留每个请求的时间戳日志
当收到请求时,将检查日志以计算在过去 X
秒内发出的请求数
如果低于限制,则允许并记录请求;否则,它将被拒绝
我创建了一个应用程序 ,让您玩滑桶算法。
中文演示
文章原有的演示页面为英文,我用“豆书记”简单的写了一下中文的演示页面,共大家参考:
- 令牌桶:http://log.660066.xyz/2025/06/13/interactive-guide-to-rate-limiting/token-bucket.html
- 漏水桶:http://log.660066.xyz/2025/06/13/interactive-guide-to-rate-limiting/leaky-bucket.html
- 固定窗口:http://log.660066.xyz/2025/06/13/interactive-guide-to-rate-limiting/fixed-window.html
- 滑动窗口:http://log.660066.xyz/2025/06/13/interactive-guide-to-rate-limiting/sliding-window.html