接口限流策略

字节三面的场景题

限流的目的是通过对于并发访问进行限速,一般是达到限制的速率,就会触发相应的限流行为。常见的限流行为如下:

  • 拒绝服务。 把多出来的请求拒绝掉,受到流量暴增的时候,会统计当前的哪个客户端来的请求最多,直接进行拒绝,把带恶意的请求阻挡。
  • 服务降级。关闭一些不太重要的服务,让给更重要的功能。另一种是返回部分数据。
  • 特权请求。我们只把有限的资源分给重要的用户,我们应该把资源尽可能的分给特权用户。
  • 延时队列。利用一个队列来进行缓冲大量的请求,如果队列满,则进行拒绝,一般用于应对短暂的峰刺请求。

限流的实现算法

计数器方式

最简单的算法是维护一个计数器,当请求来临的时候,做加一操作,当一个请求处理完后做减一操作。当计数器大于某个数,进行拒绝请求。

这种算法虽然实现简单,但是却有一个很大的缺陷:无法限制短时间之内的集中流量。假如我们需要限制每秒只能处理10个请求,如果该秒产生的请求都集中在最后10毫秒中,而下一秒钟的前10毫秒产生了10刺请求,那么在这20毫秒中产生了20次请求,因为这20 次请求分布在两个时间窗口内,所以没有触发限流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值