令牌桶算法和漏桶算法

889 阅读1分钟

1.令牌桶算法

概念:容量固定的令牌桶以恒定速率产生令牌,如果令牌不被消耗或者消耗的速度小于生成的速度,那么令牌就会不断增多直到填满令牌桶,后面新产生的令牌就会溢出。

2.漏桶算法

概念:漏桶以固定速率出水(处理请求),客户端一次请求就是往漏桶里加一滴水,当漏桶加水(客户端产生请求)的速率大于出水(处理请求)速率时,就会溢出。

3.为什么说令牌桶算法能处理突发请求

假设令牌桶容量volume=10,产生令牌速率为5,正常情况下每秒收到一个请求,那么3秒后令牌桶会满。这时流量突然从1变成10,那么桶中10个令牌会同时被消耗掉。所以说令牌桶算法可以处理流量<桶容量的突发请求。
但是,对于漏桶算法,因为处理请求的速率固定,如固定为1,当初始流量为1时每秒流出一滴水,当流量突增为10时还是每秒处理1个请求,剩余9个会存在桶中暂时无法处理。