做網(wǎng)站需要用什么開發(fā)軟件福州百度分公司
目錄
一、負(fù)載均衡策略
1.1 負(fù)載均衡策略介紹
1.2 自定義負(fù)載均衡策略
二、饑餓加載
(筆記整理自bilibili黑馬程序員課程)
一、負(fù)載均衡策略
1.1 負(fù)載均衡策略介紹
負(fù)載均衡的規(guī)則都定義在IRule接口中,而IRule有很多不同的實(shí)現(xiàn)類:
?不同規(guī)則的含義如下:
內(nèi)置負(fù)載均衡規(guī)則類 | 規(guī)則描述 |
---|---|
RoundRobinRule | 簡單輪詢服務(wù)列表來選擇服務(wù)器。它是Ribbon默認(rèn)的負(fù)載均衡規(guī)則。 |
AvailabilityFilteringRule | 對以下兩種服務(wù)器進(jìn)行忽略: (1)在默認(rèn)情況下,這臺服務(wù)器如果3次連接失敗,這臺服務(wù)器就會被設(shè)置為“短路”狀態(tài)。短路狀態(tài)將持續(xù)30秒,如果再次連接失敗,短路的持續(xù)時間就會幾何級地增加。 (2)并發(fā)數(shù)過高的服務(wù)器。如果一個服務(wù)器的并發(fā)連接數(shù)過高,配置了AvailabilityFilteringRule規(guī)則的客戶端也會將其忽略。并發(fā)連接數(shù)的上限,可以由客戶端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit屬性進(jìn)行配置。 |
WeightedResponseTimeRule | 為每一個服務(wù)器賦予一個權(quán)重值。服務(wù)器響應(yīng)時間越長,這個服務(wù)器的權(quán)重就越小。這個規(guī)則會隨機(jī)選擇服務(wù)器,這個權(quán)重值會影響服務(wù)器的選擇。 |
ZoneAvoidanceRule | 以區(qū)域可用的服務(wù)器為基礎(chǔ)進(jìn)行服務(wù)器的選擇。使用Zone對服務(wù)器進(jìn)行分類,這個Zone可以理解為一個機(jī)房、一個機(jī)架等。而后再對Zone內(nèi)的多個服務(wù)做輪詢。 |
BestAvailableRule | 忽略那些短路的服務(wù)器,并選擇并發(fā)數(shù)較低的服務(wù)器。 |
RandomRule | 隨機(jī)選擇一個可用的服務(wù)器。 |
RetryRule | 重試機(jī)制的選擇邏輯 |
默認(rèn)的實(shí)現(xiàn)就是ZoneAvoidanceRule,是一種輪詢方案
1.2 自定義負(fù)載均衡策略
通過定義IRule實(shí)現(xiàn)可以修改負(fù)載均衡規(guī)則,有兩種方式:
代碼方式:在order-service中的OrderApplication類中,定義一個新的IRule,這種方式是全局的,配置后需要重新打包編譯
@Bean
public IRule randomRule(){
? ? return new RandomRule();
}
?配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改規(guī)則,這種方式是局部的,配置后不需要重新打包編譯
userservice: # 給某個微服務(wù)配置負(fù)載均衡規(guī)則,這里是userservice服務(wù)
? ribbon:
? ? NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 負(fù)載均衡規(guī)則?
?注意,一般用默認(rèn)的負(fù)載均衡規(guī)則,不做修改。
二、饑餓加載
Ribbon默認(rèn)是采用懶加載,即第一次訪問時才會去創(chuàng)建LoadBalanceClient,請求時間會很長。
而饑餓加載則會在項(xiàng)目啟動時創(chuàng)建,降低第一次訪問的耗時,通過下面配置開啟饑餓加載:
ribbon:eager-load:enabled: true #饑餓加載clients: //clients是一個列表- uerservice #指定對userservice這個服務(wù)饑餓加載