Spring Cloud如何切換Ribbon負(fù)載均衡模式
這篇文章主要介紹了Spring Cloud如何切換Ribbon負(fù)載均衡模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
Spring Cloud Ribbon是一個(gè)基于HTTP和TCP的客戶端負(fù)載均衡工具,它基于Netflix Ribbon實(shí)現(xiàn)。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請(qǐng)求自動(dòng)轉(zhuǎn)換成客戶端負(fù)載均衡的服務(wù)調(diào)用。Spring Cloud Ribbon雖然只是一個(gè)工具類框架,它不像服務(wù)注冊中心、配置中心、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í)際上都是通過Ribbon來實(shí)現(xiàn)的,包括后續(xù)我們將要介紹的Feign,它也是基于Ribbon實(shí)現(xiàn)的工具。所以,對(duì)Spring Cloud Ribbon的理解和使用,對(duì)于我們使用Spring Cloud來構(gòu)建微服務(wù)非常重要。
Ribbon為我們提供了很多負(fù)載均衡算法,例如輪詢、隨機(jī)等等,我們也可以自己定義算法,那么Ribbon默認(rèn)使用哪種模式呢,我們可以測試一下,我這里啟動(dòng)了三個(gè)服務(wù)提供者,一個(gè)服務(wù)消費(fèi)者,如下圖所示
測試類
@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)行測試類
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ī)的了
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringCloud Ribbon負(fù)載均衡實(shí)例解析
- 詳解SpringCloud Ribbon 負(fù)載均衡通過服務(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隨機(jī)抽取指定范圍內(nèi)不重復(fù)的n個(gè)數(shù)
這篇文章主要為大家詳細(xì)介紹了java隨機(jī)抽取指定范圍內(nèi)不重復(fù)的n個(gè)數(shù),感興趣的小伙伴們可以參考一下2016-02-02java常見報(bào)錯(cuò):Array?Out?of?Bounds兩種解決辦法
這篇文章主要給大家介紹了關(guān)于java報(bào)錯(cuò)Array?Out?of?Bounds的兩種解決辦法,Array out of bounds錯(cuò)誤表示你嘗試訪問數(shù)組中不存在的索引,即索引小于零或者大于等于數(shù)組的大小,文中通過代碼將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08java實(shí)現(xiàn)word文件轉(zhuǎn)html文件
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)word文件轉(zhuǎn)html文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Springboot從配置文件properties讀取字符串亂碼的解決
這篇文章主要介紹了Springboot從配置文件properties讀取字符串亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02解決IDEA集成Docker插件后出現(xiàn)日志亂碼的問題
這篇文章主要介紹了解決IDEA集成Docker插件后出現(xiàn)日志亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11