Dubbo源码解析(六)-限流及熔断降级原理

一 前文 提供服务暴露的接口,在流量低的情况或许并不需要考虑限流,因为在数据库或缓存的允许下就能正常的工作,但是当调用突然飙升的时候,那么就会出现异常情况,比如数据库的连接池和线程池就是一种限流手段,通过限制只有指定数量的工作线程,其他线程进行队列等待或是进行抛弃。二 分布式中主要使用的技术 目前和dubbo一起运用较多的为Alibaba Sentinel,而SpringCloud中主要是运用了Hystrix(并发线程模式)。三 限流实现限流实现主要有1、计数器...
摘要由CSDN通过智能技术生成

一 前文

        提供服务暴露的接口,在流量低的情况或许并不需要考虑限流,因为在数据库或缓存的允许下就能正常的工作,但是当调用突然飙升的时候,那么就会出现异常情况,比如数据库的连接池和线程池就是一种限流手段,通过限制只有指定数量的工作线程,其他线程进行队列等待或是进行抛弃。

二 分布式中主要使用的技术

       目前和dubbo一起运用较多的为Alibaba Sentinel,而SpringCloud中主要是运用了Hystrix(并发线程模式)。

三 限流实现

限流实现主要有1、计数器算法,2、滑动窗口算法,3、令牌桶算法,4、漏桶限流算法。令牌桶和漏桶

3.1 计数器算法

计算器算法,最简单的一种算法,原理就是在指定周期内只能执行n个请求,超过n的请求直接限流。假设周期为1分钟,最多执行100个请求。1-60s 最多100个请求,同时60-120s也最多100个请求,但是在30s和60s期间执行着50个请求,60s-90s期间执行着51个请求,这时候计数器是根据每分钟进行重置为0,那么他并未达到限流的条件,因为在60s的时候他已经重置为0了,但实际上调用的却是101个请求,导致限流局部失效。

3.2 滑动窗口算法

为了解决计数器算法的局部未生效临界问题,引入了滑动窗口算法。以下图位列,将一个周期内分为4块,每次只能执行4个窗口数量的请求,每次往前移动一块,可以重新统计当前

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值