速率限制的交互式指南

[!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

介绍

限流是每个后端应用程序中的必备策略。它可以防止一个用户过度使用资源并降低其他用户的服务质量。以下是速率限制的一些好处:

  1. 它呈现资源匮乏
  2. 降低服务器托管成本
  3. 提供针对 DDoS 的基本保护

我制作了四个交互式应用程序,让您尝试常见的速率限制算法。

令牌桶

工作原理

桶中保存固定数量的令牌

令牌以固定速率添加到存储桶中

当收到请求时:

  • 如果令牌可用,则会将其从存储桶中删除并允许请求。
  • 如果没有可用的令牌,则请求将被拒绝或延迟。

如果令牌可用,则允许偶尔进行短暂的并发

我创建了一个应用程序 ,让您玩转漏桶算法。

漏水桶

工作原理

将其视为以固定速率泄漏的桶

传入请求将添加到存储桶中

请求以恒定速率处理(或“泄漏”)

如果新请求到达时存储桶已满,则会丢弃该请求

平滑连拍;以稳定的速率输出请求

我制作了一个应用程序 ,让您玩转漏桶算法。

固定窗口

工作原理

时间被划分为固定大小的窗口(例如,1 分钟)

计数器跟踪当前窗口中每个客户端/IP 的请求数

如果计数超过限制,则进一步的请求将被拒绝,直到下一个窗口

简单高效,但允许在结束/开始时出现突发流量峰值

我创建了一个应用程序 ,让您使用固定窗口算法。

滑动窗口

工作原理

保留每个请求的时间戳日志

当收到请求时,将检查日志以计算在过去 X 秒内发出的请求数

如果低于限制,则允许并记录请求;否则,它将被拒绝

我创建了一个应用程序 ,让您玩滑桶算法。

中文演示

文章原有的演示页面为英文,我用“豆书记”简单的写了一下中文的演示页面,共大家参考: