位置:天津达内IT培训学校 > 学校动态 > 漏桶限流的基本原理
漏桶限流的基本原理
1)水通过进水口(对应客户端请求)以任意速率流入漏桶。 2)漏桶的容量是固定的,出水(放行)速率也是固定的。 3)漏桶容量是不变的,如果处理速度太慢,桶内水量会超出桶的容量,后面流入的水就会溢出,表示请求拒绝。
private static long lastOutTime = System.currentTimeMillis();
//流出速率每秒2个
private static int rate = 2;
//剩余水的量
private static long water = 0;
/**
* false:没有被限制
* true:被限流
* @param taskId
* @param turns
* @return
*/
public synchronized static boolean tryAcquire(long taskId, int turns){
long now = System.currentTimeMillis();
long pastTime = now - lastOutTime;
long outWater = pastTime * rate/ 1000;
water = water -outWater;
log.info("water {} pastTime {} outWater {}",water ,pastTime, outWater);
if (water < 0){
water = 0;
}
if (water <= 1){
lastOutTime = now;
water ++ ;
return false;
}else {
return true;
}
}
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2346/news/568805/违者必究! 以上就是天津达内IT培训学校 小编为您整理 漏桶限流的基本原理的全部内容。