Spring Cloud Ribbon源码分析

目录

配置

源码分析

总结


配置

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

image.png

image.png

源码分析

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

 

总结

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

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值