ribbon源码分析


对于ribbon的使用咱们只须要在RestTemplate的申明上面加上 @LoadBalanced 注解以后那么这个RestTemplate就具备了负载均衡的功能算法

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

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

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

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

源码流程图:接口