服务端限流算法


一、滑动时间窗口算法

  • 设定目标限流maxQps。

  • 根据当前时间获取对应的时间窗口

  • 根据统计数据计算出当前时间窗口内的请求量是否大于maxQps

  • 小于则处理本次请求,更新统计数据,否则按限流处理

如图中的滑窗实现,按200ms对时间进行分配,窗口大小1000ms,时间戳1001落在1000~1200的时间片,则统计200~1200这个窗口内的请求数。优缺点:

  • 实现简单

  • 时间分片的实现下,容易在时间片临界点出现流量抖动

  • 流量较大时,容易在一个时间片的开始就用完了限速额,直到窗口向前滑动一格才再次有额度,导致实际处理的流量不均匀

二、令牌桶算法