【转】流量控制算法——什么是漏桶算法和令牌桶算法?

24,695次阅读
没有评论

共计 694 个字符,预计需要花费 2 分钟才能阅读完成。

令牌桶(TokenBucket)简介

1. 令牌桶实现的基本思想

令牌桶,顾名思义,是一种通过让请求被处理前先行获取令牌,只有获取到令牌的请求才能被放行处理的一种限流方式。令牌桶的实现包含两个方面:

一方面是按固定的速率来产生令牌并存入桶中,如果令牌数量超过桶的最大容量则直接丢弃掉。

一方面当有请求时先从桶中获取令牌,获取到令牌后才能通过进行处理,否则被直接丢弃或等待获取令牌。

2. 令牌桶与漏桶(LeakyBucket)的区别

令牌桶与漏桶的区别在于漏桶控制的是请求被处理的速率。即当有请求的时候,先进入桶中进行排队,按固定的速率流出被处理;而令牌桶控制的是令牌产生的速率。即当有请求的时候,先从令牌桶中获取令牌,只要能获取到令牌就能立即通过被处理,不限制请求被处理的速度,所以也就可以应对一定程度的突发流量。如图所示二者的区别:

【转】流量控制算法——什么是漏桶算法和令牌桶算法?

区别

比如有 100 个请求同时进入。现在假设漏桶的速率是每 10ms 处理一个请求,那么要处理完这 100 个请求需要 1 秒钟,因为每处理完 1 个请求,都需要等待 10ms 才能处理下一个请求。

如果是令牌桶,假设令牌桶产生令牌的速率也是每 10ms 产生一个,那么 1 秒钟就是产生 100 个令牌。所以,一种极端的情况就是当这 100 个请求进入的时候,桶中正好有 100 个令牌,那么这 100 个请求就能瞬间被处理掉。

3. 如何应对突发流量

所谓突发流量,就是在某个时刻的流量突然比平时的流量要高。光有突发流量还不够,得系统能够应对才行,即能够正常处理,否则就不叫应对突发流量了。那令牌桶是如何应对突发流量的呢?就是通过令牌桶缓存到的令牌来应对的,再加上令牌桶的最大容量约束,不会无限制的让流量通过。

【转】流量控制算法——什么是漏桶算法和令牌桶算法?

突发流量

 

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-10发表,共计694字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)