漏桶算法

流量调整和限流技术

▼魔方 西西 提交于 2019-12-06 12:30:58
漏桶算法: https://en.wikipedia.org/wiki/Leaky_bucket 它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。 漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。 简单的理解为:漏桶算法思路很简单,水(数据或者请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。 在桶满水之后,常见的两种处理方式为: 1)暂时拦截住上方水的向下流动,等待桶中的一部分水漏走后,再放行上方水。 2)溢出的上方水直接抛弃。 将水看作网络通信中数据包的抽象,则 方式1起到的效果称为Traffic Shaping(流量整形), 方式2起到的效果称为Traffic Policing(流量策略)。 由此可见,Traffic Shaping 的核心理念是“等待”,Traffic Policing 的核心理念是“丢弃”。它们是两种常见的流速控制方法。 在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的参数(恒定的速率往下漏水),所以,即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率。因此