令牌桶算法和漏桶算法

令牌桶算法:不断将令牌丢进桶里,一个请求能不能得到处理,就看这个请求能不能得到桶里的令牌(也就是说得不到令牌的请求就不能被处理)

r表示令牌存放到桶里的速度(令牌存放到桶里有两种方法:每秒存放5个,或者每搁4秒存放20个),令牌放到桶里面的速度是匀速的

W表示当前桶内有多少个令牌

C表示桶的容量

b表示当前的请求

at表示处理完上一个请求的时间点

bt表示当前请求过来的时间点

那现在要做的就是判断当请求b过来的时候,桶里面是否有令牌?

bt=now();  //当前请求过来的时间

Wb=(bt-at)*r  //上一个请求处理完到当前请求过来的这段时间内桶内新增的令牌数

W=min(W+Wb,C)//桶内的实际令牌数量

if(W>=1)
{
  W--; 
  return  true;
}
else//令牌桶里没有令牌
{
   return  false;
}

漏桶算法:请求能否被执行,是看这个请求能否被放到桶里面

没有令牌的概念了,把请求放到桶里面

b表示当前要处理的请求

at表示处理完上一个请求的时间点

C表示木桶的总容量

W 当前桶内剩余可以容纳的请求数

r处理请求的速度

bt=now();  //当前请求过来的时间

Wb=(bt-at)*r  //上一个请求处理完到当前请求过来的这段时间内处理掉的请求数

W=MAX(W-Wb,0)//桶内剩余的请求数

if(W<C)//剩余的请求数小于桶的容量
{
  W++; 
  return  true;
}
else//桶已经满了
{
   return  false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值