客戶端負載均衡就是服務端負載均衡而言的。
服務端負載均衡:就是傳統的nginx的方式,用nginx做負載均衡,我們稱之為服務端負載均衡。
這種負載均衡,我們稱為伺服器負載均衡,它的特點是,就是呼叫的客戶端不知道具體是哪乙個server提供的服務,他也不關心,反正請求傳送給nginx,nginx再將請求**給伺服器,客戶端只需要記住nginx的位址即可。
客戶端負載均衡則是另外一種情形:
客戶端負載均衡,就是呼叫客戶端本身所知道所有的server的詳細資訊的,當需要呼叫server上的介面時,客戶端從自身所維護的server列表中,根據提前配置好的負載均衡策略,自己挑選乙個server來呼叫,此時,客戶端知道他所呼叫的是哪乙個server。
在resttemplate中,要想使用負載均衡功能,只需要在resttemplate例項上新增乙個@loadbalanced註解即可,此時,resttemplate就會自動具備負載均衡功能,這就是客戶端負載均衡。
負載均衡的原理:
在spring coloud中,實現負載均衡很容易,只需要新增上@loadbalanced註解即可,只要新增了該註解,乙個原本普普通通的做rest請求的工具,resttemplate就具備了負載均衡的功能,這是怎麼實現的呢?
整體上來說,這個功能的實現主要分為三個核心點:
1、從eureka client本地快取的服務註冊資訊中,選擇乙個可以呼叫的服務
2、根據 1 中所選的服務,重構url位址
3、將 1、 2、的功能嵌入到resttemplate中
在resttemplate例項上新增@loadbalanced註解,我們進入註解中看一下
它的介紹,標記要配置為使用loadbalancerclient的restemplate,也就是說,凡是加了@loadbalanced註解的bean會自動配置乙個loadbalancerclient,那loadbalancerclient又是什麼呢?我們來搜尋一下
我們可以看到,這個介面中有三個方法,execute是要執行的方法,那麼reconstructuri這個方法,就是要重構uri,就是把resttemplate.getforobject(「http://provider/hello」, string.class);這個位址給你重構成為乙個真正可以呼叫的位址,將provider替換成ip:埠號;
另外,我們看到這個介面繼承了serviceinstancechooser介面;
那麼choose方法就是選擇可以呼叫的例項,返回了乙個serviceinstance,書不是感覺很熟悉
ribbon客戶端負載均衡
ribbon會儲存註冊中心應用,然後定時去更新,而不是每次都要先訪問註冊中心,再訪問應用 依賴org.springframework.cloud spring cloud starter netflix ribbon 複製 配置resttemplate bean是乙個方法級別上的註解,主要用在 co...
客戶端負載均衡 Ribbon
1.集群user server c v 改東西 user server pom.xml user server 3001artifactid user server 3001name parent pm.xml user server 3001module eureka client service...
客戶端負載均衡Ribbon Hystrix斷路器
1.ribbon概念 負載均衡 ribbon是netflix發布的開源專案,主要功能是提供客戶端的軟體負載均衡演算法,是乙個基於http和tcp的客戶端負載均衡工具。ribbon主要與resttemplate物件配合起來使用,ribbon會自動化配置resttemplate物件,通過 loadbal...