断路器:Hystrix学习

在复杂的分布式架构当中,会有许多的服务依赖于其他的服务,并且这些服务器之间都有不可避免失效的可能。如果一个服务依赖由于延时过高发生阻塞,那么调用方的线程也会阻塞,如果相关业务的QPS过高,那么就有可能产生大量的阻塞,从而导致服务器资源被耗尽被拖垮导致服务宕机,另外这种高延时的请求也会在各应用之间传播,如果故障服务的上游依赖较多,则有可能会发生服务雪崩效应,导致大量服务宕机。

如图:正常情况下,当上游服务依赖于多个下游的服务会去请求多个下游服务完成响应

但是,如果当其中一个依赖发生高延时响应时间,当前请求会被阻塞,如果不采取措施,后续的请求也会在此发生阻塞,如下图:

我们都知道,每个请求都是线程资源,都会占用我们的系统资源,内存、CPU、网络开销等,如果这个服务访问量QPS较高的话,短时间内会产生大量请求,所以系统资源会很快被消耗殆尽,导致服务“挂掉”,这还是上游服务只有一个的情况,假如上游有大量的请求服务,则很有可能造成服务雪崩效应。

所以问了应对以上可能出现的问题,我们需要多服务做隔离,熔断等保险措施

断路器:Hystrix简介

Hystrix是由Netflix于2011年创立的项目,最初用来解决系统快速恢复的需求,它的特性能保证在分布式服务中,防止服务失败引起级联失败,项目的熔断机制能够使依赖的调用快速失败并且自动恢复,有效的避免对失败的服务进行请求,同时对每个接口进行线程隔离或者信号量隔离,避免因为高峰期或者服务延时导致线程消耗殆尽导致宕机。

Hystrix对服务级联故障的解决方案:

1.Hystrix将请求的逻辑进行封装(HystrixCommand或者HystrixObservableCommand),相关的逻辑会在独立的线程中执行,后面会讲到

2.Hystrix有自动超时策略,如果请求超过阈值,Hystrix会以超时失败来处理,调用getFallback()接口处理

3.Hystrix会为每一个接口依赖维护一个线程池,当线程池满载时,不会等待而是直接终止失败(快速失败原则)

4.Hystrix有熔断机制,当服务失败率超出阈值之后,会手动或者自动切断服务一段时间

Hystrix优点:

1.快速失败、同时能快速恢复(Hystrix对熔断的服务提供恢复策略,后面会讲到)

2.提供失败回退和优雅的服务降级机制

3.通过隔离系统所依赖的服务,防止服务级联失败、雪崩

4.提供有效的服务容错监控、报警和运维手段

Hystrix工作原理&&源码分析

 

 

例子:99.99%^30=99.97%             10亿*0.3%=300万

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值