feign集成hystrix全流程源码分析

Posted 5ycode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了feign集成hystrix全流程源码分析相关的知识,希望对你有一定的参考价值。

这篇文章算是对之前系列的增强,将spring启动流程、@Configuration配置加载分析 、feign构建与调用全流程分析hystrix源码分析 整体用两张图片串联起来。

feign 全流程分析

图片中主要分为以下几步:

  1. 从项目启动;

  2. refresh刷新上下文

  3. 解析

  4. 举例feign的装配,也可以看hystrix的装配(feign通过EnableAutoConfiguration自动装配),hystrix装配(用EnableAutoConfiguration和EnableCircuitBreaker),将FeignClient注解修饰的类包装成对应类型的BeanDefinition

  5. 加载

  6. 举例feign的加载

  7. 通过getBean 执行对应BeanDefinition的回调,通过解析注解RequestMapping生成SynchronousMethodHandler,最后通过动态代理方法名生成对应的DefaultMethodHandler

  8. 使用,通过@Autowire 根据类型获取

  9. hystrix处理包装成HystrixCommand(后续HystrixCommand的执行看hystrix的分析)

  10. RequestTemplate包装

  11. feign的负载均衡获取server

  12. 执行

hystrix分析里

  1. 从hystrix装配,扫描到@Aspect

  2. 请求执行

  3. 通过@HystrixCommand 拦截

  4. 包装成HystrixCommand

  5. 包装成HystrixCommand后如何执行

建议结合图片,自己翻代码追踪一下,然后再断点跑一下,会有很清晰的理解。图片中已将整体流程串联,以及在关键流程里使用的对象在哪里创建都用线串了起来,

文章中的图片可能不太清晰。

关注微信公众号5ycode,获取高清图片。

以上是关于feign集成hystrix全流程源码分析的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别