在网上随便找一篇博客去了解令牌桶和漏斗的区别,基本都会说漏斗是匀速的,而令牌桶可以有效处理请求突增的情况,但是我看漏斗的原理里面也有水桶的概念呀,比如说水桶的大小是10,而rate是每秒2,那么在一瞬间我完全可以把水桶占满呀,后续会受到rate的限制,这不也是能够处理突增的情况吗?还是说我理解的不对。。还是说漏斗里面没有水桶,所谓的水桶就是排队,真正能单位时间处理的请求就是rate,类似于线程池一样的东西?
在网上随便找一篇博客去了解令牌桶和漏斗的区别,基本都会说漏斗是匀速的,而令牌桶可以有效处理请求突增的情况,但是我看漏斗的原理里面也有水桶的概念呀,比如说水桶的大小是10,而rate是每秒2,那么在一瞬间我完全可以把水桶占满呀,后续会受到rate的限制,这不也是能够处理突增的情况吗?还是说我理解的不对。。还是说漏斗里面没有水桶,所谓的水桶就是排队,真正能单位时间处理的请求就是rate,类似于线程池一样的东西?
15 回答8.2k 阅读
8 回答6k 阅读
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
漏斗的特点是匀速,有突发请求时,即使性能允许也按固定的速率处理。
漏斗的 rate 限制了最大的处理速度(每秒2个),而漏斗的大小限制能排队的请求数量(最多10个请求在排队)。
同样的配置,对令牌桶来说,是桶的大小限制了最大的处理速度,而 rate 限制的是满负载时的处理速度。 如果某个时刻有 10 个令牌(前5秒都没请求),然后同时到达 10 个请求,是允许同时处理这 10 个请求的。
所以说,漏斗适合请求到达频率稳定、需要严格控制处理速率的场景,而令牌桶适合允许突发请求的情况。