令牌桶算法和漏斗算法的区别究竟是什么?

在网上随便找一篇博客去了解令牌桶和漏斗的区别,基本都会说漏斗是匀速的,而令牌桶可以有效处理请求突增的情况,但是我看漏斗的原理里面也有水桶的概念呀,比如说水桶的大小是10,而rate是每秒2,那么在一瞬间我完全可以把水桶占满呀,后续会受到rate的限制,这不也是能够处理突增的情况吗?还是说我理解的不对。。还是说漏斗里面没有水桶,所谓的水桶就是排队,真正能单位时间处理的请求就是rate,类似于线程池一样的东西?

阅读 4.3k
1 个回答

漏斗的特点是匀速,有突发请求时,即使性能允许也按固定的速率处理。

比如说水桶的大小是10,而rate是每秒2,那么在一瞬间我完全可以把水桶占满呀,后续会受到rate的限制

漏斗的 rate 限制了最大的处理速度(每秒2个),而漏斗的大小限制能排队的请求数量(最多10个请求在排队)。

同样的配置,对令牌桶来说,是桶的大小限制了最大的处理速度,而 rate 限制的是满负载时的处理速度。 如果某个时刻有 10 个令牌(前5秒都没请求),然后同时到达 10 个请求,是允许同时处理这 10 个请求的。

所以说,漏斗适合请求到达频率稳定、需要严格控制处理速率的场景,而令牌桶适合允许突发请求的情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题