Rate Limiting vs Concurrency Limiting — 四大经典算法的工作原理与核心差异
把时间切成固定格子,每格独立计数。简单粗暴,但窗口交界处可能通过 2 倍流量。
在固定窗口基础上,用加权估算消除边界跳变:旧窗口按剩余比例衰减,而非一次性清零。
请求进入队列(桶),以恒定速率处理。不管来得多快,出去永远匀速。桶满则拒绝。
以固定速率往桶里放令牌,请求需取令牌才放行。空闲时令牌会积攒,允许短时突发。
场景:限制 10 QPS,子窗口 200ms。10 个请求集中在 [800ms, 1000ms] 到达。观察子窗口被踢出时,两种方案的容量恢复方式。
核心区别:方案 A 在子窗口被踢出的瞬间,容量从 0 阶跃到 10;方案 B 用加权让旧窗口的计数线性衰减,容量逐步释放。代价只是一次乘法。