Spring Cloud Ribbon實現負載均衡

2021-09-05 20:10:08 字數 2912 閱讀 6205

之前文章

spring cloud 服務註冊和發現

spring cloud 服務端高可用

負載均衡在系統架構中是乙個非常重要的角色,在前面大型**架構學習總結中,可以看到,高可用,伸縮性,效能幾個架構要素中,負載均衡都有著很重要的地位,是系統壓力緩解,系統擴容的重要手段之一。

一般來說,我們講的負載均衡都是講服務端負載均衡(不論硬負載還是軟負載),比較常見的通過nginx反向**來實現負載均衡,例如下面圖中所示

這次我們所用到的ribbon其實就是一種客戶端負載均衡,與服務端負載均衡不同的是,客戶端負載均衡不是通過乙個統一的均衡器(nginx)去均衡的,而是每乙個客戶端都維護著各自的負載均衡實現,例如下圖所示

例項1

server.port=1115

例項2
server.port=1114

提供的服務介面
@restcontroller

public

class

hellocontroller

}

consumer2的兩個例項已經準備好了,暴露出來的介面,訪問會列印出各自對應的埠資訊,接下來我們就通過ribbon來測試負載均衡

}這裡可以看到,就是在之前用到的resttemplate物件加上**@loadbalanced**註解就達到將ribbon引入的目的了

@restcontroller

public class hellocontroller

}

接下來我們分別啟動consumer2的兩個例項(對應實際中的兩台伺服器),以及乙個包含ribbon的comsumer3例項。啟動完成後服務列表如下

訪問http://localhost:1116/hello,我們通過瀏覽器訪問5次

consumer2 (1115)例項控制台輸出資訊

2018-12-30 23:00:17.557  info 11468 --- [nio-1115-exec-3] c.d.eureka_client1.hellocontroller       : /hello host:localhost1server_idconsumer2埠:1115

2018-12-30 23:00:22.898 info 11468 --- [nio-1115-exec-5] c.d.eureka_client1.hellocontroller : /hello host:localhost1server_idconsumer2埠:1115

2018-12-30 23:00:29.584 info 11468 --- [nio-1115-exec-7] c.d.eureka_client1.hellocontroller : /hello host:localhost1server_idconsumer2埠:1115

​ consumer2 (1114)例項控制台輸出資訊

2018-12-30 23:00:25.757  info 12652 --- [nio-1114-exec-3] c.d.eureka_client1.hellocontroller       : /hello host:localhost1server_idconsumer2埠:1114

2018-12-30 23:00:30.086 info 12652 --- [nio-1114-exec-4] c.d.eureka_client1.hellocontroller : /hello host:localhost1server_idconsumer2埠:1114

這裡可以看到,consumer2 (1115)例項被訪問了3次, consumer2 (1114)被訪問了2次,由於我們沒有配置訪問策略,所以預設用的輪詢策略,也就證明ribbon起到負載均衡的作用了。

這裡對上面說的策略補充一下,ribbon中主要有以下幾種策略

eureka 整合ribbon後,通過resttemplate以服務名訪問的方式呼叫就能實現負載均衡,我們不需要關注各應用的ip、埠,這些資訊ribbon都能從eureka server的服務列表獲取到,在此基礎上,實現ribbon還是挺方便的。

springcloud(Ribbon負載均衡)

搭建步驟 1.使用者服務的集群 2.訂單服務整合ribbon 2.1.匯入ribbon的依賴 2.2.在resttemplate的bean定義方法上加上 loadbalanced註解 2.3.把訂單的controller向使用者發起呼叫的resttemplate的url使用服務名呼叫,如 http ...

SpringCloud Ribbon 負載均衡

ribbon eureka都是netflix旗下的專案,eureka client內建了ribbon,用於實現負載均衡,預設使用輪詢。輪詢是最簡單的負載均衡演算法,每次呼叫服務拿到節點列表後,從前往後依次輪詢類表中的每個節點,誰空閒就呼叫誰。測試時往往都是呼叫列表的第乙個節點,因為重新整理的手速遠遠...

四 SpringCloud Ribbon負載均衡

在服務消費者 user consumer 的啟動類中的resttemplate類加上 loadbalanced註解 enablediscoveryclient public class bean loadbalanced public resttemplate resttemplate 修改dao,...