限流方案常用算法讲解
作者:互联网
一、限流方案常用算法
天下武学出同源
正所谓天下武学殊途同归,不管是Nginx限流还是Redis限流,也不管招式耍的再花哨,到了最后都是应用几种特定的限流算法。
常见的限流算法一只手都可以数的过来,今天我们挑选令牌桶算法、漏桶算法、滑动窗口和计数器算法来讲一下。
1、令牌桶算法
令牌: 获取到令牌的Request才会被处理,其他Requests要么排队要么被直接丢弃
桶 :用来装令牌的地方,所有Request都从这个桶里面获取令牌
了解了这两个角色之后,让我们来看一下令牌桶算法的图示:
令牌生成
这个流程涉及到令牌生成器和令牌桶,前面我们提到过令牌桶是一个装令牌的地方,既然是个桶那么必然有一个容量,也就是说令牌桶所能容纳的令牌数量是一个固定的数值。
对于令牌生成器来说,它会根据一个预定的速率向桶中添加令牌,比如我们可以配置让它以每秒100个请求的速率发放令牌,或者每分钟50个。注意这里的发放速度是匀速,也就是说这50个令牌并非是在每个时间窗口刚开始的时候一次性发放,而是会在这个时间窗口内匀速发放。
在令牌发放器就是一个水龙头,假如在下面接水的桶子满了,那么自然这个水(令牌)就流到了外面。在令牌发放过程中也一样,令牌桶的容量是有限的,如果当前已经放满了额定容量的令牌,那么新来的令牌就会被丢弃掉。
标签:令牌,生成器,50,发放,算法,限流,讲解 来源: https://www.cnblogs.com/callbin/p/14615771.html