它可以防止一个用户过度使用资源并降低其他用户的服务质量。以下是速率限制的一些好处
- 呈现 资源匮乏
- 降低服务器托管成本
- 提供针对 DDoS 的基本保护
方案
令牌桶
- 桶中保存固定数量的令牌
- 令牌以固定速率添加到存储桶中
- 当收到请求时:
- 如果令牌可用,则会将其从存储桶中删除并允许请求。
- 如果没有可用的令牌,则请求将被拒绝或延迟。
- 如果令牌可用,可以接受短暂的大量连续请求
漏桶
- 将其视为以固定速率泄漏的桶
- 传入请求将添加到存储桶中
- 请求以恒定速率处理
- 如果新请求到达时存储桶已满,则会丢弃该请求
- 以稳定的速率输出请求
固定窗口计数
- 时间被划分为固定大小的窗口
- 计数器跟踪当前窗口中每个客户端/IP 的请求数
- 如果计数超过限制,则进一步的请求将被拒绝,直到下一个窗口
- 简单高效,允许在结束/开始时出现突发流量峰值
滑动窗口计数
- 保留每个请求的时间戳日志
- 当收到请求时,将检查日志以计算在过去
X秒内发出的请求数 - 如果低于限制,则允许并记录请求;否则,它将被拒绝