日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何實(shí)施異構(gòu)服務(wù)器的負(fù)載均衡及過載保護(hù)?

[[171825]]

成都創(chuàng)新互聯(lián)公司于2013年成立,先為鎮(zhèn)原等服務(wù)建站,鎮(zhèn)原等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鎮(zhèn)原企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

零、需求緣起

***篇文章“一分鐘了解負(fù)載均衡”和大家share了互聯(lián)網(wǎng)架構(gòu)中反向代理層、站點(diǎn)層、服務(wù)層、數(shù)據(jù)層的常用負(fù)載均衡方法。

第二篇文章“l(fā)vs為何不能完全代替DNS輪詢”和大家share了互聯(lián)網(wǎng)接入層負(fù)載均衡需要解決的問題及架構(gòu)演進(jìn)。

在這兩篇文章中,都強(qiáng)調(diào)了“負(fù)載均衡是指,將請(qǐng)求/數(shù)據(jù)【均勻】分?jǐn)偟蕉鄠€(gè)操作單元上執(zhí)行,負(fù)載均衡的關(guān)鍵在于【均勻】”。

然而,后端的service有可能部署在硬件條件不同的服務(wù)器上:

1)如果對(duì)標(biāo)***配的服務(wù)器“均勻”分?jǐn)傌?fù)載,高配的服務(wù)器的利用率不足;

2)如果對(duì)標(biāo)***配的服務(wù)器“均勻”分?jǐn)傌?fù)載,低配的服務(wù)器可能會(huì)扛不住;

能否根據(jù)異構(gòu)服務(wù)器的處理能力來動(dòng)態(tài)、自適應(yīng)進(jìn)行負(fù)載均衡及過載保護(hù),是本文要討論的問題。

一、service層的負(fù)載均衡通常是怎么做的

“一分鐘了解負(fù)載均衡”中提到,service層的負(fù)載均衡,一般是通過service連接池來實(shí)現(xiàn)的,調(diào)用方連接池會(huì)建立與下游服務(wù)多個(gè)連接,每次請(qǐng)求“隨機(jī)”獲取連接,來保證service訪問的均衡性。

“RPC-client實(shí)現(xiàn)細(xì)節(jié)”中提到,負(fù)載均衡、故障轉(zhuǎn)移、超時(shí)處理等細(xì)節(jié)也都是通過調(diào)用方連接池來實(shí)現(xiàn)的。

這個(gè)調(diào)用方連接池能否實(shí)現(xiàn),根據(jù)service的處理能力,動(dòng)態(tài)+自適應(yīng)的進(jìn)行負(fù)載調(diào)度呢?

二、通過“靜態(tài)權(quán)重”標(biāo)識(shí)service的處理能力

調(diào)用方通過連接池組件訪問下游service,通常采用“隨機(jī)”的方式返回連接,以保證下游service訪問的均衡性。

要打破這個(gè)隨機(jī)性,最容易想到的方法,只要為每個(gè)下游service設(shè)置一個(gè)“權(quán)重”,代表service的處理能力,來調(diào)整訪問到每個(gè)service的概率,例如:

假設(shè)service-ip1,service-ip2,service-ip3的處理能力相同,可以設(shè)置weight1=1,weight2=1,weight3=1,這樣三個(gè)service連接被獲取到的概率分別就是1/3,1/3,1/3,能夠保證均衡訪問。

假設(shè)service-ip1的處理能力是service-ip2,service-ip3的處理能力的2倍,可以設(shè)置weight1=2,weight2=1,weight3=1,這樣三個(gè)service連接被獲取到的概率分別就是2/4,1/4,1/4,能夠保證處理能力強(qiáng)的service分別到等比的流量,不至于資源浪費(fèi)。

使用nginx做反向代理與負(fù)載均衡,就有類似的機(jī)制。

這個(gè)方案的優(yōu)點(diǎn)是:簡單,能夠快速的實(shí)現(xiàn)異構(gòu)服務(wù)器的負(fù)載均衡。

缺點(diǎn)也很明顯:這個(gè)權(quán)重是固定的,無法自適應(yīng)動(dòng)態(tài)調(diào)整,而很多時(shí)候,服務(wù)器的處理能力是很難用一個(gè)固定的數(shù)值量化。

三、通過“動(dòng)態(tài)權(quán)重”標(biāo)識(shí)service的處理能力

提問:通過什么來標(biāo)識(shí)一個(gè)service的處理能力呢?

回答:其實(shí)一個(gè)service能不能處理得過來,能不能響應(yīng)得過來,應(yīng)該由調(diào)用方說了算。調(diào)用服務(wù),快速處理了,處理能力跟得上;調(diào)用服務(wù),處理超時(shí)了,處理能力很有可能跟不上了。

動(dòng)態(tài)權(quán)重設(shè)計(jì)

1.用一個(gè)動(dòng)態(tài)權(quán)重來標(biāo)識(shí)每個(gè)service的處理能力,默認(rèn)初始處理能力相同,即分配給每個(gè)service的概率相等;

2.每當(dāng)service成功處理一個(gè)請(qǐng)求,認(rèn)為service處理能力足夠,權(quán)重動(dòng)態(tài)+1

3.每當(dāng)service超時(shí)處理一個(gè)請(qǐng)求,認(rèn)為service處理能力可能要跟不上了,權(quán)重動(dòng)態(tài)-10(權(quán)重下降會(huì)更快)

4.為了方便權(quán)重的處理,可以把權(quán)重的范圍限定為[0, 100],把權(quán)重的初始值設(shè)為60分

舉例說明:

