Hystrix入门研究
2017年10月24日 07:59
1、Hystrix是什么
Hystrix 是Netflix开源的一个针对分布式容错和库。Hystrix的主要功能是隔离分布式系统之间的故障,防止故障带来的雪崩效应。同时也能提供一个分布式服务的优雅的降级方案。从而提高系统的可用性的组件。
2、Hystrix设计理念是什么(其实也是高可用系统设计的理念)
- 防止单个系统故障后,造成容器(tomcat,scf)的线程全部占满,影响服务响应。
 - 使用快速失败和泄洪代替队列等待。
 - 在系统故障之后提供优雅的降级措施。
 - 使用隔离技术降低故障影响面。
 - 提供准实时的监控报警系统。
 - 提供准实时动态的配置系统。å
 - 客户端感知下游服务状态,防止错误的发展,而不通过真实的调用就能感知。
 
3、Hystrix怎么用
- Hello World:
 
1  | public class CommandHelloWorld extends HystrixCommand<String>{  | 
- 降级:
 
1  | public class CommandHelloFailure extends HystrixCommand<String> {  | 
4、Hystrix实现思路分析
1、数据流

- 初始化 
HystrixCommand或者HystrixObservableCommand对象。 - 执行。
 - 判断是否有缓存?
 - 判断是否调用链路是否通畅?
 - 判断线程池/队列/信号量 是否满了?
 - 执行
HystrixObservableCommand.construct()或者HystrixCommand.run()方法 - 计算调用下游的健康程度
 - 判断时候需要降级
 - 完成请求
 
2、熔断器

每个熔断器维护10个buckets窗口,每秒生成一个新的bucket,把最早的bucket抛弃,每个bucket记录了调用的,成功、失败、超时、拒绝的次数,如果失败数量达到某个阈值,就会触发熔断。
3、隔离
线程隔离
每个下游调用使用独立的线程池,而非与请求的调用共用一个线程池,这样可以防止失败的调用占用共用的线程池,造成整个系统拒绝服务。
优缺点
优点:
相互独立,减少互相影响的风险,总的来说就是隔离解耦,不会互相影响》
缺点:
过多的线程池造成cpu计算能力的消耗,和增加代码的复杂度。...
剩余内容已隐藏
查看完整文章以阅读更多