首页 新闻 会员 周边 捐助

漏桶算法 不允许短时间内的大量的突发请求吗

0
悬赏园豆:15 [已解决问题] 解决于 2021-03-09 07:13

很多博客这样说,但是我不太同意这句话..

我认为也是可以容许一定突发的。当然,具体看之前流量情况,只要之前少有流量进来,那么桶内部就应该被漏得很少了吧(甚至可能整个桶都是空的),因为桶本身是容量的。 否则,令牌桶 也有类似问题。 除非我们默认令牌桶的容量是 非常非常大。

谁赞同我吗?

详见 https://www.cnblogs.com/FlyAway2013/p/14491480.html

CanntBelieve的主页 CanntBelieve | 初学一级 | 园豆:34
提问于:2021-03-06 17:58
< >
分享
最佳答案
1

分享一下我的想法。我理解到题主文章里的分析是关于入桶的部分,即 如果桶有余量的话不管哪一种,只要不超过余量都是能够承载,而不会导致请求被拒绝。

但是引用文章里说的 可以处理瞬时流量应该是漏出速率的部分,举例来说:
假设业务处理的极限是14/s,漏桶算法设置了10/s的限制。在桶有余量的前提下突然来了大量突发请求,漏桶依旧以10/s的处理速度来处理业务,而令牌桶就可以达到14/s,可以赶快的搞完这些请求。所以说令牌桶更适合在有突发流量的情况下使用。

收获园豆:15
coval | 菜鸟二级 |园豆:269 | 2021-03-06 20:13

如果令牌桶也是设置了10/s的限制,而且前期没有积累,桶里面没有多余令牌, 那么它凭什么能够达到14/s?

CanntBelieve | 园豆:34 (初学一级) | 2021-03-06 21:56

@CanntBelieve: 令牌桶 没有设限制的说法,漏桶限制出口,令牌桶限制的是入口。
这边讨论的情况是有余量的情况下,比如从20%一下压到80%,相对来说令牌桶能压榨更多资源

coval | 园豆:269 (菜鸟二级) | 2021-03-06 23:26

@coval: 我懂你的意思 ; 不过,令牌桶 也是桶,按常识,桶都是有最大限制的,不管它再大,它还是有一个大小。当然,理论上可以做到 不限制大小。 不过注意到 com.google.common.util.concurrent.RateLimiter#create 方法也是有 maxSize 参数的。

CanntBelieve | 园豆:34 (初学一级) | 2021-03-09 07:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册