本發(fā)明應(yīng)用于服務(wù)負(fù)載遷移領(lǐng)域,特別是涉及一種負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法。
背景技術(shù):
系統(tǒng)負(fù)載遷移是實(shí)際中經(jīng)常遇到的一種問(wèn)題,負(fù)載遷移策略的選擇直接影響系統(tǒng)的效率,好的遷移策略能夠增加系統(tǒng)的吞吐量,降低用戶(hù)的相應(yīng)時(shí)間,從而提高系統(tǒng)整體的吞吐量。
通常常見(jiàn)的過(guò)載遷移策略有以下幾種:基于目標(biāo)處理機(jī)的選擇策略、基于過(guò)載閾值的設(shè)定策略、過(guò)載遷移整體架構(gòu)策略。這幾種過(guò)載遷移策略各有優(yōu)缺點(diǎn),能夠適應(yīng)不同的應(yīng)用場(chǎng)景。
基于目標(biāo)處理機(jī)的選擇策略簡(jiǎn)單且比較常用的一種策略,其中比較常見(jiàn)的是以下幾種:比如通過(guò)分析任務(wù)的特征并計(jì)算任務(wù)事件次數(shù)的數(shù)學(xué)期望和方差作為可靠性評(píng)價(jià)參數(shù)來(lái)選擇目標(biāo)遷移節(jié)點(diǎn)。將服務(wù)可遷移的目標(biāo)定義為不破壞節(jié)點(diǎn)間的偏序關(guān)系且不產(chǎn)生死鎖的情況下,使得遷移后的服務(wù)執(zhí)行期望最大化,服務(wù)時(shí)間最小化?;趚en虛擬機(jī)內(nèi)存迭代拷貝算法,提出了通過(guò)縮短迭代拷貝的終止時(shí)間來(lái)減少虛擬機(jī)動(dòng)態(tài)遷移所花費(fèi)的時(shí)間,以使任務(wù)遷移時(shí)間最小化。采用首次適應(yīng)算法或最佳適應(yīng)算法找出第一個(gè)符合要求的節(jié)點(diǎn)作為目的節(jié)點(diǎn),提出一種將目錄遷移與目錄復(fù)制相結(jié)合的負(fù)載均衡策略。這幾種方法側(cè)重點(diǎn)在于解決目標(biāo)節(jié)點(diǎn)的選擇問(wèn)題,對(duì)閾值的選擇以及對(duì)遷移節(jié)點(diǎn)的待遷移進(jìn)程的研究稍有欠缺。
基于過(guò)載閾值的設(shè)定策略是基于過(guò)載遷移最基本問(wèn)題即過(guò)載閾值提出來(lái)的。以節(jié)點(diǎn)的下載量和被下載量為基礎(chǔ)提出了推拉結(jié)合的結(jié)構(gòu)化網(wǎng)絡(luò)“熱點(diǎn)”動(dòng)態(tài)遷移策略。將過(guò)載閾值選擇問(wèn)題建模為馬爾可夫決策過(guò)程并根據(jù)最小遷移時(shí)間原則以及最小能耗增加放置原則確定虛擬機(jī)的遷移策略。以文件為粒度在遷入端重建遷出端的相關(guān)狀態(tài)結(jié)構(gòu),并根據(jù)被訪(fǎng)問(wèn)狀態(tài)選擇是否立即響應(yīng)。對(duì)負(fù)載遷移進(jìn)行建模,在遷移過(guò)程中減少網(wǎng)絡(luò)訪(fǎng)問(wèn)次數(shù)、減少全局時(shí)間消耗以及在提高效率的同時(shí)兼顧全局的負(fù)載均衡。利用緩存和鏈路遷移策略,將重載節(jié)點(diǎn)中的剩余負(fù)載向其他輕載節(jié)點(diǎn)轉(zhuǎn)移。在以上方法中,對(duì)過(guò)載閾值進(jìn)行了建模,根據(jù)各自研究背景的不同,選取了不同的閾值設(shè)定策略。
最后一種研究比較多的是過(guò)載遷移實(shí)現(xiàn)框架。有的是借助蟻群算法的思想,提出了一種面向負(fù)載均衡的自主式虛擬機(jī)動(dòng)態(tài)遷移框架。通過(guò)專(zhuān)門(mén)的遷移協(xié)議的實(shí)現(xiàn),以及專(zhuān)門(mén)的軟件模塊的實(shí)現(xiàn)和內(nèi)核修改完成了進(jìn)程遷移?;谧钚』W(wǎng)絡(luò)通信錄的負(fù)載遷移策略,它主要關(guān)注負(fù)載遷移整個(gè)系統(tǒng)架構(gòu)以及各模塊所發(fā)揮的作用。綜上所述,以上所有研究只是關(guān)注于負(fù)載遷移的某個(gè)環(huán)節(jié),并沒(méi)有把各個(gè)環(huán)節(jié)連貫起來(lái),且對(duì)于待遷移服務(wù)的選擇研究較少,故在前述研究的基礎(chǔ)上提出了一種負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明的目的是提供一種負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法,該負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法能夠根據(jù)客戶(hù)端請(qǐng)求的速率自適應(yīng)的改變過(guò)載閾值,并且在待遷移服務(wù)器中待遷移服務(wù)的選擇上提出了一種負(fù)載感知方法,能夠有效的根據(jù)并發(fā)量實(shí)時(shí)調(diào)整各個(gè)服務(wù)器的過(guò)載閾值,并對(duì)于過(guò)載服務(wù)器選擇最佳遷出方案,防止了過(guò)載服務(wù)器的超負(fù)荷工作甚至宕機(jī)。
本發(fā)明為解決公知技術(shù)中存在的技術(shù)問(wèn)題所采取的技術(shù)方案是:
一種面向多類(lèi)型服務(wù)的粒子群優(yōu)化用戶(hù)請(qǐng)求調(diào)度方法,包括以下步驟:
步驟101、初始化變量,開(kāi)始時(shí)首先維護(hù)服務(wù)信息表,系統(tǒng)在處理機(jī)上登記進(jìn)程的pcb信息,當(dāng)服務(wù)器輕載時(shí),d為本地處理機(jī),s為空,此時(shí)系統(tǒng)不存在遷出服務(wù);集群中的所有服務(wù)器向負(fù)載均衡控制模塊發(fā)送服務(wù)狀態(tài)信息,負(fù)載均衡控制模塊協(xié)調(diào)匯總后生成負(fù)載狀態(tài)表信息;具體步驟為:
服務(wù)登記信息表是對(duì)服務(wù)器中正在進(jìn)行的服務(wù)進(jìn)行記錄的一種數(shù)據(jù)結(jié)構(gòu),每個(gè)服務(wù)器節(jié)點(diǎn)維護(hù)一個(gè)服務(wù)登記信息表;上述數(shù)據(jù)結(jié)構(gòu)描述為一個(gè)向量αi(p,d,s,t,pcb);其中i表示集群中的第i個(gè)服務(wù)器,i∈[1,n];p是進(jìn)程標(biāo)識(shí)符,描述了系統(tǒng)中每一個(gè)進(jìn)程的id;d是待遷移進(jìn)程所屬的源主機(jī)id;s是待遷移進(jìn)程所要遷往的目標(biāo)主機(jī)id;t是遷移過(guò)程中的遷移類(lèi)型,如負(fù)載過(guò)重遷移、宕機(jī)遷移;pcb記錄該服務(wù)cpu現(xiàn)場(chǎng)信息、堆棧信息、以及進(jìn)程資源清單等相關(guān)信息,用于在目標(biāo)處理機(jī)對(duì)遷移服務(wù)進(jìn)行恢復(fù);
系統(tǒng)負(fù)載狀態(tài)表是由當(dāng)前集群系統(tǒng)中所有服務(wù)器共同維護(hù)的,主要用于描述系統(tǒng)中各臺(tái)服務(wù)器的忙碌程度;系統(tǒng)狀態(tài)表用一個(gè)向量β(n,l,c)來(lái)表示;其中n表示為處理機(jī)的id;
n∈[s1,s2,s3,...,sn]
l是當(dāng)前時(shí)刻t服務(wù)器i的負(fù)載值,l詳細(xì)描述了當(dāng)前服務(wù)器中所有節(jié)點(diǎn)的閑忙程度以及可利用狀態(tài);
其中
c代表當(dāng)前處理機(jī)的狀態(tài),其中l(wèi)o表示當(dāng)前系統(tǒng)負(fù)載均值,當(dāng)li大于lo時(shí),當(dāng)前服務(wù)器為重載,標(biāo)記為w;當(dāng)li小于等于lo時(shí),表示為輕載服務(wù)器,標(biāo)記為e;當(dāng)服務(wù)器不可用時(shí),標(biāo)記為d。
其中f是跟服務(wù)器性能相關(guān)的權(quán)值,該權(quán)值采用加權(quán)集合平均數(shù)計(jì)算得到;
步驟102、運(yùn)行負(fù)載均衡算法:
根據(jù)不同的業(yè)務(wù)場(chǎng)景部署相應(yīng)的負(fù)載均衡算法:具體為:
加權(quán)輪詢(xún)算法,適用于服務(wù)器性能相差不大的集群,任務(wù)隊(duì)列的每個(gè)成員分配任務(wù)的概率相同;
隨機(jī)算法,其中用戶(hù)請(qǐng)求隨機(jī)分發(fā)給后臺(tái)的各個(gè)服務(wù)器,其中,隨機(jī)函數(shù)的選取直接影響算法的好壞;
比率算法,依據(jù)各個(gè)服務(wù)器的負(fù)載能力分配,權(quán)值決定請(qǐng)求的分配概率,綜合考慮了服務(wù)器性能的差異性;
最少連接算法,依據(jù)服務(wù)器連接數(shù)分配用戶(hù)請(qǐng)求,忽略了請(qǐng)求消耗資源的不同,適用于請(qǐng)求類(lèi)型單一的集群;
預(yù)測(cè)模式,基于應(yīng)用程序的行為對(duì)處理器分配工作負(fù)載,從中選擇一臺(tái)服務(wù)器分配用戶(hù)請(qǐng)求;
步驟103、確定是否存在需要強(qiáng)制遷移的處理機(jī):
在系統(tǒng)運(yùn)行過(guò)程中,當(dāng)服務(wù)器自身的物理故障或者是人為原因,導(dǎo)致該服務(wù)器不能夠正常提供服務(wù),此時(shí)必須把用戶(hù)所有的請(qǐng)求強(qiáng)制遷移出去;保證所有的請(qǐng)求在最短時(shí)間內(nèi)遷出;
步驟104、檢查服務(wù)器是否過(guò)載:
在系統(tǒng)運(yùn)行過(guò)程中,定期的監(jiān)測(cè)系統(tǒng)的運(yùn)行情況,以服務(wù)器設(shè)定的過(guò)載閾值為基準(zhǔn),判定服務(wù)器是否過(guò)度負(fù)載;該閾值隨服務(wù)器收到的用戶(hù)并發(fā)量的變化而變化;當(dāng)服務(wù)器在某一段時(shí)間接收過(guò)多的請(qǐng)求時(shí),適當(dāng)?shù)恼{(diào)高負(fù)載閾值,當(dāng)服務(wù)器較空閑時(shí),則適當(dāng)降低負(fù)載閾值;如果服務(wù)器確超過(guò)過(guò)載閾值,則進(jìn)行下一步;
過(guò)載閾值的設(shè)定,如果過(guò)載閾值設(shè)定偏小,則會(huì)很容易觸發(fā)過(guò)載遷移策略,導(dǎo)致服務(wù)器計(jì)算資源的浪費(fèi);相反,如果過(guò)載閾值設(shè)定過(guò)大,則很難觸發(fā)過(guò)載遷移或者剛進(jìn)行過(guò)載遷移服務(wù)器節(jié)點(diǎn)就變得難以恢復(fù)導(dǎo)致遷移代價(jià)巨大,則會(huì)導(dǎo)致某個(gè)節(jié)點(diǎn)很容易達(dá)到用戶(hù)宕機(jī)的紅線(xiàn),所以服務(wù)器過(guò)載閾值的設(shè)定應(yīng)該有區(qū)別性;具體的閾值調(diào)整方法為:
其中wold是根據(jù)系統(tǒng)性能不同而設(shè)定的過(guò)載閾值,wnew為新生成的閾值,n為監(jiān)測(cè)到的用戶(hù)請(qǐng)求分發(fā)到服務(wù)器的并發(fā)量,nmin,nmax為預(yù)先設(shè)定的過(guò)載區(qū)間;當(dāng)n<nmin時(shí),增大過(guò)載閾值,使更多的服務(wù)請(qǐng)求能夠被接收;反之當(dāng)n>nmax時(shí)需要減小過(guò)載閾值,把超過(guò)負(fù)載能力的任務(wù)遷移出去,防止服務(wù)器過(guò)于沉重或者宕機(jī);通常k1設(shè)置為1.2,k2設(shè)置為0.8;
步驟105、基于負(fù)載感知的遷移服務(wù)選?。?/p>
當(dāng)服務(wù)器過(guò)載時(shí),對(duì)服務(wù)器上的服務(wù)進(jìn)行遷移,究竟選取哪些服務(wù)進(jìn)行遷移而保證系統(tǒng)負(fù)載率最小且遷移代價(jià)最小是該研究的關(guān)鍵;
服務(wù)選取方法是一種啟發(fā)式方法,迭代的選擇滿(mǎn)足要求的服務(wù)進(jìn)行遷移,具體步驟如下:
a、獲取服務(wù)器上所有服務(wù)的集合v,置最小需要遷移的服務(wù)集合vmin=v;
b、對(duì)集合中的各個(gè)服務(wù)按照負(fù)載值大小進(jìn)行排序,并且令索引i=1,置vm為空,j=1;
c、若|i+j|>|v|,則已遍歷出當(dāng)前算法,算法終止;否則選擇第i+j個(gè)服務(wù)為遷移服務(wù),并把該服務(wù)加入到vm中,若v在移出該服務(wù)后,服務(wù)器處于負(fù)載閾值之下轉(zhuǎn)入
步驟d,否則執(zhí)行j=j(luò)+1,循環(huán)步驟c;
d、若vm中的負(fù)載值小于vmin負(fù)載值,則更新vmin,vmin=vm,并且i=i+1,返回步驟b。
本發(fā)明具有的優(yōu)點(diǎn)和積極效果:
通過(guò)采用上述技術(shù)方案,該負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法能夠根據(jù)客戶(hù)端請(qǐng)求的速率自適應(yīng)的改變過(guò)載閾值,并且在待遷移服務(wù)器中待遷移服務(wù)的選擇上提出了一種負(fù)載感知方法,能夠有效的根據(jù)并發(fā)量實(shí)時(shí)調(diào)整各個(gè)服務(wù)器的過(guò)載閾值,并對(duì)于過(guò)載服務(wù)器選擇最佳遷出方案,防止了過(guò)載服務(wù)器的超負(fù)荷工作甚至宕機(jī)。
附圖說(shuō)明:
圖1是采用本發(fā)明技術(shù)方案與傳統(tǒng)方案所得到的第一吐量圖對(duì)比表;
圖2是采用本發(fā)明技術(shù)方案與傳統(tǒng)方案所得到的負(fù)載率對(duì)比;
圖3是采用本發(fā)明技術(shù)方案與傳統(tǒng)方案所得到的第二吞吐量對(duì)比表;
具體實(shí)施方式
為能進(jìn)一步了解本發(fā)明的發(fā)明內(nèi)容、特點(diǎn)及功效,茲例舉以下實(shí)施例,并配合附圖詳細(xì)說(shuō)明如下:
請(qǐng)參閱圖1至圖3,一種負(fù)載感知的自適應(yīng)閾值過(guò)載遷移方法,
步驟101、初始化變量,算法開(kāi)始時(shí)需要維護(hù)服務(wù)信息表,系統(tǒng)自動(dòng)在處理機(jī)上登記進(jìn)程的pcb信息,當(dāng)服務(wù)器輕載時(shí),d為本地處理機(jī),s為空,此時(shí)系統(tǒng)不存在遷出服務(wù)。集群中的所有服務(wù)器向負(fù)載均衡控制模塊發(fā)送服務(wù)狀態(tài)信息,后者協(xié)調(diào)匯總后生成負(fù)載狀態(tài)表信息。具體步驟為:
服務(wù)登記信息表是對(duì)服務(wù)器中正在進(jìn)行的服務(wù)進(jìn)行記錄的一種數(shù)據(jù)結(jié)構(gòu),每個(gè)服務(wù)器節(jié)點(diǎn)維護(hù)一個(gè)服務(wù)登記信息表。該結(jié)構(gòu)可以描述為一個(gè)向量αi(p,d,s,t,pcb)。其中i表示集群中的第i個(gè)服務(wù)器,i∈[1,n];p是進(jìn)程標(biāo)識(shí)符,描述了系統(tǒng)中每一個(gè)進(jìn)程的id;d是待遷移進(jìn)程所屬的源主機(jī)id;s是待遷移進(jìn)程所要遷往的目標(biāo)主機(jī)id;t是遷移過(guò)程中的遷移類(lèi)型,如負(fù)載過(guò)重遷移、宕機(jī)遷移;pcb記錄該服務(wù)cpu現(xiàn)場(chǎng)信息、堆棧信息、以及進(jìn)程資源清單等相關(guān)信息,用于在目標(biāo)處理機(jī)對(duì)遷移服務(wù)進(jìn)行恢復(fù)。
系統(tǒng)負(fù)載狀態(tài)表是由當(dāng)前集群系統(tǒng)中所有服務(wù)器共同維護(hù)的,它主要用于描述系統(tǒng)中各臺(tái)服務(wù)器的忙碌程度。系統(tǒng)狀態(tài)表用一個(gè)向量β(n,l,c)來(lái)表示。其中n表示為處理機(jī)的id。
n∈[s1,s2,s3,...,sn]
l是當(dāng)前時(shí)刻t服務(wù)器i的負(fù)載值,它詳細(xì)描述了當(dāng)前服務(wù)器中所有節(jié)點(diǎn)的閑忙程度以及可利用狀態(tài)。
其中
c代表當(dāng)前處理機(jī)的狀態(tài),其中l(wèi)o表示當(dāng)前系統(tǒng)負(fù)載均值,當(dāng)li大于lo是,當(dāng)前服務(wù)器為重載,標(biāo)記為w;當(dāng)li小于等于lo時(shí),表示為輕載服務(wù)器,標(biāo)記為e;當(dāng)服務(wù)器不可用時(shí),標(biāo)記為d。
其中f是跟服務(wù)器性能相關(guān)的權(quán)值,此處采用加權(quán)集合平均數(shù)的計(jì)算,既能夠避免某些服務(wù)器負(fù)載率的突然升高,又能適合于動(dòng)態(tài)平均數(shù)的計(jì)算。
步驟102、運(yùn)行負(fù)載均衡算法:
根據(jù)不同的業(yè)務(wù)場(chǎng)景部署相應(yīng)的負(fù)載均衡算法:如加權(quán)輪詢(xún)算法,適用于服務(wù)器性能相差不大的集群,任務(wù)隊(duì)列的每個(gè)成員分配任務(wù)的概率相同;隨機(jī)算法,其中用戶(hù)請(qǐng)求隨機(jī)分發(fā)給后臺(tái)的各個(gè)服務(wù)器,其中,隨機(jī)函數(shù)的選取直接影響算法的好壞;比率算法,依據(jù)各個(gè)服務(wù)器的負(fù)載能力分配,權(quán)值決定請(qǐng)求的分配概率,綜合考慮了服務(wù)器性能的差異性;最少連接算法,依據(jù)服務(wù)器連接數(shù)分配用戶(hù)請(qǐng)求,忽略了請(qǐng)求消耗資源的不同,適用于請(qǐng)求類(lèi)型單一的集群;預(yù)測(cè)模式,基于應(yīng)用程序的行為對(duì)處理器分配工作負(fù)載,從中選擇一臺(tái)服務(wù)器分配用戶(hù)請(qǐng)求。
步驟103、確定是否存在需要強(qiáng)制遷移的處理機(jī):
在系統(tǒng)運(yùn)行過(guò)程中,服務(wù)器自身的物理故障或者是人為原因,導(dǎo)致該服務(wù)器不能夠正常提供服務(wù),那么此時(shí)必須用最短的時(shí)間把用戶(hù)所有的請(qǐng)求強(qiáng)制遷移出去。務(wù)必保證所有的請(qǐng)求在最短時(shí)間內(nèi)遷出。
步驟104、檢查服務(wù)器是否過(guò)載:
在系統(tǒng)運(yùn)行過(guò)程中,要定期的監(jiān)測(cè)系統(tǒng)的運(yùn)行情況,以服務(wù)器設(shè)定的過(guò)載閾值為基準(zhǔn),判定服務(wù)器是否過(guò)度負(fù)載。該閾值隨服務(wù)器收到的用戶(hù)并發(fā)量的變化而變化。當(dāng)服務(wù)器在某一段時(shí)間接收過(guò)多的請(qǐng)求時(shí),應(yīng)該適當(dāng)?shù)恼{(diào)高負(fù)載閾值,當(dāng)服務(wù)器較空閑時(shí),則適當(dāng)降低負(fù)載閾值。如果服務(wù)器確超過(guò)過(guò)載閾值,則進(jìn)行下一步。
過(guò)載閾值的設(shè)定是非常重要的,如果過(guò)載閾值設(shè)定偏小,則會(huì)很容易觸發(fā)過(guò)載遷移策略,導(dǎo)致服務(wù)器計(jì)算資源的浪費(fèi);相反,如果過(guò)載閾值設(shè)定過(guò)大,則很難觸發(fā)過(guò)載遷移或者說(shuō)剛進(jìn)行過(guò)載遷移服務(wù)器節(jié)點(diǎn)就變得難以恢復(fù)導(dǎo)致遷移代價(jià)巨大,則會(huì)導(dǎo)致某個(gè)節(jié)點(diǎn)很容易達(dá)到用戶(hù)宕機(jī)的紅線(xiàn),所以服務(wù)器過(guò)載閾值的設(shè)定應(yīng)該有區(qū)別性。本文采用了一種自適應(yīng)閾值處理方法,能夠根據(jù)用戶(hù)請(qǐng)求速率自適應(yīng)的調(diào)整閾值的大小。具體的閾值調(diào)整方法為:
其中wold是根據(jù)系統(tǒng)性能不同而設(shè)定的過(guò)載閾值,wnew為新生成的閾值,n為監(jiān)測(cè)到的用戶(hù)請(qǐng)求分發(fā)到服務(wù)器的并發(fā)量,nmin,nmax為預(yù)先設(shè)定的過(guò)載區(qū)間。當(dāng)n<nmin時(shí)可以適當(dāng)增大過(guò)載閾值,使更多的服務(wù)請(qǐng)求能夠被接收;反之當(dāng)n>nmax時(shí)需要減小過(guò)載閾值,把超過(guò)負(fù)載能力的任務(wù)遷移出去,防止服務(wù)器過(guò)于沉重或者宕機(jī)。通常k1設(shè)置為1.2,k2設(shè)置為0.8。
步驟105、基于負(fù)載感知的遷移服務(wù)選?。?/p>
當(dāng)服務(wù)器過(guò)載時(shí),此時(shí)需要對(duì)服務(wù)器上的服務(wù)進(jìn)行遷移,究竟選取哪些服務(wù)進(jìn)行遷移而保證系統(tǒng)負(fù)載率最小且遷移代價(jià)最小是該研究的關(guān)鍵。
該服務(wù)選取方法是一種啟發(fā)式方法,迭代的選擇滿(mǎn)足要求的服務(wù)進(jìn)行遷移,具體步驟如下:
①獲取服務(wù)器上所有服務(wù)的集合v,置最小需要遷移的服務(wù)集合vmin=v。
②對(duì)集合中的各個(gè)服務(wù)按照負(fù)載值大小進(jìn)行排序,并且令索引i=1,置vm為空,j=1。
③若|i+j|>|v|,則已遍歷出當(dāng)前算法,算法終止;否則選擇第i+j個(gè)服務(wù)為遷移服務(wù),并把該服務(wù)加入到vm中,若v在移出該服務(wù)后,服務(wù)器處于負(fù)載閾值之下轉(zhuǎn)入第四步,否則執(zhí)行j=j(luò)+1,循環(huán)第三步。
若vm中的負(fù)載值小于vmin負(fù)載值,則更新vmin,vmin=vm,并且i=i+1,返回第二步。
在上述優(yōu)選實(shí)施例中,具體包括以下步驟:
step1初始化變量
算法開(kāi)始需要維護(hù)進(jìn)程信息表,系統(tǒng)自動(dòng)在處理機(jī)上等級(jí)進(jìn)程的pcb信息,當(dāng)服務(wù)器不過(guò)載時(shí),d為本地處理機(jī),s為空,此時(shí)系統(tǒng)不存在遷出進(jìn)程。集群中的所有服務(wù)器向負(fù)載均衡控制模塊發(fā)送進(jìn)程狀態(tài)信息,后者協(xié)調(diào)匯總生成負(fù)載狀態(tài)表信息。
step2運(yùn)行負(fù)載均衡算法
在集群系統(tǒng)中配置相應(yīng)的負(fù)載均衡算法對(duì)用戶(hù)的請(qǐng)求進(jìn)行負(fù)載。
step3確定是否存在需要強(qiáng)制遷移的處理機(jī)
在系統(tǒng)運(yùn)行過(guò)程中,服務(wù)器自身的物理故障或者是人為原因,導(dǎo)致該服務(wù)器不能夠正常接收請(qǐng)求,那么此時(shí)必須用最短的時(shí)間把用戶(hù)所有的請(qǐng)求強(qiáng)制遷移出去。
如果遇到服務(wù)器某些硬件故障導(dǎo)致服務(wù)器不能正常服務(wù),那么必須盡快遷出用戶(hù)的所有請(qǐng)求,此時(shí)選擇負(fù)載狀態(tài)表中負(fù)載最小的服務(wù)器進(jìn)行遷移。務(wù)必保證所有的請(qǐng)求在最短時(shí)間內(nèi)遷出。
step4檢查服務(wù)器是否過(guò)載
在系統(tǒng)運(yùn)行過(guò)程中,要定期的監(jiān)測(cè)系統(tǒng)的運(yùn)行情況,監(jiān)測(cè)的依據(jù)就是服務(wù)器設(shè)定的閾值,該閾值是隨服務(wù)器的性能變化而變化的。當(dāng)服務(wù)器在某一段時(shí)間接收過(guò)多的請(qǐng)求時(shí),應(yīng)該適當(dāng)?shù)恼{(diào)高負(fù)載閾值,當(dāng)服務(wù)器較空閑時(shí),則適當(dāng)降低負(fù)載閾值。如果服務(wù)器確定需要遷移,則觸發(fā)下一步。
step5基于負(fù)載感知的遷移服務(wù)選取
當(dāng)服務(wù)器過(guò)載時(shí),此時(shí)需要對(duì)服務(wù)器上的服務(wù)進(jìn)行遷移,究竟選取哪幾個(gè)服務(wù)進(jìn)行遷移是該研究的關(guān)鍵。本文提出一種基于負(fù)載感知的服務(wù)遷移策略。
第一步:獲取服務(wù)器上所有服務(wù)的集合v,置最小需要遷移的服務(wù)集合vmin=v。
第二步:然后對(duì)集合中的各個(gè)服務(wù)按照負(fù)載值大小進(jìn)行排序,并且令索引i=1,置vm為空,j=1。
第三步:若|i+j|>|v|,則已遍歷出當(dāng)前算法,算法終止;否則選擇第i+j個(gè)服務(wù)為遷移服務(wù),并把該服務(wù)加入到vm中,若v在移出該服務(wù)后,服務(wù)器處于負(fù)載閾值之下轉(zhuǎn)入第四步,否則執(zhí)行j=j(luò)+1,循環(huán)第三步。
第四步:若vm中的負(fù)載值小于vmin負(fù)載值,則更新vmin,vmin=vm,并且i=i+1,返回第二步。
第五步:源服務(wù)器通過(guò)執(zhí)行系統(tǒng)調(diào)用將待遷移服務(wù)遷移至目標(biāo)處理機(jī)。后者在收到遷入服務(wù)之后,為其分配必要的資源,恢復(fù)期pcb信息,并插入到就緒隊(duì)列。
在該實(shí)驗(yàn)中,除了搭建ilink模擬環(huán)境,還需要編寫(xiě)兩套程序,分別為客戶(hù)端腳本程序和服務(wù)端服務(wù)程序??蛻?hù)端腳本程序由httpclient技術(shù)實(shí)現(xiàn),通過(guò)httpclient設(shè)定相應(yīng)的參數(shù)及請(qǐng)求類(lèi)型向服務(wù)器發(fā)送請(qǐng)求,客戶(hù)端腳本可以自由設(shè)定并發(fā)量,進(jìn)而模擬現(xiàn)實(shí)中的用戶(hù)請(qǐng)求。服務(wù)端程序則是提供幾種系統(tǒng)中常見(jiàn)的不同資源消耗的模擬服務(wù),如cpu消耗型服務(wù)、內(nèi)存消耗型服務(wù)、磁盤(pán)消耗型服務(wù)等。通過(guò)在服務(wù)端的負(fù)載均衡模塊配置該負(fù)載均衡策略并采集系統(tǒng)吞吐量和負(fù)載率等指標(biāo)來(lái)驗(yàn)證該方法的好壞。該實(shí)驗(yàn)場(chǎng)景是按照生產(chǎn)環(huán)境的用戶(hù)請(qǐng)求規(guī)律層層遞進(jìn)而設(shè)計(jì)的,共設(shè)計(jì)了四個(gè)實(shí)驗(yàn)場(chǎng)景:
第一個(gè)場(chǎng)景:客戶(hù)端腳本向服務(wù)器以[10,20,30,40,50,60,70,80,90,100](單位為(個(gè)/秒))并發(fā)量向服務(wù)器發(fā)送請(qǐng)求,測(cè)試服務(wù)器的連通性及負(fù)載能力。
第二個(gè)場(chǎng)景:首先在第一個(gè)周期內(nèi)客戶(hù)端按照[10,100]的并發(fā)區(qū)間隨機(jī)訪(fǎng)問(wèn)后臺(tái)服務(wù)器,在第二個(gè)周期內(nèi)維持在高并發(fā)區(qū)間[60,100]訪(fǎng)問(wèn),在第三個(gè)周期內(nèi)模擬用戶(hù)訪(fǎng)問(wèn)減少的情況,不斷降低并維持在[10,30]的并發(fā)量。第四個(gè)區(qū)間是對(duì)后臺(tái)服務(wù)器進(jìn)行一個(gè)隨機(jī)的訪(fǎng)問(wèn),最后綜合統(tǒng)計(jì)后臺(tái)各節(jié)點(diǎn)的吞吐量情況,經(jīng)過(guò)大量的實(shí)驗(yàn),實(shí)驗(yàn)穩(wěn)定結(jié)果如圖1。
第三個(gè)場(chǎng)景:在隨機(jī)并發(fā)或者低并發(fā)條件下,系統(tǒng)的負(fù)載率差異性不大,所以,該場(chǎng)景設(shè)計(jì)了持續(xù)高并發(fā)訪(fǎng)問(wèn)[60,100]考驗(yàn)系統(tǒng)的負(fù)載率指標(biāo)(圖2)。
第四個(gè)場(chǎng)景:在該場(chǎng)景下模擬了機(jī)器硬盤(pán)物理故障的情況,首先在其中一臺(tái)服務(wù)器內(nèi)部編寫(xiě)一個(gè)腳本,不斷創(chuàng)建新文件以占用磁盤(pán)空間,最終服務(wù)器空間被塞滿(mǎn)從而服務(wù)器不能接受用戶(hù)的服務(wù),測(cè)試該條件下系統(tǒng)吞吐量指標(biāo)(圖3)。
如圖1所示在并發(fā)量60(單位(個(gè)/s))之前,由于系統(tǒng)完全有能力接受該并發(fā)范圍的服務(wù)請(qǐng)求量,所以很少甚至沒(méi)有觸發(fā)過(guò)載遷移策略,兩者的系統(tǒng)吞吐量幾乎相同,但是,當(dāng)服務(wù)請(qǐng)求維持在較高階段[70,80,90,100]時(shí),系統(tǒng)中單核主機(jī)逐漸不能夠滿(mǎn)足該請(qǐng)求規(guī)模,遇到了瓶頸,此時(shí)觸發(fā)過(guò)載遷移策略,相應(yīng)的,采用了本文策略的吞吐量相對(duì)于沒(méi)有過(guò)載遷移的策略平均提高了約1.2%。
如圖2所示,負(fù)載率指標(biāo)衡量了整個(gè)系統(tǒng)的忙碌程度,在并發(fā)量50(單位(個(gè)/s))之前,兩種策略負(fù)載率都是穩(wěn)步提升,這是因?yàn)樵诳蛻?hù)端采用了逐步遞增并發(fā)量的原因?qū)е碌?。在此,過(guò)載閾值從60改變到了50左右,這是因?yàn)檫^(guò)載閾值隨并發(fā)量的改變發(fā)生了變化。當(dāng)系統(tǒng)達(dá)到過(guò)載閾值以后,采用過(guò)載遷移策略的負(fù)載率提高較慢,這是因?yàn)樵谠撨^(guò)程中觸發(fā)了過(guò)載遷移,對(duì)負(fù)載任務(wù)進(jìn)行了分?jǐn)偸垢鱾€(gè)服務(wù)器均處于忙碌狀態(tài),提高了系統(tǒng)的負(fù)載率約2.3%,這也是過(guò)載感知策略?xún)?yōu)化的目的。
如圖3所示,模擬了服務(wù)器硬件故障的情況,當(dāng)用戶(hù)請(qǐng)求并發(fā)量較少且系統(tǒng)硬件沒(méi)有故障時(shí),兩種策略幾乎沒(méi)有區(qū)別,系統(tǒng)吞吐量相同;但是一旦超過(guò)了55(單位(個(gè)/s))以后,系統(tǒng)中損壞了一臺(tái)服務(wù)器,所以導(dǎo)致系統(tǒng)整體的服務(wù)能力與之前相比會(huì)有所下降,但是不采用過(guò)載遷移策略的吞吐量程線(xiàn)性下降,而采用了過(guò)載遷移策略的吞吐量則是少量下降,這也說(shuō)明了客戶(hù)的請(qǐng)求有相當(dāng)一部分被遷移成功,且當(dāng)請(qǐng)求并發(fā)量持續(xù)增高以后,本文策略是占有一定優(yōu)勢(shì)的。
以上對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明申請(qǐng)范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本發(fā)明的專(zhuān)利涵蓋范圍之內(nèi)。