Spring-cloud微服務實戰(zhàn)【五】:負載均衡ribbon

在實戰(zhàn)三中,我們曾說到,我們需要一種機制,可以在訪問服務的時候不需要關心IP,并且還能提供類似Nginx的負載均衡的功能,其實在上一篇文章中我們已經(jīng)使用過spring-cloud的負載均衡功能了,還記得我們在配置restTemplate的時候加的注解嗎?

file

@LoadBalanced就是告訴restTemplate,需要使用負載均衡,并且,在eureka-client消費者消費服務的時候,只能通過@LoadBalanced才能使用eureka-server中的服務application-name來訪問服務.eureka中的負載均衡,是借助ribbon來實現(xiàn)的,讓我們來試一試.老規(guī)矩,通過前面這么多次的實踐,我們會發(fā)現(xiàn)使用spring-cloud的功能一般有三個步驟:
1.配置maven依賴
2.配置application.properties
3.進行代碼編碼.
首先配置maven:

file

但其實如果使用了eureka,就不需要這個步驟了,因為eureka中已經(jīng)內(nèi)置了ribbon了:

file

默認情況下,@LoadBalanced的負載均衡策略是輪詢,我們使用producer修改代碼,啟動三個微服務注冊到eureka,然后在consumer來驗證一下:

file

可以看到,我們已經(jīng)注冊了三個producer微服務,然后使用consumer來訪問一下:

file

再刷新一下:

file

再刷新一下:

file

再刷新一下:

file

可以看到,默認情況下采用的是輪詢的方式,那么如果我們要自定義負載均衡策略能實現(xiàn)嗎?答案當然是可以,自定義負載策略分為兩種:
1.全局負載均衡策略
2.針對某個微服務定制個性化的負載均衡策略

全局負載均衡

要實現(xiàn)全局的負載均衡策略很簡單,我們只需要如下代碼即可:

file

然后重啟consumer刷新試一試,可以發(fā)現(xiàn),采用的是隨機的負載均衡策略.

個性化的負載均衡策略

個性化的負載均衡策略相對于全局負載均衡策略更復雜一些,首先,需要在spring掃描不到的位置,比如和主類不在同一個目錄下:

file

然后修改啟動類:

file

如果有多個需要自定義的服務,可以使用@RibbonClients用數(shù)組來處理.

那么,如果脫離eureka來使用ribbon還能使用嗎?答案當然是可以的,只不過相對而言更復雜,我們需要自己編寫代碼來實現(xiàn),比如:

file

介紹完了ribbon,下一篇文章,我們會介紹feign接口服務,敬請期待.

本文的github地址

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容