ribbon源码分析

对于ribbon的使用我们只需要在RestTemplate的申明上面加上 @LoadBalanced 注解之后那么这个RestTemplate就具有了负载均衡的功能

ribbon是怎么实现这一功能的?

ribbon会把所有的LoadBalanced 注解的RestTemplate收集起来,基于SmartInitializingSingleton接口的afterSingletonsInstantiated方法调用的时候,并向其注入一个LoadBalancerInterceptor拦截器。通过此拦截器来实现负载均衡功能。

和注册中心搭配使用时,各注册中心自己的客户端实现ServerList接口,基于自家 的服务注册发现,将服务列表拉取到客户端本地,ribbon再从客户端本地更新到ribbon自己的缓存中,然后通过负载均衡器和对应的负载均衡算法来实现我们服务的负载均衡。

两个关键的配置文件LoadBalancerAutoConfiguration和RibbonClientConfiguration,所有的配置都是从这两个配置文件开始的。

源码流程图:

 

posted @ 2020-12-27 14:06  白露非霜  阅读(246)  评论(0编辑  收藏  举报
访问量