欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  什么是接口限流
 
  那么什么是限流呢?顾名思义,限流就是限制流量,包括并发的流量和一定时间内的总流量,就像你宽带包了1个G的流量,用完了就没了,所以控制你的使用频率和单次使用的总消耗。通过限流,我们可以很好地控制系统的qps,从而达到保护系统或者接口服务器稳定的目的。
 
  接口限流的常用算法
 
  计数器法
 
  计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,counter就加1,如果counter的值大于100并且该请求与第一个请求的间隔时间还在1分钟之内,那么说明请求数过多;如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置counter,具体算法的示意图如下:
 
  伪代码如下:class CounterDemo{
 
  private  $timeStamp;
 
  public  $reqCount=0;
 
  public  $limit=100;//时间窗口内最大请求数
 
  public $interval=1000; //时间窗口 ms
 
  public function __construct()
 
  {
 
  $this->timeStamp=time();
 
  }
 
  public  function grant(){
 
  $now=time();
 
  if($nowtimeStamp+$this->interval){
 
  //时间窗口内
 
  $this->reqCount++;
 
  return $this->reqCount<=$this->limit;
 
  }else{
 
  // 超时后重置
 
  $this->timeStamp=time();
 
  $this->reqCount=1;
 
  return true;
 
  }
 
  }
 
  }

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h62137.shtml