Hystrix是什么
hystrix是一个库,通过延迟容忍和容错逻辑,控制分布式服务之间的交互。它通过隔离服务间的访问点、防止级联失败和提供回退选项,保证系统的整体弹性。
Hystrix作用
hystrix被设计的目标是:
1.对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。
2.在复杂的分布式系统汇中阻止级联故障。
3.快速失败,快速恢复。
4.回退,尽可能优雅的降级。
5.启用近实时监控、警报和操作控制。
Hystrix使用场景
1.调用超时时间比你自己定义的阈值要长。
2.线程池满了,该以来应该立即拒绝请求,而不是排队
3.在一段时间内,如果服务的错误百分比超过了一个阈值,就会触发一个断路器来停止对特定服务的所有请求,无论是手动还是自动的
Hystrix如何解决依赖隔离
1.Hystrix使用命令模式HystrixCommand(Command)包装依赖调用逻辑,每个命令在单独线程中/信号授权下执行。
2.可配置依赖调用超时时间,超时时间一般设为比99.5%平均时间略高即可.当调用超时时,直接返回或执行fallback逻辑。
3.为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。
4.依赖调用结果分:成功,失败(抛出异常),超时,线程拒绝,短路。 请求失败(异常,拒绝,超时,短路)时执行fallback(降级)逻辑。
5.提供熔断器组件,可以自动运行或手动调用,停止当前依赖一段时间(10秒),熔断器默认错误率阈值为50%,超过将自动运行。
6.提供近实时依赖的统计和监控
Hystrix怎么用
1.使用maven引入Hystrix依赖。
2.启动类上添加注解:@EnableCircuitBreaker
3.回调关键词:@HystrixCommand(fallbackMethod="方法名"),注解在方法上
如果通过注解@HystrixCommand的方式来实现的话,服务降级就要在注解中添加fallbackMethod参数来指定具体的服务降级实现方法
4.@DefaultProperties(defaultFallback = “) 全局异常处理的设置,注解在类上
方法上设置@HystrixCommand ,如图