注意事项
restTemplate使用hystrix的时候需要在启动类上加@EnableCircuitBreaker注解,hystrix才能生效;feign自带了hystrix所以不需要加注解,只需要在配置文件里面加上feign.hystrix.enabled=true即可
hystrix是一个容错组件。实现了 超时机制和断路器模式。
Hystrix是Netflix开源的一个类库,用于隔离远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。主要的三个功能:降级、限流(隔离)、熔断。
添加在客户端
降级
限流(隔离)
熔断
熔断前会调用后面的服务,异常了会降级到fallback,熔断后就不调用后面的服务了,直接fallback,熔断的触发条件是达到阈值,熔断之后Hystrix会间断放行一些服务的调用请求,以确认是否继续熔断还是关闭熔断。
微服务中,consumer1调用业务服务失败的次数达到阈值之后会触发熔断,但是不需要通知集群里的其它consumer,因为consumer1调用失败了,consumer2调用的时候不一定会失败,而且调用失败的原因可能是网络问题,
关闭状态:正常情况下,断路器关闭,可以正常请求依赖的服务。打开状态:当一段时间内,请求失败率达到一定阈值,断路器就会打开。服务请求不会去请求依赖的服务。调用方直接返回。不发生真正的调用。重置时间过后,进入半开模式。半开状态:断路器打开一段时间后,会自动进入“半开模式”,此时,断路器允许一个服务请求访问依赖的服务。如果此请求成功(或者成功达到一定比例),则关闭断路器,恢复正常访问。否则,则继续保持打开状态。断路器的打开,能保证服务调用者在调用异常服务时,快速返回结果,避免大量的同步等待,减少服务调用者的资源消耗。并且断路器能在打开一段时间后继续侦测请求执行结果,判断断路器是否能关闭,恢复服务的正常调用。

