本文來自于《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,
點選檢視視訊内容。
本文系志願者整理,供配合學習中心課程使用,不做商業用途。
SpringCloud負載均衡器說明
在SpringCloud第一代中使用Ribbon、SpringCloud第二代中直接采用自研發loadbalancer即可,預設使用的Ribbon。
使用方式非常簡單:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
LoadBalancerClient負載均衡器
@RequestMapping("/loadBalancerClient")
public Object loadBalancerClient() {
return loadBalancerClient.choose("meitemayikt-member");
}
底層預設原理是調用ribbon的實作用戶端負載均衡器。

本地負載均衡與Nginx 的差別
本地負載均衡
本地負載均衡器基本的概念:我們的消費者服務從我們的注冊中心擷取到叢集位址清單,緩存到本地,然後本地采用負載均衡政策(輪訓、随機、hash一緻性、權重等),實作本地的rpc遠端的。
本地負載均衡器有:
自己寫、ribbon SpringleCloud第一代中loadbalancerSpringCloud自己研發。
如何選擇ribbon還是loadbalancer
SpringCloud Rest或者Openfeign都是預設支援ribbon。
本地負載均衡器與Nginx 的差別
Nginx是用戶端所有的請求統一都交給我們的Nginx處理,讓後再由Nginx實作負載均衡轉發,屬于伺服器端負載均衡器。
本地負載均衡器是從注冊中心擷取到叢集位址清單,本地實作負載均衡算法,即本地負載均衡器。屬于用戶端負載均衡器。
應用場景:
Nginx屬于伺服器負載均衡,應用于Tomcat/Jetty伺服器等,而我們的本地負載均衡器,應用于在微服務架構中rpc架構中,rest、openfeign、dubbo。
SPringleCloud rest或者openfeign用戶端預設都是ribbon實作調用
@loadbalancer實際上是我們的springcloud自己寫的。
loadbalancerClientSpringCloud根據服務id擷取負載均衡器rpc位址。
搜尋 maven倉庫,對比分析
ribbon在某一時間段頻繁更新。
spring-cloud-loadbalancer:版本幾乎一直在更新。