logo
Reliability & Operations

Rate Limiting

限流策略

Rate limiting 是限制某个操作频率不超过阈值的机制。大型系统里常用它来保护资源与服务,同时防止 API 被恶意或无意过度使用。

rate-limiting

为什么需要 Rate Limiting?

  • 防止 DoS 导致资源耗尽
  • 控制成本(限制 auto-scaling 带来的费用)
  • 作为防御或缓解攻击
  • 控制高吞吐 API 的数据流量

Algorithms

常见限流算法:

Leaky Bucket

请求进入队列,按固定速率处理,队列满则丢弃(leak)。

Token Bucket

请求必须获取 token 才能处理,没 token 则拒绝。Token 会按时间补充。

Fixed Window

以固定窗口统计请求数,超过阈值则拒绝。

Sliding Log

记录每个请求时间戳,统计时间窗口内请求数,超阈值则拒绝。

Sliding Window

结合 fixed window 与 sliding log:计算当前窗口 + 上一窗口的加权值,平滑突发流量。

Rate Limiting in Distributed Systems

分布式场景下主要问题:

Inconsistencies

多个 nodes 各自限流会导致全局超限。解决方案包括 sticky sessions 或集中式存储(如 Redis),但会带来 fault tolerance 与 latency 问题。

Race Conditions

使用 get-then-set 容易发生竞态,导致计数被覆盖,限流失效。可以用分布式锁,但会成为 bottleneck;更好的做法是用原子操作(set-then-get)来快速更新计数。

相关练习题

Rate Limiting

暂无相关练习题