負載均衡即是將使用者的請求平攤的分配到多個服務上,從而達到高可用的目的。
一般的負載均衡應用採取的是收集全部請求進行集中式的分配,而ribbon是從服務中心獲取位址,為消費者挑選合適的物件,屬於程序式的負載均衡是相對於消費者,從消費者出發的。
1.ribbon使用
ribbon作為乙個軟負載均衡,大部分情況都是和其他應用進行組合,本次採用eureka配置。
ribbon本身整合在netflix中,所以有netflix的jar時候不需要匯入額外的ribbon依賴,避免造成依賴版本衝突。
一般ribbon是和template配合使用,首先在配置類中新增loadbalance註解。
@configuration在controller中進行測試,用resttemplate測試。public
class
/*** 注入resttemplate,請用請求rest介面
* @return
*/@bean
//標註此註解後,resttemplate就具有了客戶端負載均衡能力
//負載均衡技術依賴於的是ribbon元件~
//resttemplate都塞入乙個loadbalancerinterceptor 讓其具備有負載均衡的能力
@loadbalanced
public
resttemplate resttemplate()
}
@restcontroller多次請求此頁面的時候,會交替的選擇兩個集群,這個涉及到負載均衡的規則下面介紹,@slf4j
public
class
ordercontroller
}
3.負載均衡。
ribbon涉及到的負載均衡策略有:
預設情況下是用的輪詢模式,即每訪問一次更換乙個服務提供者,輪詢著採用。
同時自己也可以進行自定義模式,但自己建立的配置類需要注意檔案的位置不能和啟動類平級或在其子包下。可以採用如下放置。
附上改變策略模式的配置類,這裡換成了隨機策略,即每次選擇都是隨機的服務提供者。
@configuration當然配置類也需要分配給容器管理,最後也是需要在啟動類中進行說明。public
class
myselfrule
}
@enableeurekaclient輪詢演算法等都是有原始碼可分析的,有興趣可自行搜尋原始碼分析。@ribbonclient(name = "cloud-payment-service",configuration = myselfrule.class
)public
class
ordermain80
}
本篇所有**均在github:
SpringCloud之三Ribbon 負載均衡
ribbon是乙個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。feign預設整合了ribbon。引入相關依賴 啟動類 123 4567 891011 1213 1415 1617 1819 2021 2223 24 import org.springframework.cloud.cli...
SpringCloud之三Ribbon 負載均衡
ribbon是乙個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。feign預設整合了ribbon。引入相關依賴 啟動類 123 4567 891011 1213 1415 1617 1819 2021 2223 24 import org.springframework.cloud.cli...
SpringCloud之三Ribbon 負載均衡
ribbon是乙個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。feign預設整合了ribbon。引入相關依賴 啟動類 123 4567 891011 1213 1415 1617 1819 2021 2223 24 import org.springframework.cloud.cli...