什么是hystrix?
在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。
hystrix要解决的问题?
在复杂的分布式系统架构中,每个服务都有很多的依赖服务,而每个依赖服务都可能会故障,如果服务没有和自己的依赖服务进行隔离,那么可能某一个依赖服务的故障就会拖垮当前这个服务。hystrix就是通过相应方法来阻止当前服务被拖垮的一个容错框架!
hystrix使用舱壁模式(bulkhead pattern)来隔离依赖和限制并发访问。
每个依赖使用独立的线程池以保证并发请求是受约束的。底层执行的延迟将只会在对应线程池中耗尽所有的可用线程。使用信号来取代线程池也是一种选择,这样可以进行降载(load shedding)而非超时。
1、在一个单独的线程中通过 HystrixCommand 或 HystrixObservableCommand 对象包装所有外部系统(或依赖)的调用。
2、调用超时比设置的阈值更长。虽然有默认值,但是大多数依赖自己配置的这些超时“属性”,所以每个依赖都略高于实测性能的99.5%。
3、为每个依赖保持一个小的线程池;如果线程池满了,新来的请求会立即拒绝掉,而不是排队等候。
4、测试成功、失败(客户端抛出异常)、超时和线程拒绝。
5、当请求失败、被拒、超时或者短路时的性能反馈逻辑。
6、准实时的监控指标和配置改变。
閱讀更多 架構師之橋 的文章