浅谈常用限流策略

在实际的应用场景中,常用的限流策略可以概括为一个词:两窗两桶。其中,两窗是指固定窗口和滑动窗口;两桶是指漏桶和令牌桶。

一、固定窗口

固定窗口,是指设定一个固定的统计周期(比如,30秒或1分钟),然后通过累加计数器对每个周期内的流量进行统计。在一个周期内,如果流量达到了设定的阈值,就进行流量干预,直到进入下一个统计周期,计数器清零,流量接收恢复正常。该策略可以用如下示意图来理解:

image-20201206113313676

二、滑动窗口

滑动窗口,基于固定窗口做了进一步的细分,它将固定窗口的时间周期(颗粒)切得更细(比如,将1分钟的的“大”窗口切分为60个1秒的“小”窗口),并且统计的窗口会随着时间的流逝而后移。简单来说,滑动窗口统计的是从 当前时间 - 窗口大小当前时间 内的流量。该策略可以用如下示意图来理解:

image-20201206113401043

三、漏桶

漏铜的核心是固定"出口"速率。不管一次来多少流量,反正每一次每次出去的流量是固定的。如果进来的量累积到”桶都装不下了“,那么就触发流量干预。该策略可以用如下示意图来理解:

image-20201206113416104

四、令牌桶

令牌桶的核心是固定”入口“速率。进入的请求先拿令牌,拥有了令牌才能被处理,如果拿不到令牌就触发流量干预。因此,当令牌的生成速度等于请求被处理的速度,那么此刻就是系统的处理极限。该策略可以用如下示意图来理解:

image-20201206114518339

五、参考

分布式系统关注点——限流该怎么做?

预案三板斧的限流大法


浅谈常用限流策略
https://kuberxy.github.io/2020/12/06/浅谈常用限流策略/
作者
Mr.x
发布于
2020年12月6日
许可协议