Spring-cloud微服務實戰【五】:負載均衡ribbon

在實戰三中,咱們曾說到,咱們須要一種機制,能夠在訪問服務的時候不須要關心IP,而且還能提供相似Nginx的負載均衡的功能,其實在上一篇文章中咱們已經使用過spring-cloud的負載均衡功能了,還記得咱們在配置restTemplate的時候加的註解嗎?
filegit

@LoadBalanced就是告訴restTemplate,須要使用負載均衡,而且,在eureka-client消費者消費服務的時候,只能經過@LoadBalanced才能使用eureka-server中的服務application-name來訪問服務.eureka中的負載均衡,是藉助ribbon來實現的,讓咱們來試一試.老規矩,經過前面這麼屢次的實踐,咱們會發現使用spring-cloud的功能通常有三個步驟:
1.配置maven依賴
2.配置application.properties
3.進行代碼編碼.
首先配置maven:
filegithub

但其實若是使用了eureka,就不須要這個步驟了,由於eureka中已經內置了ribbon了:
filespring

默認狀況下,@LoadBalanced的負載均衡策略是輪詢,咱們使用producer修改代碼,啓動三個微服務註冊到eureka,而後在consumer來驗證一下:
file數組

能夠看到,咱們已經註冊了三個producer微服務,而後使用consumer來訪問一下:
fileapp

再刷新一下:
file負載均衡

再刷新一下:
filemaven

再刷新一下:
file微服務

能夠看到,默認狀況下采用的是輪詢的方式,那麼若是咱們要自定義負載均衡策略能實現嗎?答案固然是能夠,自定義負載策略分爲兩種:
1.全局負載均衡策略
2.針對某個微服務定製個性化的負載均衡策略編碼

全局負載均衡

要實現全局的負載均衡策略很簡單,咱們只須要以下代碼便可:
file3d

而後重啓consumer刷新試一試,能夠發現,採用的是隨機的負載均衡策略.

個性化的負載均衡策略

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

而後修改啓動類:
file

若是有多個須要自定義的服務,可使用@RibbonClients用數組來處理.

那麼,若是脫離eureka來使用ribbon還能使用嗎?答案固然是能夠的,只不過相對而言更復雜,咱們須要本身編寫代碼來實現,好比:
file

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

本文的github地址

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索