有人能解释一下令牌桶的概念吗?

use*_*190 1 token bucket

有人能解释一下令牌桶的概念吗?还需要帮助解决以下问题.

给定令牌桶大小,b字节; 令牌速率,r字节/秒; 最大输出速率M字节/秒,最大突发时间T 1是多少.

请详细说明如何解决这个问题

小智 7

你读过这个吗?http://en.wikipedia.org/wiki/Token_bucket

基本上,当您想要限制某些内容的速率时,可以使用令牌桶进行限制.以这种方式思考,有人每秒将1个糖果(r)放入桶中,然后每秒只能吃1个糖果.如果你的水桶可以容纳10(b)个糖果,如果你有一段时间没有吃过任何一个,那么你的水桶就会满了,那么你可以一次吃掉10个糖果(M).

我想你可以用这种方式计算关于最大突发时间T的问题的答案.重点是,当你以M率吃糖果时,它也会按照r率进行补充.

t = b/m;
while(1) {
    T = (b + (t * r)) / m
    if (T == t) return T;
    t = T;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果b = 10,则r = 1/sec,M = 2/sec,则T = 9.