Ribbon是Netflix開源的一個基于HTTP和TCP客戶端負載均衡器。它主要用于在微服務架構中實現客戶端負載均衡,將請求分發到多個服務提供者上,從而實現高可用性和擴展性。
Ribbon的主要特點包括:
-
客戶端負載均衡:Ribbon是一個客戶端負載均衡器,它將負載均衡算法放到了客戶端,而不是像傳統的負載均衡器那樣放到服務器端。這樣可以更靈活地進行負載均衡,并且可以避免單點故障問題。
-
多種負載均衡算法:Ribbon支持多種負載均衡算法,如輪詢、隨機、加權輪詢等,可以根據實際需求進行選擇。
-
與Eureka集成:Ribbon可以與Eureka服務注冊中心進行集成,從而自動獲取可用的服務實例列表。
-
支持自定義:Ribbon提供了豐富的配置項,可以通過配置文件或編程方式來進行自定義,以滿足不同的需求。
-
Spring Cloud集成:Ribbon是Spring Cloud中默認的客戶端負載均衡器,可以與其他Spring Cloud組件無縫集成,比如Zuul、Feign等。
通過定義IRule實現可以修改負載均衡規則,有兩種方式:
一,代碼
application類中
@Bean
public IRule randomRule(){return new RandomRule();
}
?二,配置文件
application.yml中
所調用的另一個服務的名稱:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.ZoneAvoidanceRule # 輪詢負載均衡規則
注意:bean配置優先級高于yml配置優先級
根據集群負載均衡
所調用的另一個服務的名稱:ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 負載均衡規則
饑餓加載
Ribbon默認是采用懶加載,即第一次訪問時才會去創建LoadBalanceClient,請求時間會很長。
而饑餓加載則會在項目啟動時創建,降低第一次訪問的耗時。
ribbon:eager-load:enabled: true # 開啟饑餓加載 clients: userserver # 指定對userserver這個服務饑餓加載