Spring Cloud 远程接口调用OpenFeign负载均衡实现原理详解

网站建设2年前发布
19 0 0

环境:Spring Cloud 2021.0.7 + Spring Boot 2.7.12,开启注解功能,容器在启动过程中会找到所有@FeignClient的接口类,然后将这些类注册为容器Bean,而每一个Feign客户端对应的是FactoryBean对象FeignClientFactoryBean。,具体如何找这些带有@FeignClient注解的接口类可以查看FeignClientsRegistrar该类就在@EnableFeignClients中被导入。,Client的具体实现可以有如下:,具体使用哪个是根据你环境引入了哪个依赖(httpclient,okhttp),具体选择通过如下配置,如果你的环境有多个实现,那么这里会根据这里的导入顺序加载。这里以最后一个DefaultFeignLoadBalancerConfiguration为例。,在没有导入httpclient或者okhttp情况下,使用的Client实现是FeignBlockingLoadBalancerClient。,构造FeignBlockingLoadBalancerClient传入了负载均衡客户端LoadBalancerClient及负载均衡客户端工厂LoadBalancerClientFactory该工厂是用来创建每一个Feign客户端对应的子容器AnnotationConfigApplicationContext及从对应子容器获取相应的Bean实例对象,如:Client,Request.Options,Logger.Level等。,LoadBalancerClient具体实现:,接着上面FeignBlockingLoadBalancerClient#execute方法最终的返回方法执行,

© 版权声明

相关文章