首页>学校动态>漏桶限流的基本原理

漏桶限流的基本原理

来源:天津达内IT培训学校时间:2022/10/11 13:58:18

  漏桶限流的基本原理

  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;

  }

  }

上一页 下一页

推荐课程更多>

立即申请体验课

关于我们 | 联系我们 | 天津达内IT培训学校

版权所有:培训指南

  • 在线咨询
  • 电话咨询
  • 预约试听