浅谈常用限流策略
在实际的应用场景中,常用的限流策略可以概括为一个词:两窗两桶。其中,两窗是指固定窗口和滑动窗口;两桶是指漏桶和令牌桶。
一、固定窗口
固定窗口,是指设定一个固定的统计周期(比如,30秒或1分钟),然后通过累加计数器对每个周期内的流量进行统计。在一个周期内,如果流量达到了设定的阈值,就进行流量干预,直到进入下一个统计周期,计数器清零,流量接收恢复正常。该策略可以用如下示意图来理解:
二、滑动窗口
滑动窗口,基于固定窗口做了进一步的细分,它将固定窗口的时间周期(颗粒)切得更细(比如,将1分钟的的“大”窗口切分为60个1秒的“小”窗口),并且统计的窗口会随着时间的流逝而后移。简单来说,滑动窗口统计的是从 当前时间 - 窗口大小
到 当前时间
内的流量。该策略可以用如下示意图来理解:
三、漏桶
漏铜的核心是固定"出口"速率。不管一次来多少流量,反正每一次每次出去的流量是固定的。如果进来的量累积到”桶都装不下了“,那么就触发流量干预。该策略可以用如下示意图来理解:
四、令牌桶
令牌桶的核心是固定”入口“速率。进入的请求先拿令牌,拥有了令牌才能被处理,如果拿不到令牌就触发流量干预。因此,当令牌的生成速度等于请求被处理的速度,那么此刻就是系统的处理极限。该策略可以用如下示意图来理解:
五、参考
浅谈常用限流策略
https://kuberxy.github.io/2020/12/06/浅谈常用限流策略/