前提
- 在大量并发的环境下,为了防止由于请求暴涨,导致系统崩溃从而引起雪崩,一般会对流量做一定的限制操作。比如等待、排队、降级、拒绝服务、限流等。
说明
- 漏桶算法(Leaky Bucket)是网络世界中流量整形或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
算法的基本过程
- 到达的数据包(网络层的PDU)被放置在底部具有漏孔的桶中(数据包缓存)
- 漏桶最多可以排队b个字节,漏桶的这个尺寸受限于有效的系统内存。如果数据包漏桶已经满了,那么数据包应被丢弃
- 数据包从漏桶中漏出,以常量速率(r字节/秒)注入网络,因此平滑了突发流量
- 漏桶算法强调的是在桶中缓存数据包,然后以一定的速率从桶中取出数据包,从而实现了限流,防止突发流量