假設(shè)service-ip1,service-ip2,service-ip3的動(dòng)態(tài)權(quán)重初始值weight1=weight2=weight3=60,剛開始時(shí),請(qǐng)求分配給這3臺(tái)service的概率分別是60/180,60/180,60/180,即負(fù)載是均衡的。

隨著時(shí)間的推移,處理能力強(qiáng)的service成功處理的請(qǐng)求越來越多,處理能力弱的service偶爾有超時(shí),隨著動(dòng)態(tài)權(quán)重的增減,權(quán)重可能變化成了weight1=100,weight2=60,weight3=40,那么此時(shí),請(qǐng)求分配給這3臺(tái)service的概率分別是100/200,60/200,40/200,即處理能力強(qiáng)的service會(huì)被分配到更多的流量。

四、過載保護(hù)

提問:什么是過載保護(hù)?

圖示:無過載保護(hù)的負(fù)載與處理能力圖(會(huì)掉底)

回答:互聯(lián)網(wǎng)軟件架構(gòu)設(shè)計(jì)中所指的過載保護(hù),是指當(dāng)系統(tǒng)負(fù)載超過一個(gè)service的處理能力時(shí),如果service不進(jìn)行自我保護(hù),可能導(dǎo)致對(duì)外呈現(xiàn)處理能力為0,且不能自動(dòng)恢復(fù)的現(xiàn)象。而service的過載保護(hù),是指即使系統(tǒng)負(fù)載超過一個(gè)service的處理能力,service讓能保證對(duì)外提供有損的穩(wěn)定服務(wù)。

圖示:有過載保護(hù)的負(fù)載與處理能力圖(不會(huì)掉底)

提問:如何進(jìn)行過載保護(hù)?

回答:最簡易的方式,服務(wù)端設(shè)定一個(gè)負(fù)載閾值,超過這個(gè)閾值的請(qǐng)求壓過來,全部拋棄。這個(gè)方式不是特別優(yōu)雅。

五、如何借助“動(dòng)態(tài)權(quán)重”來實(shí)施過載保護(hù)

動(dòng)態(tài)權(quán)重是用來標(biāo)識(shí)每個(gè)service的處理能力的一個(gè)值,它是RPC-client客戶端連接池層面的一個(gè)東東。服務(wù)端處理超時(shí),客戶端RPC-client連接池都能夠知道,這里只要實(shí)施一些策略,就能夠?qū)Α耙伤七^載”的服務(wù)器進(jìn)行降壓,而不用服務(wù)器“拋棄請(qǐng)求”這么粗暴的實(shí)施過載保護(hù)。

應(yīng)該實(shí)施一些什么樣的策略呢,例如:

1.如果某一個(gè)service的連接上,連續(xù)3個(gè)請(qǐng)求都超時(shí),即連續(xù)-10分三次,客戶端就可以認(rèn)為,服務(wù)器慢慢的要處理不過來了,得給這個(gè)service緩一小口氣,于是設(shè)定策略:接下來的若干時(shí)間內(nèi),例如1秒(或者接下來的若干個(gè)請(qǐng)求),請(qǐng)求不再分配給這個(gè)service;

2.如果某一個(gè)service的動(dòng)態(tài)權(quán)重,降為了0(像連續(xù)10個(gè)請(qǐng)求超時(shí),中間休息了3次還超時(shí)),客戶端就可以認(rèn)為,服務(wù)器完全處理不過來了,得給這個(gè)service喘一大口氣,于是設(shè)定策略:接下來的若干時(shí)間內(nèi),例如1分鐘(為什么是1分鐘,根據(jù)經(jīng)驗(yàn),此時(shí)service一般在發(fā)生fullGC,差不多1分鐘能回過神來),請(qǐng)求不再分配給這個(gè)service;

3.可以有更復(fù)雜的保護(hù)策略…

這樣的話,不但能借助“動(dòng)態(tài)權(quán)重”來實(shí)施動(dòng)態(tài)自適應(yīng)的異構(gòu)服務(wù)器負(fù)載均衡,還能在客戶端層面更優(yōu)雅的實(shí)施過載保護(hù),在某個(gè)下游service快要響應(yīng)不過來的時(shí)候,給其喘息的機(jī)會(huì)。

需要注意的是:要防止客戶端的過載保護(hù)引起service的雪崩,如果“整體負(fù)載”已經(jīng)超過了“service集群”的處理能力,怎么轉(zhuǎn)移請(qǐng)求也是處理不過來的,還得通過拋棄請(qǐng)求來實(shí)施自我保護(hù)。

六、總結(jié)

1.service的負(fù)載均衡、故障轉(zhuǎn)移、超時(shí)處理通常是RPC-client連接池層面來實(shí)施的

2.異構(gòu)服務(wù)器負(fù)載均衡,最簡單的方式是靜態(tài)權(quán)重法,缺點(diǎn)是無法自適應(yīng)動(dòng)態(tài)調(diào)整

3.動(dòng)態(tài)權(quán)重法,可以動(dòng)態(tài)的根據(jù)service的處理能力來分配負(fù)載,需要有連接池層面的微小改動(dòng)

4.過載保護(hù),是在負(fù)載過高時(shí),service為了保護(hù)自己,保證一定處理能力的一種自救方法

5.動(dòng)態(tài)權(quán)重法,還可以用做service的過載保護(hù)

文章轉(zhuǎn)載自微信公眾號(hào)“架構(gòu)師之路”


網(wǎng)頁標(biāo)題:如何實(shí)施異構(gòu)服務(wù)器的負(fù)載均衡及過載保護(hù)?
URL地址:http://www.5511xx.com/article/djheogd.html