本文來自於《精通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:版本幾乎一直在更新。