基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制 常用的流控算法

漏桶(Leaky bucket)

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

 

再看看令牌桶(Token bucket)

Guava官方文档-RateLimiter类

 

 

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

 

 

 

漏桶(Leaky bucket)与令牌桶(Token bucket)算法有什么区别。

令牌桶,初始令牌个数是0,最大容量是100,当1万个请求到来时(初始令牌个数是0时),也只能一秒处理一个请求个,因为令牌是每秒产生一个。

漏桶,初始流量是0,最大流量是100,当1万个请求到来时,可以迅速的,最多的,能同时处理100个。

=============================================

令牌桶,初始令牌个数是100,最大容量是100,当1万个请求到来时(初始令牌个数是0时),可以迅速的,最多的,同时处理100个请求,从第101个请求开始,也只能等新令牌的产生,而令牌是每秒产生一个。
漏桶,初始流量是0,最大流量是100,当1万个请求到来时,可以迅速的,最多的,能同时处理100个。

Google Guava RateLimiter类,是一个基于令牌桶的限流算法。

 

 

参考以下文章:

http://www.javaranger.com/archives/1769

https://www.kullabs.com/classes/subjects/units/lessons/notes/note-detail/4008

http://www2.ic.uff.br/~michael/kr1999/6-multimedia/6_06-scheduling_and_policing.htm