對於ribbon的使用咱們只須要在RestTemplate的申明上面加上 @LoadBalanced 註解以後那麼這個RestTemplate就具備了負載均衡的功能算法
ribbon是怎麼實現這一功能的?緩存
ribbon會把全部的LoadBalanced 註解的RestTemplate收集起來,基於SmartInitializingSingleton接口的afterSingletonsInstantiated方法調用的時候,並向其注入一個LoadBalancerInterceptor攔截器。經過此攔截器來實現負載均衡功能。負載均衡
和註冊中心搭配使用時,各註冊中心本身的客戶端實現ServerList接口,基於自家 的服務註冊發現,將服務列表拉取到客戶端本地,ribbon再從客戶端本地更新到ribbon本身的緩存中,而後經過負載均衡器和對應的負載均衡算法來實現咱們服務的負載均衡。ide
兩個關鍵的配置文件LoadBalancerAutoConfiguration和RibbonClientConfiguration,全部的配置都是從這兩個配置文件開始的。blog
源碼流程圖:接口