ribbon原始碼分析

白露非霜發表於2020-12-27

對於ribbon的使用我們只需要在RestTemplate的申明上面加上 @LoadBalanced 註解之後那麼這個RestTemplate就具有了負載均衡的功能

ribbon是怎麼實現這一功能的?

ribbon會把所有的LoadBalanced 註解的RestTemplate收集起來,基於SmartInitializingSingleton介面的afterSingletonsInstantiated方法呼叫的時候,並向其注入一個LoadBalancerInterceptor攔截器。通過此攔截器來實現負載均衡功能。

和註冊中心搭配使用時,各註冊中心自己的客戶端實現ServerList介面,基於自家 的服務註冊發現,將服務列表拉取到客戶端本地,ribbon再從客戶端本地更新到ribbon自己的快取中,然後通過負載均衡器和對應的負載均衡演算法來實現我們服務的負載均衡。

兩個關鍵的配置檔案LoadBalancerAutoConfiguration和RibbonClientConfiguration,所有的配置都是從這兩個配置檔案開始的。

原始碼流程圖:

 

相關文章