万字详文:服务限流的实施

服务限流 应当是每个并发程序都应该考虑的~!限流的目的不仅是为了控制访问的总并发量,而且还要尽量让访问的流量来的更均衡,这样才不会让系统的负载大起大落,因此又称为"流量整形"。

当然在微服务盛行的时代,我们考虑到的 服务限流 不再单单应对 单体服务 ,而是更要清楚分布式场景下如何进行 服限流

一丶单体限流

万字详文:服务限流的实施

以上三种是我们在 单体服务 中常见的限流算法,我们接下来分别认识一下!

1、计数器限流

计数器限流 是属于一种比较简单粗暴的方式!

设计思路如下:

我们会限制一秒钟内能够通过的请求数(比如 50),从第一个请求进来开始计数,在接下去的1s 内,每进来一个请求,我们就会把计数值加 1,如果累加的数字达到了 50,那么后续的请求就会被全部拒绝,等到 1s 过去之后,把计数恢复成 0,并重新开始计数

万字详文:服务限流的实施

使用计数器可以用来限制一定时间内的总并发数,但说到底这是一种简单粗暴的限流方式,而不是平均速率限流,在某些场景下可以使用。但是遇到某些特殊的情况下,如果系统的负载量只有 50,在第59秒瞬间请求 50 次,并且在第 1:00 也请求了 50次,那么这个程序在 1 秒内被请求了 100次,瞬间超过总负载,很有可能直接击垮我们的应用程序!

万字详文:服务限流的实施

当然,事情都没有绝对的,我们可以使用 滑动窗口 的方式解决问题。说到 滑动窗口有些小伙伴并不陌生,因为 TCP 协议 就有采用 滑动窗口来控制流量,不清楚的小伙伴往下看!

滑动窗口算法指的是以当前时间为截止时间,往前取一定的时间,比如取 60 秒时间,在这 60秒之内运行的最大访问数为 50,此时算法的执行逻辑为:先清除 60 秒之前的所有请求记录,再计算当前集合内请求数量是否大于设定的最大请求数 50?如果大于则执行限流拒绝策略,否则插入本次请求记录并执行正常流程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值