天天看点

SpringCould中的Hystrix

源码地址:https://gitee.com/xiaocheng0902/my-cloud.git

  Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

  "断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间的、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

  服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性

  服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

对应源码:cloud-provider-hystrix-payment8001

  在主启动类Application上注解

  在service的方法中加入

对应源码:cloud-consumer-feign-hystrix-order80

  yaml文件中添加配置

  主启动类Application上加上注解

  业务类controller中加入

  解决主方法一个备用方法的代码冗余。(源码同上)

  业务类controller中编码

  yaml文件配置

  feign调用的接口

  feign调用接口的实现类

  controller中正常调用即可

  熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

源码:cloud-provider-hystrix-payment8001

  启动类

  service

  controller

  测试

SpringCould中的Hystrix

  熔断打开:请求不在进行调用当前服务,内部设置始终一般为MTTR(平均故障处理时间),当打开时长达到所设时钟则进入熔断状态。

  熔断关闭:熔断关闭不会对服务进行熔断。

  熔断半开:部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断。

  1,再有请求调用的时候,将不会调用主逻辑,而是直接调用降级fallback。通过断路器,实现了自动地发现错误并将降级逻辑切换为主逻辑,减少响应延迟的效果。

  2,原来的主逻辑如何恢复:当断路器打开,对主逻辑进行熔断之后,hystrix会启动一个休眠时间窗,在这个窗内,降级逻辑是临时的成为主逻辑;当休眠时间窗到期,断路器会进入半开状态,释放一次请求到原来的主逻辑上,如果此时请求正常返回,那么断路器将继续闭合,主逻辑恢复,如果这次请求依然有问题,断路器继续进入打开状态,休眠时间窗重新计时。

HystrixCommand:

commandProperties:

threadPoolProperties:

源码:cloud-consumer-hystrix-dashboard9001

pom文件

application启动类中添加

访问地址:http://localhost:9001/hystrix

SpringCould中的Hystrix

 应用说明

SpringCould中的Hystrix
SpringCould中的Hystrix
上一篇: spring hystrix
下一篇: Hystrix总结

继续阅读