目录

配置

源码分析

总结


配置

我们知道Ribbo有两种结合使用的方式,一种是与RestTemplate结合使用,另外一种是与Feign结合使用,下面是结合RestTemplate的配置。

Spring Cloud Ribbon源码分析

Spring Cloud Ribbon源码分析

源码分析

根据自动装配的原理,自动装配了LoadBalancerAutoConfiguration这个类。

Spring Cloud Ribbon源码分析

看一下这个注解,当我们配置了RestTemplate这个时才会被装配

Spring Cloud Ribbon源码分析

重要的是LoadBalancerAutoConfiguration向Spring容器注入了这个拦截器

Spring Cloud Ribbon源码分析

所有的请求都要经过LoadBalancerInterceptor拦截器的intercept方法

Spring Cloud Ribbon源码分析

最终调用的是LoadBalancerClient的execute方法,使用来自LoadBalancer的ServiceInstance执行指定的请求服务,它的实现类是RibbonLoadBalancerClient。我们看RibbonLoadBalancerClient的execute方法,每次发送请求都回获取一个ILoadBalancer ,会涉及负载均衡(IRULS),服务器列表集群(ServerList) 和检验服务是否存活(IPing)等细节实现

Spring Cloud Ribbon源码分析

getServer这方法直接调用了ILoadBalancer 的chooseServer方法来使用负载君和策略,从已知的服务列表中选出一个服务器实例

Spring Cloud Ribbon源码分析

发送请求的是LoadBalancerRequest的apply方法,大概的流程就是这样,忽略很多的细节,实在是一篇文章很难讲清楚

Spring Cloud Ribbon源码分析

 

总结

我们通过向Spring注入加上@LoadBalanced注解的RestTemplate就可以实现客户端的负载均衡,最终会通过RibbonLoadBalancerClient.reconstructURI 将构造成正常url形式并发起请求。

 

欢迎扫描下方二维码关注我!

Spring Cloud Ribbon源码分析

 

 

相关文章: