编程语言
首页 > 编程语言> > 常见分布式算法之(二)——限流算法

常见分布式算法之(二)——限流算法

作者:互联网

在分布式系统高并发场景下,用于控制流量大小,防止由于流量过大导致服务器宕机。常用的限流算法如下:

一、滚动窗口

又称计算器限流法,包括两种参数,即窗口时间大小(windows_sieze)和限流次数(count),假设windows_size=5秒,count=10,即每个窗口时间5秒内,最大的访问次数不超过10,如下图

 

 

二、滑动窗口

如滚动窗口例子,当第4秒到第5秒之间(窗口交替时),如果突然出现高并发时,可能会导致响应次数超过10,比如第4秒突然出现9次访问,第5秒也出现了9次访问,那么这两秒之内就出现了18次,超过预先设想值(5秒内10次)。为避免上述情况,可以使用滑动窗口进行改进,如下图:


滑动窗口包括两个重要参数,即窗口大小(window_size)和滑动步长(slide_step),当window_size == slide_step时,即滑动窗口等同于滚动窗口。 

三、令牌桶限流

四、漏桶限流

  和令牌桶限流算法一样,漏桶算法内部也同样维护一个容器,这个容器会以恒定速度出水,不管上面的水流速度有多快,漏桶水滴的流出速度始终保持不变。实际上消息中间件就是使用了漏桶限流的思想,不管生产者的请求有多大,消息的处理能力取决于消费者。

五、回顾总结

标签:10,令牌,窗口,算法,限流,漏桶,分布式
来源: https://www.cnblogs.com/jaco32/p/14976150.html