###漏桶算法
水(请求)先进入漏桶里,漏桶以一定的速度出水(接口循环去获取请求),当水流入速度过大会直接溢出,然后拒绝请求。可见这里有两个变量,一个是桶的大小,支持流量最大时可以存放多少的水(请求),另一个是水桶漏洞的大小,在某些情况下,漏桶算法不能有效地使用网络资源,因为漏桶的漏出速率是固定的参数,所以即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率,因此漏桶算法对于存在突发特性的流量来说却反效率,而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法可以结合起来为网络流量提供更大的控制。
###令牌桶算法
令牌桶算法是往同理加入Token,如果桶已经满了就不再加了,新请求来临时,会拿走一个Token,如果没有Token可拿了就阻塞或拒绝服务。令牌桶的另一个好处是可以方便地改变速率,一旦需要提高速率,则按需提高放入桶中令牌的速率,一把会定时往桶中增加一定数量的令牌。