Hystrix是什么
Hystrix是一个容错组件,是Netflix开源的一个类库,实现了超时和断路器模式。
Hystrix为了什么
Hystrix被设计的目标是:
- 对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。
- 在复杂的分布式系统中阻止级联故障。
- 快速失败,快速恢复。
- 回退,尽可能优雅地降级。
- 启用近实时监控、警报和操作控制
Hystrix解决了什么问题
复杂分布式体系结构中的应用程序有许多依赖项,每个依赖项在某些时候都不可避免地会失败。如果主机应用程序没有与这些外部故障隔离,那么它有可能被他们拖垮。
例如,对于一个依赖于30个服务的应用程序,每个服务都有99.99%的正常运行时间,你可以期望如下:
99.9930 = 99.7% 可用
也就是说一亿个请求的0.03% = 3000000 会失败
如果一切正常,那么每个月有2个小时服务是不可用的
现实通常是更糟糕
hystrix 在 springcloud 是默认包含的吗
hystrix 在 springcloud 升级到2020.0.0版本之后,就被移除了
- Support for ribbon, hystrix and zuul was removed across the release train projects.
hystrix 集成 - feign
Feign使用Hystrix开发步骤
1、导入依赖spring-cloud-starter-hystrix
2、消费启动类开启@EnableCircuitBreaker
3、配置 feign.hystrix.enabled=true
4、实现@FeignClient注解的接口或FallbackFactory接口
5、@FeignClient注解配置fallback参数
hystrix 集成 - restTemplate
1、导入依赖spring-cloud-starter-hystrix
2、消费启动类开启@EnableCircuitBreaker
3、在方法上使用注解 @HystrixCommand, 配置 fallbackMethod,指定降级方法