精华内容
下载资源
问答
  • 令牌桶技术

    千次阅读 2013-10-21 13:58:36
    在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为不符合或超标。 单速单桶 图1 单速单桶...

    概述

    令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。

    在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为不符合或超标。

    单速单桶

    图1 单速单桶示意图

    图1所示,为方便描述将此令牌桶称为C桶,用Tc表示桶中的令牌数量。单速单桶有2个参数:
    • CIR(Committed Information Rate):承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
    • CBS(Committed Burst Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。

    系统按照CIR速率向C桶中投放令牌,当Tc<CBS时,令牌数增加,否则不增加。

    对于到达的报文,用B表示报文的大小:
    • 若B≤Tc,报文被标记为绿色,且Tc减少B;
    • 若B>Tc,报文被标记为红色,Tc不减少。

    单速双桶

    单速双桶采用RFC2697的单速三色标记器srTCM(A Single Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。

    图2 单速双桶示意图

    图2所示,为方便描述将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量。单速双桶有3个参数:
    • CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
    • CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量;
    • EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。
    系统按照CIR速率向桶中投放令牌:
    • 若Tc<CBS,Tc增加;
    • 若Tc=CBS,Te<EBS,Te增加;
    • 若Tc=CBS,Te=EBS,则都不增加。
    对于到达的报文,用B表示报文的大小:
    • 若B≤Tc,报文被标记为绿色,且Tc减少B;
    • 若Tc<B≤Te,报文被标记为黄色,且Te减少B;
    • 若Te<B,报文被标记为红色,且Tc和Te都不减少。

    双速双桶

    双速双桶采用RFC2698的双速三色标记器trTCM(A Two Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。

    图3 双速双桶示意图

    图3所示,为方便描述将两个令牌桶称为P桶和C桶,用Tp和Tc表示桶中的令牌数量。双速双桶有4个参数:
    • PIR(Peak information rate):峰值信息速率,表示向P桶中投放令牌的速率,即P桶允许传输或转发报文的峰值速率,PIR大于CIR;
    • CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
    • PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量,PBS大于CBS;
    • CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
    系统按照PIR速率向P桶中投放令牌,按照CIR速率向C桶中投放令牌:
    • 当Tp<PBS时,P桶中令牌数增加,否则不增加。
    • 当Tc<CBS时,C桶中令牌数增加,否则不增加。
    对于到达的报文,用B表示报文的大小:
    • 若Tp<B,报文被标记为红色;
    • 若Tc<B≤Tp,报文被标记为黄色,且Tp减少B;
    • 若B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。
    展开全文
  • Qos--令牌桶技术介绍

    2013-12-14 14:56:05
    令牌桶技术介绍,主要介绍meter的原理,以及同模式(2697、2698等)两桶之间的关系
  • Qos令牌桶技术原理

    2021-01-04 12:44:48
    令牌桶概述 配合软件队列使用。 单位是Byte而不是报文的个数,如果一个报文所需的Byte数超过了所剩余的令牌个数,就无法发送,也就是说一个令牌对应一个Byte。 令牌桶可以看作是一个存放一定数量令牌的容器。系统按...

    令牌桶基础

    概述:

    1. 配合软件队列使用。
    2. 单位是Byte而不是报文的个数,如果一个报文所需的Byte数超过了所剩余的令牌个数,就无法发送,也就是说一个令牌对应一个Byte。
    3. 令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。
    4. 在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为不符合或超标。

    依据令牌桶的令牌注入方式及桶的数量定义了3种令牌桶模型:

    1. 单速单桶双色模型。
    2. 单速双桶三色模型(RFC 2697)。
    3. 双速双桶三色模型(RFC2698)。

    令牌桶术语:
    一、令牌桶模型中可能有单桶或双桶模型,单桶模型中使用的桶称为CBS桶,而双桶单速模型中使用的桶分别称为CBS和EBS桶;双桶双速模型中使用的桶是CBS和PBS:

    1. CBS (Committed Bucket Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
    2. EBS (Excess Burst Size): 超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。
    3. PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的超出突发流量。

    下文为方便描述将三个令牌桶分别称为C (Committed)桶、E (Excess) 桶和P(Peak)桶。

    二、Tc和Te:分别表示C桶和E桶中的当前令牌数量,单位为个。

    三、信息速率:

    1. CIR (Committed Information Rate):承诺信息速率,向C桶中注入令牌的速率,同时也是C桶允许传输或转发数据的平均速率,单位bit/s。

    2. PIR(peak Information Rate):峰值信息速率,向P桶中注入令牌的速率,同时也是P桶允许传输或转发数据的平均速率,单位bit/s。

    四、色(color):根据桶中当前令牌是否满足数据转发需要而定义的颜色标识,它是模型描述时对分类的数据的颜色定义,将能从桶中取走足量令牌的报文标记为绿色或黄色,而将未能在桶中获得足量令牌的报文,标记为红色。通过命令,如green pass yellow pass red pass,可以设置不同颜色的报文的具体动作。

    一、单速单桶双色模型

    在这里插入图片描述
    桶中令牌以承诺的恒定速率CIR注入,桶大小固定,当注入令牌超出桶的容量后,多余的令牌就被丢弃掉。对于到达的报文,图上图中用B表示报文的大小。

    1. 若B≤Tc,报文被标记为绿色,且Tc减少B。
    2. 若B>Tc,报文被标记为红色,且Tc不减少B。.

    过程描述:
    若桶中有令牌,数据包转发会消耗桶中的令牌,若令牌足量,满足报文转发需要的数量,则报文被标记为绿色,并在桶中取走等量令牌。若待转发报文在桶中得不到足够令牌则标记为红色,桶中令牌不减。

    例如:
    若当前C桶中有2000个令牌,有2份待转发数据报文,大小分别为1500B和800B。假设此期间没有令牌注入,当第一份数据报文和C桶内令牌进行比较时,令牌满足,则第一份报文转发出去,桶中令牌剩余为500个。而第二份报文需要800个令牌,令牌桶中令牌不够,这份报文被标记为红色,不被转发出去,令牌桶中令牌量不变化,单速单桶的模型因其仅以承诺速率CIR注入令牌到C桶,所以C桶中令牌是承诺的令牌。

    消耗C桶令牌的数据报文,其转发速率不会超出CIR,流量图如下:
    在这里插入图片描述
    虚线部分是红色流量,阴影部分是绿色流量。在QoS机制中,只要有提到流量不超出特定速率,则该机制中必内置令牌桶的速率限制模型。

    cir 2000 cbs 50000 ,表示承诺信息速率为2000kbit/s,承诺突发尺寸为50000Byte。报文大小小于50000Byte的都能转发,转发速率最大为2000kbit/s。

    二、单速双桶三色模型

    在这里插入图片描述
    系统按照CIR速率向桶中投放令牌,向C桶注入令牌,若溢出,则E桶令牌增加。

    1. 若Tc<CBS,Tc 增加。
    2. 若Tc=CBS,Te<EBS, Te增加。
    3. 若Tc=CBS,Te=EBS,则都不增加。

    对于到达的报文,用B表示报文的大小。

    1. 若B≤Tc,报文被标记为绿色,且Tc减少B。
    2. 若Tc<B≤Te,报文被标记为黄色,且Te减少B。
    3. 若Te<B,报文被标记为红色,且Tc和Te都不减少。

    过程描述:
    C桶中令牌是承诺部分,系统始终以速率CIR注入令牌,但若前一时刻C桶中令牌没有用光或没有使用(因没有数据转发),则下次注入时会致C桶溢出,过量的令牌并没有被丢掉,定义的E桶就是专门用来装多余的令牌的。所以E桶的大小可在实现中定义得稍大些,可使系统保留前面时刻未用令牌的能力相对增强,可减少令牌因溢出而致的损失。

    报文转发时,先从承诺的C桶中取令牌,如果令牌够,则标记报文为绿色,桶中令牌减少。若C桶中令牌不够(Tc<B), 则继续比较E桶令牌。若E桶令牌够,则标记报文为黄色,否则为红色。

    例如:
    若C桶当前令牌为2000,E桶令牌为1000,待转发数据报文有3份,大小分别为1500B、 800B、 700B,假设3份报文在转发过程中没有令牌注入。根据上面的逻辑,第一份报文同C桶比较,令牌满足,标记为绿色,此时令牌桶C剩余令牌为500,令牌桶E令牌依然为1000。 第二份报文需要800个令牌,C桶承诺部分不够,则使用E桶令牌,E桶部分是累积起来的令牌,第二份报文使用E桶令牌,并标记为黄色,E桶剩余令牌200。第三份报文在C桶和E桶都没有足量的令牌,所以标记为红色。

    双桶模型由于EBS桶的存在,因此流量可以在承诺的CIR速率基础上过量突发,在某时刻速率可以达到很高。由于前一时刻数据量低,令牌没有使用,因此在下一时刻有过量突发所致的流量过高。但虽有过量突发,但流量的平均速率<=CIR。流量图如下:
    在这里插入图片描述
    P1是使用E桶令牌的流量,P3是使用C桶令牌的流量。P2 处没有转发的流量。P1对应黄色流量,P3 对应绿色流量。

    三、双速双桶三色模型

    在这里插入图片描述
    系统按照PIR速率(峰值速率)向P桶中投放令牌,按照CIR速率向C桶中投放令牌:

    1. 当Tp<PBS时,P桶中令牌数增加,否则不增加。
    2. 当Tc<CBS时,C桶中令牌数增加,否则不增加。

    对于到达的报文,用B表示报文的大小:

    1. 若Tp<B,报文被标记为红色。
    2. 若Tc<B≤Tp,报文被标记为黄色,且Tp减少B。
    3. 若B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。

    任何一种模型都做到把流量同令牌桶中的令牌量比对,而打上不同的颜色,并代表不同的分类。如果按令牌量是否足量来决定报文转发,红色代表该类数据没有对应的令牌,而不能被系统转发。黄色代表有对应的令牌,但该令牌不是承诺的令牌(仅取自P桶)。绿色代表该类数据使用的令牌是承诺速率所注入的令牌。

    双速模型并没有像单速模型在实际中应用那么广,它一定程度上解决了单速双桶模型的不足,双速模型引入了PIR,PIR一定要大于CIR。

    过程描述:
    P桶和C桶都是独立注入令牌的,如果桶中令牌溢出,并不会装入到另一个桶里。PIR是峰值速率,CIR是承诺速率,此模型可保证当输入数据的速率超出PIR时,超出部分将被丢弃,而低于PIR部分的报文,高于CIR的部分被标记为黄色,低于CIR部分被标记为绿色。所以待转发的报文先和P桶比较,若P桶令牌不够,则标记为红色,令牌不减。而若P桶令牌够,则继续比较C桶令牌,仅当二者令牌都够时,都做等量相减。

    例如:
    P桶令牌为2000,C桶令牌为1000,待转发报文有3份,大小分别为1500B、800B、400B,第一份报文和P桶比较,令牌够,继续和C桶比较,C桶不够。第一份转发出去,P桶剩余令牌500,C桶令牌没变化,为1000且报文被标记为黄色。第二份报文大小为800,先和P桶比较,因P桶令牌不够而标记为红色,桶内令牌不变。第三份报文先和P桶比较,再和C桶比较。都满足则都减令牌,并标记为绿色,P 桶剩余100, C桶剩余600。

    此模型能解决单速双桶模型中因E桶的原因而致的流量过量突发而引起的速率波动幅度的不确定性,所以对最高的速率做了限制,如果该模型应用在数据转发的场景下,它使实际数据包的转发速率达到PIR,这往往致企业边缘设备流出的报文速率过高,而上游运营商处丢掉超出CIR的部分流量。流量图如下:
    在这里插入图片描述
    P1是超出PIR部分的“红色”流量,P2是黄色”流量,而P3是“绿色”流量。使用双速模型可使流量分为3份,可自定义不同颜色的流量的流行为,可以丢弃或打标记。

    单速双桶和双速双桶模型对比

    在这里插入图片描述
    整理资料来源:《HCIE路由交换学习指南》

    展开全文
  • 这样讲Qos之令牌桶技术,不懂来打我

    千次阅读 2019-06-17 11:07:11
    郭老师版权所有,禁止转载 背景 简单的来说,是为了保障服务质量,保证重要...为了更好地讲解令牌桶,这里引入一个高速公路的例子。 高速公路上容纳的车流量就好比我们的带宽; 车辆就好比我们的数据包; 我们只...
    郭老师版权所有,禁止转载

    背景

    简单的来说,是为了保障服务质量,保证重要数据的传输。
    服务质量包括带宽,延迟,抖动和丢包率。
    打个比方,公司里老总在开会,你在打游戏。那么老总的数据肯定要保证传输,而你的数据,丢了就丢了吧…
    那么,如何保证重要数据的传输保证呢?

    举例

    为了更好地讲解令牌桶,这里引入一个高速公路的例子。
    高速公路上容纳的车流量就好比我们的带宽;
    车辆就好比我们的数据包;
    我们只有在入口处拿到了卡才能顺利进入高速公路。
    那么,这里的卡,就好比是令牌,领卡入口就好比是桶,这就是令牌桶技术,报文拿到了令牌中的令牌才可以被顺利转发。
    这里的卡是有限的。如果是无限的,那车很多的话高速公路上不是都挤爆啦?同样的道理,保证链路不被“挤爆”,保证数据的传输。

    这里注意:高速公路上只拿一张卡就可以了,那是车辆的大小差别不大。可是数据包可不一样,小到几十字节,大到1500字节,差别非常大。所以在令牌桶技术中,根据报文大小领取一定数量的令牌,不止一张哦~~

    单速单桶

    假设这里有一个发卡机,以固定的速率[1] 源源不断地往桶里发卡,车辆根据自己的货物多少领取相应量的卡。
    如果卡足够,则显示绿灯,准许通行;如果卡不够,说明领卡的车太多了,卡暂时都被领完了,红灯亮起,不允许通行。
    没有什么车辆通过,那么卡发到规定数量[2]就不再发卡,也就是说桶里最多可以放多少张卡,某一时刻最多允许通过车辆的多少。用来防止Qos中的抖动,处理某一时刻突然通过车辆太多的情况,否则就会发送抖动,产生丢包重传的情况。

    [1]:这里指的是CIR(Committed Information Rate):承诺信息速率,表示向C桶(单桶模式中只有一个令牌桶,称为C桶)中投放令牌的速率,即C桶允许传输或转发报文的平均速率。
    [2]:这里指的是CBS(Committed Burst Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。

    接下来看图就会变得清晰:

    这里B可以理解为报文大小。
    Tc为令牌数量。
    以固定的速率CIR向桶中发放令牌,最多发放到CBS结束。
    数据包根据自己的大小领取令牌:若B≤Tc,则令牌数足够,数据包标记为绿色,允许通过;否则令牌数不够,数据包标记为红色,不允许通过。


    单速双桶

    我们对前面的单速单桶进行了改进,红绿灯还缺少个黄灯呢对不对?
    这里有两个桶,第一个桶还叫C桶,多了一个E桶,意为Excess超额桶。
    还是以CIR的速率向C桶里发放令牌,当C桶满了(CBS)之后就存放在E桶里,E桶满了[1](EBS)不再发放令牌。
    车辆排队领卡,当C桶里的卡足够,则亮绿灯,表示不拥挤,允许通过。
    当C桶里的卡不够,则取E桶里的卡,亮黄灯,表示有点拥挤,还是允许通过。
    当两个桶里的卡都不够,则亮红灯,表示很拥挤,不允许通过。

    [1]:这里E桶满了是指达到了EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。

    当C桶令牌足够,报文标记为绿色;C桶不够E桶足够,报文被标记为黄色;都不够则标记为红色,可被丢弃。


    双速双桶

    前面说到的都只有一个发卡机,这里却有两个发卡机(双速),两个桶(双桶),分别是P桶(Peak峰值)和C桶。
    系统按照PIR速率[1]向P桶中投放令牌,存满[2]则不再发放,按照CIR速率向C桶中投放令牌:

    当Tp<PBS时,P桶中令牌数增加,否则不增加。
    当Tc<CBS时,C桶中令牌数增加,否则不增加。
    其中Tp为P桶令牌数量,Tc为C桶令牌数量。

    [1]:PIR(Peak information rate):峰值信息速率,表示向P桶中投放令牌的速率,即P桶允许传输或转发报文的峰值速率。PIR的值应大于CIR。
    [2]:这里指的是P桶存放令牌的峰值PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量。

    这里跟前面是反的哦!先标记红,然后是黄,最后是绿色。
    对于到达的报文,用B表示报文的大小:
    若B>Tp,说明车这个时候太多了,都超过Peak峰值了,报文被标记为红色,不允许通过。
    若Tp≥B>Tc,报文被标记为黄色,且Tp减少B,允许通过;
    若Tc≥B,报文被标记为绿色,且Tp和Tc都减少B,允许通过。


    展开全文
  • QoS技术令牌桶算法实现方式比较,关于QoS令牌桶应用的算法。
  • 令牌桶算法3. 漏桶算法4. 计数器算法1. 池化技术池化资源技术的限流其实就是通过计算器算法来控制全局的总并发数,例如常用的线程池中核心线程数和最大线程数的设置、数据库连接池中对于最大连接数的限制等等。就...

    文章目录

    1. 池化技术

    2. 令牌桶算法

    3. 漏桶算法

    4. 计数器算法

    1. 池化技术

    池化资源技术的限流其实就是通过计算器算法来控制全局的总并发数,例如常用的线程池中核心线程数和最大线程数的设置、数据库连接池中对于最大连接数的限制等等。就数据库连接池技术而言,为了避免并发场景下连接数超过数据库所能承载的最大上限,合理的运用连接池技术,可以有效的限制单个进程内能够申请到的最大连接数,确保在并发环境下连接数不会超过资源阈值。

    2. 令牌桶算法

    令牌桶算法主要用于限制流量的平均流入速率,并允许出现一定程度上的突发流量,假设令牌桶的容量为n

    nn,

    那么算法执行的流程为:

    每秒向令牌桶中放入n

    nn个令牌,即每1

    n

    \frac{1}{n}n1​秒放入一个令牌的平均速率来提供可以使用的令牌

    令牌桶的容量自始至终都是固定的,最多只能放入n

    nn个令牌,桶满则溢出

    当一个n

    nn个字节的请求包到达时,将消耗n

    nn个令牌,然后再发送该数据包

    如果桶中的令牌数小于n

    nn,则该数据包将被执行限流处理

    Guava Cache中的RateLimiter抽象类能够以一种简便的方式实现流量的平均流入速率限流,起到类似令牌桶算法的效果,

    为了使用Guava Cache,首先需要创建工程,导入依赖

    com.google.guava

    guava

    27.0.1-jre

    如果想要使用RateLimiter,可以调用它的create()来指定令牌桶的容量。当需要令牌时,请求需要调用acquire()方法。如下所示,此时令牌桶容量为5,假设请求数也是5,那么5个请求都可以近乎同时获取令牌,并不会触发限流。

    @Test

    void testLimit(){

    RateLimiter limiter = RateLimiter.create(5);

    for (int i = 0; i < 5; i++) {

    double waitTime = limiter.acquire();

    System.out.println(waitTime);

    }

    }

    0.0

    0.198812

    0.199176

    0.199727

    0.19905

    如果此时有了突发流量,某个请求需要一次申请5个令牌,那么后续的请求就会被限流。大约等待1秒后,后续请求才可以继续从桶中拿令牌。

    @Test

    void testLimitMore() {

    RateLimiter limiter = RateLimiter.create(5);

    for (int i = 0; i < 5; i++) {

    System.out.println(limiter.acquire(5));

    System.out.println(limiter.acquire());

    System.out.println("--------");

    }

    }

    0.0

    0.999008

    --------

    0.198522

    0.998839

    --------

    0.199423

    0.999741

    --------

    0.196243

    0.999406

    --------

    0.199218

    0.99949

    --------

    调用acquire()获取令牌不到,请求将会一直等待。如果需要请求在获取不到令牌后,直接丢弃或是短暂等待,可以调用tryAcquire()的无参和带参形式。那么RateLimiter底层是如何实现流量的平均流入速率限流的效果的呢?下面我们通过源码看一下它的create()、acquire()和tryacquire()的实现。

    RateLimiter的create()最基本的实现如下:

    public static RateLimiter create(double permitsPerSecond) {

    return create(permitsPerSecond, RateLimiter.SleepingStopwatch.createFromSystemTimer());

    }

    其中的permitsPerSecond可用于设置限流速率从慢速过渡到平均速率的缓存时间。当前,RateLimiter中还提供了其他重载的形式,用于创建不同需求的limiter。acquire()的实现如下:

    @CanIgnoreReturnValue

    public double acquire() {

    return acquire(1);

    }

    @CanIgnoreReturnValue

    public double acquire(int permits) {

    // 计算获取令牌所需等待的时间

    long microsToWait = reserve(permits);

    // 进行线程sleep

    stopwatch.sleepMicrosUninterruptibly(microsToWait);

    return 1.0 * microsToWait / SECONDS.toMicros(1L);

    }

    它会根据设置的桶容量来计算获取一个令牌所需要等待的时间。tryacquire()的实现如下:

    public boolean tryAcquire(int permits) {

    return tryAcquire(permits, 0, MICROSECONDS);

    }

    public boolean tryAcquire(int permits, long timeout, TimeUnit unit) {

    long timeoutMicros = max(unit.toMicros(timeout), 0);

    checkPermits(permits);

    long microsToWait;

    synchronized (mutex()) {

    long nowMicros = stopwatch.readMicros();

    if (!canAcquire(nowMicros, timeoutMicros)) {

    return false;

    } else {

    microsToWait = reserveAndGetWaitLength(permits, nowMicros);

    }

    }

    stopwatch.sleepMicrosUninterruptibly(microsToWait);

    return true;

    }

    RateLimiter具体的源码解析阅读:

    使用Guava RateLimiter限流以及源码解析

    超详细的Guava RateLimiter限流原理解析

    3. 漏桶算法

    漏桶算法允许以任意的速率向桶中流入水滴,但由于桶的容量是固定的,如果桶已满,那么水滴将溢出被丢弃。而且桶流出水滴的速率是固定的,起到限制数据的传输速率。

    上述两种算法虽然都可以在高并发场景下起到限流的效果,但是两者的限流方向是相反的。令牌桶算法限制的是向桶中放入令牌的数量,允许一定程度上的突发流量。当用户请求所需的令牌数多于桶中剩下的令牌数,就会被执行限流操作。

    而漏桶算法控制的是令牌流出的速率,并且流出的速率还是固定的,主要用于平滑网络流量。例如,假设桶只能接受大小为10的数据包,那么当数据包大于10时,请求将被执行限流处理,由于流出速率固定,那么每秒处理的数据包大小将固定,从而起到平滑流量的作用。

    4. 计数器算法

    单位时间内会有一个计数器负责计数,不停的和阈值进行比较,当等于阈值时触发限流逻辑。它主要用于限制单位时间内的总并发数,假设规定每秒可以处理的请求数为100,那么一秒内请求一次,计数器值加1。如果一秒内计数器值到达阈值,那么后续的请求就被执行限流处理。并且只有达到临界值时,计数器才会被重置。

    当等于阈值时触发限流逻辑。它主要用于限制单位时间内的总并发数,假设规定每秒可以处理的请求数为100,那么一秒内请求一次,计数器值加1。如果一秒内计数器值到达阈值,那么后续的请求就被执行限流处理。并且只有达到临界值时,计数器才会被重置。

    展开全文
  • 令牌桶算法3. 漏桶算法4. 计数器算法1. 池化技术池化资源技术的限流其实就是通过计算器算法来控制全局的总并发数,例如常用的线程池中核心线程数和最大线程数的设置、数据库连接池中对于最大连接数的限制等等。就...
  • 令牌桶算法3. 漏桶算法4. 计数器算法 1. 池化技术 池化资源技术的限流其实就是通过计算器算法来控制全局的总并发数,例如常用的线程池中核心线程数和最大线程数的设置、数据库连接池中对于最大连接数的限制等等。...
  • 令牌桶算法是目前IP QoS 中最常采用的一种流量 限制方法,广泛应用于约定访问速率技术 、通用流量整形技术以及物理接口总速率限制等技术中。IETF RFC 建议规范了单速率三色标记和双速率三色标记两种令牌桶算法,在桶...
  • 以下文章来源于HHF技术博客 ,作者haohongfanHHF技术博客关注技术, 关注架构, 自我成长之... 面对这种情况, 本篇文章继续介绍另外一种限流器: Token Bucket -- 令牌桶什么是 Token Bucket漏斗桶的桶空间就那么大,...
  • 高可用对于一个应用和API接口是至关重要的。如果我们提供一个接口,突然面临流量爆发式增长,对于这种...然而当我们使用一个接口或应用时,我们不仅需要通过技术手段(幂等性、熔断等)去提高它们的稳定性,同时也确...
  • 令牌桶算法和漏桶算法

    千次阅读 2016-01-07 12:05:57
    令牌桶算法和漏桶算法 流量整形 流量整形(traffic shaping)典型作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过...
  • 令牌桶算法

    2011-04-25 22:22:29
    令牌桶算法是目前IP QoS中最常采用的一种流量测量方法,广泛应用于约定访问速率技术、通用流量×××技术以及物理接口总速率限制等技术中。IETF RFC 建议规范了单速率三色标记和双速率三色标记两种令牌桶算法,在桶...
  • 在早期的计算机领域,限流技术(time limiting)被用作控制网络接口收发通信数据的速率。 可以用来优化性能,减少延迟和提高带宽等。 现在在互联网领域,也借鉴了...令牌桶(Token Bucket)和漏桶(leaky bucket)是 最常用
  • QOS令牌桶原理1

    2019-09-10 10:01:20
    令牌桶算法是目前 IP QoS 中最常采用的一种流量测量方法,广泛应用于约定访问速率技术、通用流量整形技术以及物理接口总速率限制等技术中。IETF RFC 建议规范了单速率三色标记和双速率三色标记两种令牌桶算法,在桶...
  • 1. 限流1.1 什么场景下需要限流在应对秒杀等高性能压力的场景下,为了保证系统平稳运行,限流已经成为了标配技术解决方案。限流作用就是针对超过预期流量,通过预先设定的限流规则选择性的针对某些请求进行限流...
  • 令牌桶限流 上图为令牌桶的原理图,根据原理图能够得知: 令牌桶的组成部分 1、令牌 - 生成 2、令牌 - 存放 3、令牌 - 获取 令牌桶的原理 1、令牌生成器:根据设定的令牌生成策略生成令牌,并将令牌存放至令牌存放...
  • 令牌桶是一种对流量规格进行评估的技术,它可以看作是一个存放一定数量令牌的容器。一个令牌代表1个字节。 系统按设定的速率向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌的数量不再增加。使用令牌 桶...
  • QoS令牌桶工作原理

    2017-11-22 19:15:00
    那就是QoS的令牌桶机制了。下面是在笔者刚刚出版的《Cisco/H3C交换机高级配置与管理技术手册》一书中,经过笔者充分理解后的全面诠释,大家看一下是否可以理解。http://book.360buy.com/10959197.html 6.3.3 QoS令牌...
  • 在早期的计算机领域,限流技术(time limiting)被用作控制网络接口收发通信数据的速率。 可以用来优化性能,减少延迟和提高带宽等。 现在在互联网领域,也借鉴了这...令牌桶(Token Bucket)和漏桶(leaky bucket)是 最
  • 点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!暴走大数据点击右侧关注,暴走大数据!高并发的业务系统经常要接受大流量的考验,为了保证...
  • 流量策略及令牌桶的工作原理,缓解DOS攻击的方法很多,比如说用ACL,URPF等技术都可以实现,但本专题仅专注于用traffic-police(流量策略)技术实现。
  • 点上方蓝字关注公众号,坚持每天技术打卡学网络,就在IE-LAB国内最著名的高端网络工程师培养基地QOS是网络服务质量技术,是所有...接下来简单了解一下GTS中的令牌桶算法。要实现流量的控制,必须有一种机制可以对通...
  • try{//每次发送请求,愿意等待0.5秒,如果设为1秒,每次都能查询成功,因为没秒中都会放入一个令牌中 if (rateLimiter.tryAcquire(500, TimeUnit.MILLISECONDS)) {//执行方法 obj =joinPoint.proceed();...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 233
精华内容 93
关键字:

令牌桶技术