令牌桶算法和漏斗算法的区别究竟是什么?
在网上随便找一篇博客去了解令牌桶和漏斗的区别,基本都会说漏斗是匀速的,而令牌桶可以有效处理请求突增的情况,但是我看漏斗的原理里面也有水桶的概念呀,比如说水桶的大小是10,而rate是每秒2,那么在一瞬间我完全可以把水桶占满呀,后续会受到rate的限制,这不也是能够处理突增的情况吗?还是说我理解的不对。。还是说漏斗里面没有水桶,所谓的水桶就是排队,真正能单位时间处理的请求就是rate,类似于线程池一样的东西?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
漏斗的特点是匀速,有突发请求时,即使性能允许也按固定的速率处理。
漏斗的 rate 限制了最大的处理速度(每秒2个),而漏斗的大小限制能排队的请求数量(最多10个请求在排队)。
同样的配置,对令牌桶来说,是桶的大小限制了最大的处理速度,而 rate 限制的是满负载时的处理速度。 如果某个时刻有 10 个令牌(前5秒都没请求),然后同时到达 10 个请求,是允许同时处理这 10 个请求的。
所以说,漏斗适合请求到达频率稳定、需要严格控制处理速率的场景,而令牌桶适合允许突发请求的情况。