限流算法(记录cyc大佬的专栏)

限流的必要性

如果一段时间内请求的数量过大,就会给服务器造成很大压力,可能导致服务器无法提供其它服务。

计数器算法




通过一个计数器 counter 来统计一段时间内请求的数量,并且在指定的时间之后重置计数器。

该方法实现简单,但是有临界问题。例如,允许一分钟内通过的请求数为 N,如果在重置计数器的前后一小段时间内分别请求 N 次,那么在这一小段时间内总共请求了 2N 次,超出了规定的 N 次。


滑动窗口算法

是计数器算法的一种改进,将原来的一个时间窗口划分成多个时间窗口,并且不断向右滑动该窗口。


在临界位置的突发请求都会被算到时间窗口内,因此可以解决计数器算法的临界问题。

漏桶算法

能够以恒定速率处理请求。



请求需要先放入缓存中,当缓存满了时,请求会被丢弃。


令牌桶算法

和漏桶算法的区别在于它是以恒定速率添加令牌,当一个请求到来时,先从令牌桶取出一个令牌,如果能取到令牌那么就可以处理该请求。

令牌桶的大小有限,超过一定的令牌之后再添加进来的令牌会被丢弃。

令牌桶算法允许突发请求,因为令牌桶存放了很多令牌,那么大量的突发请求会被执行。但是它不会出现临界问题,在令牌用完之后,令牌是以一个恒定的速率添加到令牌桶中的,因此不能再次发送大量突发请求。


转载于:https://juejin.im/post/5caa099d6fb9a05e5b2adfac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值