Spring Cloud 2.2.2 源码之二十三Feign执行原理二

Spring Cloud 2.2.2 源码之二十三Feign执行原理二

创建负载均衡客户端

最后一步了,创建客户端,然后负载均衡,去执行。
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
先创建服务的客户端:
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
CachingSpringLoadBalancerFactory工厂有个缓存,先从缓存中拿。没有的话就用SpringClientFactory创建一个ILoadBalancer实例,其实就从服务名对应的容器里获取,这里其实就是获取ribbon的负载均衡器ZoneAwareLoadBalancer,如果没有重试工厂的话就封装成FeignLoadBalancer对象,放入缓存,并返回:
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
这个熟悉:
Spring Cloud 2.2.2 源码之二十三Feign执行原理二

executeWithLoadBalancer执行

创建一个命令,然后执行,里面也很深。
Spring Cloud 2.2.2 源码之二十三Feign执行原理二

不过最后会执行到这里,用负载均衡策略选服务器:
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
这里熟悉了吧。
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
最后会回调这里面:
Spring Cloud 2.2.2 源码之二十三Feign执行原理二

FeignLoadBalancer的execute

其实就是FeignLoadBalancerexecute
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
最终居然是用HttpURLConnection来进行请求的。
Spring Cloud 2.2.2 源码之二十三Feign执行原理二
好了,基本的流程说完了,其实就是动态代理,最后是HttpURLConnection处理的,细节可以慢慢看哦。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。