這篇文章將為大家詳細講解有關Spring Cloud切換Ribbon負載均衡模式的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Spring Cloud Ribbon是一個基于HTTP和TCP的客戶端負載均衡工具,它基于Netflix Ribbon實現。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務的REST模版請求自動轉換成客戶端負載均衡的服務調用。Spring Cloud Ribbon雖然只是一個工具類框架,它不像服務注冊中心、配置中心、API網關那樣需要獨立部署,但是它幾乎存在于每一個Spring Cloud構建的微服務和基礎設施中。因為微服務間的調用,API網關的請求轉發等內容,實際上都是通過Ribbon來實現的,包括后續我們將要介紹的Feign,它也是基于Ribbon實現的工具。所以,對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的實現類}
比如我的配置如下:
service-provider: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
可選擇的模式如下所示,這些都是IRule的實現類
切換為隨機模式的效果是什么樣的呢?修改配置后再次運行測試類
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
可以看出,運行的結果變為隨機的了
關于“Spring Cloud切換Ribbon負載均衡模式的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。