對于ribbon的使用我們隻需要在RestTemplate的申明上面加上 @LoadBalanced 注解之後那麼這個RestTemplate就具有了負載均衡的功能
ribbon是怎麼實作這一功能的?
ribbon會把所有的LoadBalanced 注解的RestTemplate收集起來,基于SmartInitializingSingleton接口的afterSingletonsInstantiated方法調用的時候,并向其注入一個LoadBalancerInterceptor攔截器。通過此攔截器來實作負載均衡功能。
和注冊中心搭配使用時,各注冊中心自己的用戶端實作ServerList接口,基于自家 的服務注冊發現,将服務清單拉取到用戶端本地,ribbon再從用戶端本地更新到ribbon自己的緩存中,然後通過負載均衡器和對應的負載均衡算法來實作我們服務的負載均衡。
兩個關鍵的配置檔案LoadBalancerAutoConfiguration和RibbonClientConfiguration,所有的配置都是從這兩個配置檔案開始的。
源碼流程圖:
