Spring Cloud如何切換Ribbon負載均衡模式
這篇文章主要介紹了Spring Cloud如何切換Ribbon負載均衡模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Spring Cloud Ribbon是一個基于HTTP和TCP的客戶端負載均衡工具,它基于Netflix Ribbon實現(xiàn)。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務的REST模版請求自動轉換成客戶端負載均衡的服務調(diào)用。Spring Cloud Ribbon雖然只是一個工具類框架,它不像服務注冊中心、配置中心、API網(wǎng)關那樣需要獨立部署,但是它幾乎存在于每一個Spring Cloud構建的微服務和基礎設施中。因為微服務間的調(diào)用,API網(wǎng)關的請求轉發(fā)等內(nèi)容,實際上都是通過Ribbon來實現(xiàn)的,包括后續(xù)我們將要介紹的Feign,它也是基于Ribbon實現(xiàn)的工具。所以,對Spring Cloud Ribbon的理解和使用,對于我們使用Spring Cloud來構建微服務非常重要。
Ribbon為我們提供了很多負載均衡算法,例如輪詢、隨機等等,我們也可以自己定義算法,那么Ribbon默認使用哪種模式呢,我們可以測試一下,我這里啟動了三個服務提供者,一個服務消費者,如下圖所示

測試類
@SpringBootTest
@RunWith(SpringRunner.class)
public class LoadBalanceTest {
@Autowired
private RibbonLoadBalancerClient client;
@Test
public void test(){
for (int i = 0; i < 50; i++) {
ServiceInstance instance = client.choose("service-provider");
System.out.println(instance.getHost()+":"+instance.getPort());
}
}
}
輸出結果
LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890
可以很明顯的看出這是一個輪詢的模式,所以可以證明Ribbon默認使用輪詢的負載均衡模式
那么如何切換其負載均衡模式呢?
只需要在配置文件里配置下面這段(以yml為例):
{服務提供者名稱}:
ribbon:
NFLoadBalancerRuleClassName: {IRule的實現(xiàn)類}
比如我的配置如下:
service-provider: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
可選擇的模式如下所示,這些都是IRule的實現(xiàn)類

切換為隨機模式的效果是什么樣的呢?修改配置后再次運行測試類
LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8890 LAPTOP-LFAOC6JB:8888 LAPTOP-LFAOC6JB:8889 LAPTOP-LFAOC6JB:8889
可以看出,運行的結果變?yōu)殡S機的了
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring-基于Spring使用自定義注解及Aspect實現(xiàn)數(shù)據(jù)庫切換操作
這篇文章主要介紹了Spring-基于Spring使用自定義注解及Aspect實現(xiàn)數(shù)據(jù)庫切換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java實現(xiàn)的打地鼠小游戲完整示例【附源碼下載】
這篇文章主要介紹了Java實現(xiàn)的打地鼠小游戲,結合完整實例形式分析了Java多線程操作及鍵盤按鍵響應實現(xiàn)的打地鼠游戲功能相關操作技巧,需要的朋友可以參考下2018-07-07
Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)
在Java中,要判斷文件或文件夾是否存在,并根據(jù)判斷結果來執(zhí)行創(chuàng)建或刪除操作,你可以使用java.io.File類或者java.nio.file包中的類,本文介紹Java判斷文件或者文件夾是否存在,不存在創(chuàng)建,存在刪除,感興趣的朋友一起看看吧2025-03-03
Java畢業(yè)設計實戰(zhàn)之生活旅行分享平臺的實現(xiàn)
這是一個使用了java+Springboot+JPA+Jsp+Html+js+Ajax+maven+mysql開發(fā)的生活旅行分享平臺,是一個畢業(yè)設計的實戰(zhàn)練習,具有分享發(fā)布平臺該有的所有功能,感興趣的朋友快來看看吧2022-02-02

