漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。

  漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃

  漏桶算法的基本内容如下:

  * 漏桶算法强制一个常量的输出速率而不管输入数据流的突发性。当输入空闲时,该算法不执行任何动作;

  * 主机在每一个时间片向网络注入一个数据包,因此产生了一致的数据流,平滑了突发的流量;

  * 当数据包具有相同尺寸的时候(例如ATM信元),每个时间片传输一个数据包的工作机制没有任何问题。但对于可变包长,这种工作机制可能存在一点问题,此时,最好每个时间片传输固定数目的字节。例如:如果每个时间片传输1024字节,那么一个时间片允许传输一个1024字节的包,两个512字节的包,或者四个 256字节的包;

  在概念上,漏桶算法可以作如下理解:

  * 到达的数据包(网络层的PDU)被放置在底部具有漏孔的桶中(数据包缓存);

  * 漏桶最多可以排队b个字节,漏桶的这个尺寸受限于有效的系统内存。如果数据包到达的时候漏桶已经满了,那么数据包应被丢弃;

  * 数据包从漏桶中漏出,以常量速率(r字节/秒)注入网络,因此平滑了突发流量。

  在流量整形中还存在另外一个流行的算法:令牌桶算法(Token Bucket)。有时人们将漏桶算法与令牌桶算法错误地混淆在一起。而实际上,这两种算法具有截然不同的特性并且为截然不同的目的而使用。它们之间最主要的差别在于:漏桶算法能够强行限制数据的传输速率,而令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输

  在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的参数,所以,即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法可以结合起来为网络流量提供更大的控制。

  漏桶算法的应用实例:

  在ATM网络的交换层,漏桶算法可以用来实现CBR业务。当数据流量超过协商速率一段时间后,漏桶(缓存)将会溢出。这时需要检查每一个信元中的信元丢失优先级(CLP)字段,低优先级的信元将会被丢弃并被原始发送设备重新传输。

漏桶算法与令牌桶算法相关推荐

  1. 限流算法之漏桶算法、令牌桶算法

    限流 每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统 ...

  2. 接口限流算法:漏桶算法amp;令牌桶算法

    转载自 接口限流算法:漏桶算法&令牌桶算法 背景 每一个对外提供的API接口都是需要做流量控制的,不然会导致系统直接崩溃.很简单的例子,和保险丝的原理一样,如果用电符合超载就会烧断保险丝断掉电 ...

  3. 限流算法(漏桶算法、令牌桶算法)对比

    限流算法(漏桶算法.令牌桶算法) 漏桶算法: 有个桶,比如最大能进2个单位的水(请求),桶底有个洞,每个单位的水都会在桶里待3秒后漏下去. 那么这个桶就可以同时处理2个单位的水. 如果进水太多,同一时 ...

  4. 令牌桶算法和漏桶算法python_限流之漏桶算法与令牌桶算法

    在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流 缓存:缓存的目的是提升系统访问速度和增大系统处理容量 降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降 ...

  5. Internet流量监管机制之漏桶算法和令牌桶算法

    漏桶算法和令牌桶算法都是为了限制应用无限制的向网络注入流量而设定的算法.两者看似区别不大,但是如果仔细来看,是有区别的:漏桶算法只能把应用的输出速率限定在一个固定的速度,但是令牌桶除了在把总的输出速率 ...

  6. 限流——漏桶算法和令牌桶算法的区别

    文章目录 限流 漏桶算法 令牌桶算法 漏桶算法和令牌桶算法的区别 时间窗口 时间窗口和令牌桶优缺点 限流 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流 缓存:缓存的目的是提升系统访问速度 ...

  7. 限流-漏桶算法、令牌桶算法

    1.问题 系统的某个接口访问量突然激增,没多久接口崩溃,形成连锁反应,导致整个系统崩溃. 如何应对这种情况呢? 为我们的接口加上"保险丝",预防这种突发情况,接口压力过大,造成整个 ...

  8. 面试官:连漏桶算法和令牌桶算法都不知道吗?回去多看看书吧

    锁屏面试题百日百刷,每个工作日坚持更新面试题.锁屏面试题app.小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage.已收录了每日更新 ...

  9. 高并发系统限流-漏桶算法和令牌桶算法

    参考: https://www.cnblogs.com/xuwc/p/9123078.html http://www.cnblogs.com/LBSer/p/4083131.html https:// ...

最新文章

  1. 江苏省三级偏软考试大纲
  2. 嵌入式系统学习笔记之五-- uboot常用命令 环境变量
  3. OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
  4. python可以自学吗需要什么基础-python自学行吗?给编程初学者零基础入门的建议...
  5. Mysql 各个版本区别
  6. 用python实现计算器功能_使用python实现计算器功能
  7. vue2.0关于添加属性后视图不能更新的问题
  8. win10taskkill无法终止进程_Win10无法终止进程拒绝访问
  9. 接口和抽象类是否继承了Object
  10. java char 空_2020重新出发,JAVA入门,数据类型
  11. [转载]了解Linux的进程与线程
  12. centos7 keeplive+lvs
  13. matlab中输出汉字的函数,matlab中的输出显示函数
  14. three.js 制作3D相册
  15. 如何用“项目管理方法论”的思维,提升研发项目管理水平?
  16. linux内核的reciprocal_value结构体
  17. Gene Pattern
  18. 日记本java代码_简单的JAVA日记本程序源代码
  19. 谷歌学术简明使用说明
  20. 电磁场与电磁波实验 02 - | 电磁波波长测试实验

热门文章

  1. CSS块级元素与行内元素的区别和联系
  2. java 通过id获取html代码_Maven私服安装配置,java通过私服下载代码,并打包后上传到私服(Nexus)...
  3. Python 数据分析三剑客之 Pandas(九):时间序列
  4. Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
  5. Mysql主从延时解决办法
  6. CCNA-第八篇-OSPF-上
  7. 计算几何 -- 旋转坐标系
  8. 【CodeForces - 245H 】Queries for Number of Palindromes (带容斥的区间dp)
  9. ACM中关于计算几何(浮点数)的精度问题
  10. 《Python编程:从入门到实践》速查表