桶子算法

原创 2005年04月25日 22:06:00
 

1.       什么叫桶子算法?

桶子算法是网络通讯的两端看成是一定时间上的具有长度和宽度的桶子;数据在通讯的两端传输时候数据在不停的过去,这个时间可以看成是长度,及从开始通讯到现在已经经过了多长时间,而宽度当然是网络带宽了;二者的乘积可以看成是具有一定体积的桶子。如下图:

2.       用途

桶子算法的目的是为了对发送端的数据流量进行控制。

3.       原理

我们假定这个桶子具有T ms)长度,带宽为B (kbps),那么这个桶子的体积位:

V=T * B

从某个时间T1开始,有数据不断填充这个桶子,但如果数据填充的不是非常快,或者说数据的流量小于网络带宽B的时候,这个桶子永远都填不满,如下列图表示:

 

如图所示我们这个桶子的体积随着时间在增加,从T1时刻的V1B*T1-T0))变化到T2时刻的V2B*T2-T0)),桶子的体积增加了B*T2-T1),如果在这段时间内,实际的数据流量小于这个增量,那么桶子始终有空闲的地方,这样桶子就不会满,实际上在这种情况下桶子算法对流量是控制不了的。

如果在T2-T1时间内,网络的实际数据流量很大,即数据在很短的时间内(小于T2-T1)就将填满了这段容量,那么桶子算法开始发挥流量控制的作用。

在发送数据的时候需要检测桶子的可用大小,如果桶子的可用大小为0表示已经不能再向这个桶子填充任何数据了,必须等待桶子恢复到一定的体积之后才能再接收数据(我们假设为半桶的体积);当桶子恢复的时候我们又可以向这个桶子填充数据了,但如果又很快满了,那么必须又停止下来等待桶子恢复。桶子算法就是通过发发停停来控制流量的。当然如果你将带宽设置的大一些,桶子的体积就大一点,就不那么容易被填满,也能够更快速的发送数据。

4.       注意
桶子算法又几点需要注意:

l         桶子的最大容积;这是由时间来决定,我们假定的T,这个值的选择也决定了你可以向桶子发送多大的数据,当然这个时间在不同的网络环境下取值是不同的;在有的网络下,即使你设置的很大,但下面的套接字层已经没有办法发送更快了。

l         恢复算法的采用;一般桶子满了之后需要等待一段时间,如果设置一个时间让网络不至于太闲或造成数据的突然高峰,也不至于让数据不停的跳动,确实很重要。

l      这个流量控制只能对物理带宽以内的流量进行控制。

小桶子asp的新留言版

  • 2004年08月23日 11:32
  • 93KB
  • 下载

带赖子的超高效麻将、跑胡子胡牌算法

速度: 每秒处理100万次四个赖子判胡 文档 github地址 https://github.com/yuanfengyun/qipai/tree/master/doc lua版 https://g...

基于Sobel算子的人脸分割算法

  • 2012年08月03日 13:36
  • 5.52MB
  • 下载

SVM中的对偶问题、KKT条件以及对拉格朗日乘子求值得SMO算法

SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优。关于SMO最好的资料就是他本人写的《...

麻将癞子算法

  • 2017年02月20日 11:04
  • 13KB
  • 下载

室内三维定位算法,伸缩因子

  • 2016年09月17日 17:31
  • 3KB
  • 下载

算法----最大子数组和

这是一道很经典的算法题目,考的烂的不能再烂,还是有很多公司拿它来作为笔试题目,题目不难,这里我给出三种方法。 问题描述:一个整数数组中的元素有正有负,在该数组中找出一个连续子数组,要求该子数组中各元...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:桶子算法
举报原因:
原因补充:

(最多只允许输入30个字)