前言
废话不多说,直接上图,本文也就是围绕下图展开Feign中是如何依赖Hystrix进行远程调用的超时熔断降级!
高清图片请关注微信公证号:码帮帮
环境说明
本文依赖Feign远程调用实现Hystrix的超时熔断机制,那么是建立在Feign可以发起远程调用,然后Feign开启了Hystrix熔断,并且配置了超时熔断的Fallback方法!
知识铺垫
我们知道,Feign其实是有两种代理拦截Handle的,一种是Feign默认的FeignInvocationHandler、一种是开启Hystrix的HystrixInvocationHandler,那么本文就是基于HystrixInvocationHandler来分析Hystrix在Feign的整合下的运行逻辑!
大致说明
网商关于Hystrix的源码分析其实挺少的,大多数根据Hystrix官网搬一点,要么就是单纯分析Hystrix的源码,并没有结合Feign,或者是简单说说理论,为什么,这并不是因为Hystrix逻辑有多复杂,当然也不简单!我个人觉得他的Hystrix线程池、超时熔断机制、信号量机制、以及和Feign的结合其实并不是复杂的根源,根源是Hystrix中使用了大量的RxJava这个技术,RxJava这个技术没用过的人,说实在话还真的不是很好下手,因为他的代码都是响应式的,而且语法和我们常规的java业务代码有很大的不同,在逻辑上来说是比较跳跃的,不像普通的业务代码,可以一个方法一个方法的调用看,在RxJava的复杂度之上还加了多线程的异步处理,基于RxJava和多线程使得能将Hystrix源码搞清楚的其实并不多!而我就是一个比较头铁的~~