令牌桶算法和漏桶算法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

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;
}

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6