【微服务稳定性之限流降级】【一】限流概念和算法

       微服务稳定性稳定性三大杀器,缓存,队列,限流降级。这一部分讲一下限流降级。每个系统都有自己的最大服务能力,即在达到某个临界点之前,系统都可以正常提供服务。为了保证系统在面临瞬间的流量时仍然可以对外提供服务,我们就需要使用限流技术。下面就讲一讲笔者认为的降级和熔断的概念。

限流:1)服务的入口的限流,在流量激增的情况下对流量进行控制;2)当然还有一个情况就是,服务A在调用B,下游服务B只能抗住100的qps,在B服务不可用的情况下,需要限流,并进行熔断和降级(A调用B的出口返回默认的值);

熔断:一般是某个服务故障或者异常引起,类似现实世界中的"保险丝",当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时。

降级:当某个服务熔断之后,服务器将不再被调用,此时客户端自己准备一个本地的fallback回调,返回一个缺省值。虽然服务水平下降,但好歹可用。

 

限流算法

       常见的限流算法有计数器算法、漏桶算法和令牌桶算法。

·计数器算法

      计数器算法“简单粗暴”。该算法会维护一个counter,规定在单位时间内counter的大小不能超过最大值,每相隔固定时间就将counter的值置零。如果这个counter大于设定的阈值,系统开始拒绝请求以保护系统的负载。

·漏桶算法

       在漏桶算法中,我们会维护一个固定容量的桶,这个桶会按照指定的速度漏水。如果这个桶空了,那么就停止漏水;请求到达系统就类似于将水加入桶中,这个速度可以是均匀的也可以是瞬间的,如果桶满了,就忽略后面的请求,这倒这个桶可以存放多余的水。优点:将系统的处理能力维持在一个比较平稳的水平;缺点在瞬间流量过来时,会拒绝后续的请求流量。代码中会通过一个队列来实现漏斗的效果,当请求过多时,队列中的请求就开始积压,当队列满了之后,系统就会开始拒绝请求。

·令牌桶算法

       令牌桶的思路是,随着时间的流逝,系统会按照指定速度往桶里添加token,每来一个新请求,就从桶里拿走一个token,如果没有token可以拿就拒绝服务。这种算法的好处是便于控制系统的处理速度,甚至可以通过统计信息实时优化令牌桶的大小。

       令牌桶算法和漏桶算法的不同之处在于处理瞬间到达的大流量不同:令牌桶算法由于在令牌桶里攒了很多令牌,因此在大流量到达的瞬间可以一次性将队列中所有的请求都处理完,然后按照恒定的速度处理请求;漏桶算法则一直有一个恒定的阈值,在大流量到达的时候,也会将多余的请求拒绝。

 

Author:忆之独秀

Email:leaguenew@qq.com

注明出处:https://blog.csdn.net/lavorange/article/details/95681138

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值