php实现树和森林结构,php如何实现漏桶算法?

什么是漏桶算法?

漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率), 然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.

可见这里有两个变量,一个是桶的大小,支持流量突发增多时可以存多少的水(burst),另一个是水桶漏洞的大小(rate)

class LeakyDemo{

private $timeStamp;

public $capacity;// 桶的容量

public $rate; // 水漏出的速度

public $water;// 当前水量(当前累积请求数)

public function __construct()

{

$this->timeStamp = time();

}

public function grant(){

$now=time();

$this->water=max(0,$this->water-($now-$this->timeStamp)*$this->rate);// 先执行漏水,计算剩余水量

$this->timeStamp=$now;

if(($this->water+1)capacity){

// 尝试加水,并且水还未满

$this->water+=1;

return true;

}else{

// 水满,拒绝加水

return false;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值