負(fù)載均衡的面對(duì)多個(gè)相同的服務(wù)的時(shí)候,我們選擇一定的策略去選擇一個(gè)服務(wù)進(jìn)行
負(fù)載均衡流程
?Ribbon結(jié)構(gòu)組成
?負(fù)載均衡策略
- RoundRobinRule:簡(jiǎn)單的輪詢服務(wù)列表來(lái)選擇服務(wù)器
- AvailabilityFilteringRule
對(duì)兩種情況服務(wù)器進(jìn)行忽略:
1.在默認(rèn)情況下,這臺(tái)服務(wù)器如果3次連接失敗,這臺(tái)服務(wù)器就會(huì)被設(shè)置為“短路狀態(tài)”,短路狀態(tài)將持續(xù)30秒,如果再次連接失敗,短路持續(xù)時(shí)間將會(huì)幾何級(jí)的增加
2.并發(fā)數(shù)過(guò)高的服務(wù)器,如果一個(gè)服務(wù)器的并發(fā)連接數(shù)過(guò)高,配置了AvailabilityFilteringRule規(guī)則的客戶端也會(huì)將其忽略。并發(fā)連接數(shù)的上限,可以由客戶端的
<clientName><clientConfigNameSpace>.ActiveConnectionsLimit屬性進(jìn)行配置。
- WeightedResponseTimeRule:為每一個(gè)服務(wù)器賦予一個(gè)權(quán)重值,服務(wù)器響應(yīng)時(shí)間越長(zhǎng),這個(gè)服務(wù)器的權(quán)重就越小,權(quán)重值越大,被訪問(wèn)的概率也就越大
- ZoneAvoidanceRule(默認(rèn)的策略):以區(qū)域可用的服務(wù)器為基礎(chǔ)進(jìn)行服務(wù)器的選擇,使用Zone對(duì)服務(wù)器進(jìn)行分類,這個(gè)Zone可以理解為一個(gè)機(jī)房、一個(gè)機(jī)架等,而后對(duì)Zone內(nèi)的多個(gè)服務(wù)做輪詢
- BestAvailableRule:忽略那些短路的服務(wù)器,并選擇并發(fā)數(shù)較低的服務(wù)器
- RandomRule:隨機(jī)選擇一個(gè)可用的服務(wù)器
- RetryRule:重試機(jī)制的選擇邏輯
修改負(fù)載均衡規(guī)則
1.代碼方式:在A服務(wù)的啟動(dòng)類中定義一個(gè)新的IRule
@Bean
public IRule randomRule() {
return new RandomRule();
}
2.配置文件方式:在A服務(wù)中的application.yml文件中,添加新的配置也可以進(jìn)行修改
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 負(fù)載均衡規(guī)則
饑餓加載:
? ? ? ?Ribbon默認(rèn)是采用的是懶加載,即第一次訪問(wèn)時(shí)才會(huì)創(chuàng)建LoadBalanceClient,請(qǐng)求時(shí)間較長(zhǎng),而饑餓加載則會(huì)在項(xiàng)目啟動(dòng)時(shí)創(chuàng)建,降低第一次訪問(wèn)的耗時(shí),我們可以通過(guò)下面配置開(kāi)啟饑餓加載
ribbon:
eager-load:
enabled: true # 開(kāi)啟饑餓加載
clients: # 指定饑餓加載的服務(wù)名稱
-***,
-***
總結(jié):
1.Ribbon負(fù)載均衡規(guī)則
- 規(guī)則接口是IRule
- 默認(rèn)實(shí)現(xiàn)的是ZoneAvoidanceRule,根據(jù)zone選擇服務(wù)列表,然后輪詢
2.負(fù)載均衡自定義方式文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-656766.html
- 代碼方式:配置靈活,但是修改時(shí)需要重新打包發(fā)布
- 配置方式:直觀、方便,無(wú)需重新打包發(fā)布,但是無(wú)法做到全局配置
3.饑餓加載文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656766.html
- 開(kāi)啟饑餓加載
- 指定饑餓加載的微服務(wù)名稱
到了這里,關(guān)于微服務(wù)-Ribbon(負(fù)載均衡)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!