Hystrix熔断器的使用,在启动类上添加注解@EnableCircuitBreaker,然后在具体的请求上添加@HystrixCommand,则对该接口的调用会使用熔断的规则。我们以@EnableCircuitBreaker注解为入口,分析熔断器的源码。
注解中引入了一个类EnableCircuitBreakerimportSelector,进入该类查看具体情况。
该类继承了SpringFactoryimportSelector,这个是用来加载spring.factory里面的配置类的。进入SpringFactoryimportSelector查看都加载了哪些类。
由此可只,会加载spring.factory里面的以EnableCircuitBreaker全限定类名为key的所有Bean。接下来就看看spring.factory里面都装配了哪些。
装配了HystrixCircuitBreakerConfiguration,进入类中,查看类中具体都做了哪些事情。
这里面装配一个切面,初步猜测hytrix熔断器是通过切面给方法进行增强来实现的熔断和服务降级的操作。
在此可看到,切面是对HystrixCommand和HystrixCollapser为切入点,进行了环绕增强。里面的内容主要包括,根据方法的配置创建了HystrixInvokable,该接口在该处的主要实现为GenericCommand,实现类中封装了对调用方法的执行,以及对降级回退方法的执行。最终通过CommandExecutor#execute执行方法获取结果。



