系统架构与hystrix具体要实现的目标以及方法!

什么是hystrix?

在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。

系统架构与hystrix具体要实现的目标以及方法!

hystrix要解决的问题?

在复杂的分布式系统架构中,每个服务都有很多的依赖服务,而每个依赖服务都可能会故障,如果服务没有和自己的依赖服务进行隔离,那么可能某一个依赖服务的故障就会拖垮当前这个服务。hystrix就是通过相应方法来阻止当前服务被拖垮的一个容错框架!

系统架构与hystrix具体要实现的目标以及方法!

hystrix使用舱壁模式(bulkhead pattern)来隔离依赖和限制并发访问。

每个依赖使用独立的线程池以保证并发请求是受约束的。底层执行的延迟将只会在对应线程池中耗尽所有的可用线程。使用信号来取代线程池也是一种选择,这样可以进行降载(load shedding)而非超时。

系统架构与hystrix具体要实现的目标以及方法!

1、在一个单独的线程中通过 HystrixCommand 或 HystrixObservableCommand 对象包装所有外部系统(或依赖)的调用。

2、调用超时比设置的阈值更长。虽然有默认值,但是大多数依赖自己配置的这些超时“属性”,所以每个依赖都略高于实测性能的99.5%。

系统架构与hystrix具体要实现的目标以及方法!

3、为每个依赖保持一个小的线程池;如果线程池满了,新来的请求会立即拒绝掉,而不是排队等候。

4、测试成功、失败(客户端抛出异常)、超时和线程拒绝。

系统架构与hystrix具体要实现的目标以及方法!

5、当请求失败、被拒、超时或者短路时的性能反馈逻辑。

6、准实时的监控指标和配置改变。


分享到:


相關文章: