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

測(cè)試類
@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());
}
}
}
輸出結(jié)果
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
可以很明顯的看出這是一個(gè)輪詢的模式,所以可以證明Ribbon默認(rèn)使用輪詢的負(fù)載均衡模式
那么如何切換其負(fù)載均衡模式呢?
只需要在配置文件里配置下面這段(以yml為例):
{服務(wù)提供者名稱}:
ribbon:
NFLoadBalancerRuleClassName: {IRule的實(shí)現(xiàn)類}
比如我的配置如下:
service-provider: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
可選擇的模式如下所示,這些都是IRule的實(shí)現(xiàn)類

切換為隨機(jī)模式的效果是什么樣的呢?修改配置后再次運(yùn)行測(cè)試類
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ùn)行的結(jié)果變?yōu)殡S機(jī)的了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringCloud Ribbon負(fù)載均衡實(shí)例解析
- 詳解SpringCloud Ribbon 負(fù)載均衡通過(guò)服務(wù)器名無(wú)法連接的神坑
- SpringCloud Ribbon 負(fù)載均衡的實(shí)現(xiàn)
- SpringCloud客戶端的負(fù)載均衡Ribbon的實(shí)現(xiàn)
- Spring Cloud Ribbon實(shí)現(xiàn)客戶端負(fù)載均衡的方法
- 詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法
- Spring Cloud 負(fù)載均衡器 Ribbon原理及實(shí)現(xiàn)
- SpringCloud Ribbon負(fù)載均衡代碼實(shí)例
相關(guān)文章
java.net.URL超時(shí)時(shí)間默認(rèn)無(wú)限制問(wèn)題小結(jié)
文章介紹了如何在Java中使用URLConnection或HttpURLConnection設(shè)置連接和讀取超時(shí),以處理網(wǎng)絡(luò)問(wèn)題導(dǎo)致的長(zhǎng)時(shí)間等待,通過(guò)httpstat.us網(wǎng)站可以測(cè)試不同延遲的請(qǐng)求,并演示了如何通過(guò)調(diào)整超時(shí)時(shí)間處理超時(shí)異常,感興趣的朋友一起看看吧2025-02-02
Spring-基于Spring使用自定義注解及Aspect實(shí)現(xiàn)數(shù)據(jù)庫(kù)切換操作
這篇文章主要介紹了Spring-基于Spring使用自定義注解及Aspect實(shí)現(xiàn)數(shù)據(jù)庫(kù)切換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】
這篇文章主要介紹了Java實(shí)現(xiàn)的打地鼠小游戲,結(jié)合完整實(shí)例形式分析了Java多線程操作及鍵盤按鍵響應(yīng)實(shí)現(xiàn)的打地鼠游戲功能相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)
在Java中,要判斷文件或文件夾是否存在,并根據(jù)判斷結(jié)果來(lái)執(zhí)行創(chuàng)建或刪除操作,你可以使用java.io.File類或者java.nio.file包中的類,本文介紹Java判斷文件或者文件夾是否存在,不存在創(chuàng)建,存在刪除,感興趣的朋友一起看看吧2025-03-03
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之生活旅行分享平臺(tái)的實(shí)現(xiàn)
這是一個(gè)使用了java+Springboot+JPA+Jsp+Html+js+Ajax+maven+mysql開(kāi)發(fā)的生活旅行分享平臺(tái),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有分享發(fā)布平臺(tái)該有的所有功能,感興趣的朋友快來(lái)看看吧2022-02-02

