文章目录
hystrix在soul中的集成
hystri在soul中的插件类为HystrixPlugin,继承了AbstractSoulPlugin,与其他插件一样,我们来看看最终的执行方法,doExecute,如下:
代码比较简短,主要做的事情如下:
- 将配置的熔断规则转换为HystrixHandle类,该类的主要属性就是我们在soul-admin中配置的熔断规则属性
- 构造命令模板,具体的构造过程如下:
这里边根据配置的不同(信号量和线程),来构造不同的命令模板(HystrixCommand和HystrixCommandOnThread,两者都实现了Command), 先来看信号量命令模板的构造,HystrixCommand类,主要方法为:
@Override
public Observable<Void> fetchObservable() {
return RxReactiveStreams.toObservable(this.execute());
}
大致的意思是给每次执行的时候加上监听,其中this.execute()方法调用的hystrix自身提供的方法,具体执行的动作暂不分析
如果达到熔断条件的话,会调用该方法
如果配置了失败后回调的url,soul会将其转发至该url并将结果返回
3. 信号量和线程模板被进行了统一封装,调用过程基本一致,具体线程和信号量的实现细节就要看hystrix的实现了,后期有机会再看
总结
本篇简单看了下hystrix插件是在soul中怎么集成的,最终熔断器的实现调用的是hystrix自身的实现,其中(HystrixCommand和HystrixCommandOnThread这两个类继承了hystrix中相关的实现,统一被soul调用的入口处是fetchObservable,但是具体的执行过程,包括怎么放行请求,怎么处触发熔断还没进行贯通,需要debug调试,后续会补上