一種soa動態(tài)負(fù)載遷移方法與系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種SOA動態(tài)負(fù)載遷移方法與系統(tǒng),利用鄰居節(jié)點的負(fù)載信息交換,使過載的服務(wù)節(jié)點可以較好地掌握局部的負(fù)載狀況,并且定義了節(jié)點負(fù)載遷移的通道壓力值,該通道壓力值不僅反映了過載服務(wù)節(jié)點各鄰居節(jié)點的負(fù)載情況,而且還能夠反映鄰居節(jié)點各自的鄰居節(jié)點的負(fù)載情況,這樣使負(fù)載遷移量的分配更具有指向性。服務(wù)節(jié)點利用鄰居節(jié)點間的負(fù)載信息交換,迅速掌握周圍的負(fù)載情況,使負(fù)載遷移算法迅速收斂(遷移算法迅速達(dá)到負(fù)載平衡)。而且本發(fā)明的方法中服務(wù)節(jié)點只需要利用局部信息,不需要全局信息,因此算法的適應(yīng)性較好。
【專利說明】-種SOA動態(tài)負(fù)載遷移方法與系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種S0A動態(tài)負(fù)載遷移方法與系統(tǒng)。
【背景技術(shù)】
[0002] 在S0A環(huán)境下服務(wù)已成為資源共享、任務(wù)協(xié)作等的主要工作模式。S0A應(yīng)用的性能 依賴于協(xié)作服務(wù)的組合性能以及協(xié)作服務(wù)間的交互。故障或單個服務(wù)的變化會影響到多個 業(yè)務(wù)流程,增加新的應(yīng)用或業(yè)務(wù)流程會使得已有的服務(wù)過載,使得當(dāng)前業(yè)務(wù)流程性能下降, 甚至發(fā)生故障。
[0003] 由于服務(wù)請求和服務(wù)時間具有隨機性,各服務(wù)節(jié)點的最大服務(wù)能力各不相同,如 何保證各服務(wù)節(jié)點之間的動態(tài)負(fù)載平衡,提高系統(tǒng)整體服務(wù)效率,是迫切需要解決的問題。 即使系統(tǒng)事先根據(jù)服務(wù)請求量和節(jié)點服務(wù)能力進(jìn)行服務(wù)分發(fā)優(yōu)化,但是對于突發(fā)到達(dá)的服 務(wù)請求,有的服務(wù)節(jié)點由于受制于最大服務(wù)能力的限制,無法避免服務(wù)過載現(xiàn)象,但是還存 在一些服務(wù)節(jié)點處于低負(fù)載狀態(tài),因此不能充分發(fā)揮各服務(wù)節(jié)點的服務(wù)能力,無法達(dá)到系 統(tǒng)負(fù)載的整體平衡。
[0004] 當(dāng)前的解決途徑:
[0005] 當(dāng)服務(wù)節(jié)點發(fā)生過載后,通常采用對服務(wù)節(jié)點進(jìn)行物理資源擴(kuò)容或者對服務(wù)節(jié)點 進(jìn)行負(fù)載遷移的方法來消除過載現(xiàn)象。物理資源擴(kuò)容的方法包括增加服務(wù)節(jié)點的數(shù)量,或 者通過資源優(yōu)化控制,對后端資源統(tǒng)一調(diào)度,動態(tài)調(diào)整服務(wù)節(jié)點的資源配額;服務(wù)節(jié)點負(fù)載 遷移的方法是將服務(wù)節(jié)點上優(yōu)先級較低的請求丟棄以保證高優(yōu)先級的響應(yīng)時間,或者將位 于隊列長度閾值之后的請求重新交回中心節(jié)點并與其他的請求一起等待再次分配的負(fù)載 遷移方法。過載服務(wù)節(jié)點的負(fù)載遷移量采用擴(kuò)散算法計算。
[0006] 對于負(fù)載遷移而言,根據(jù)遷移發(fā)起者可以將算法分為:發(fā)送者啟動和接收者啟動。 發(fā)送者啟動:當(dāng)服務(wù)節(jié)點發(fā)現(xiàn)自己發(fā)生過載或者預(yù)測自己即將發(fā)生過載則廣播遷移請求或 者向管理節(jié)點報告并選擇一定的遷移對象執(zhí)行負(fù)載遷移;接受者啟動:當(dāng)某節(jié)點處于輕載 或預(yù)測自己即將處于輕載則廣播輕載狀態(tài)信息并可以接收其他節(jié)點上的負(fù)載。
[0007] 根據(jù)遷移對象選擇范圍的不同,負(fù)載遷移算法可以分為全局算法、局部算法和分 層算法。全局算法即系統(tǒng)內(nèi)部所有的服務(wù)節(jié)點都可以成為某次遷移的對象,如文獻(xiàn)利用 Nash均衡理論來尋找合適的遷移對象。全局算法通常由中心節(jié)點進(jìn)行遷移對象的選擇,或 者采用發(fā)送者/接收者啟動模式,由普通節(jié)點廣播尋找遷移對象。由于全局算法遷移對象 的全局性,會導(dǎo)致決策信息存在較大的延時誤差,而且對并發(fā)處理的短請求的節(jié)點效果不 佳。
[0008] 在局部算法中遷移對象的選擇限定其鄰居節(jié)點的范圍之內(nèi),即負(fù)載只能在邏輯上 的鄰居之間流動。cybenko、Boillat和Xu等提出利用擴(kuò)散算法作為局部負(fù)載遷移的解決 方法,節(jié)點只需要知道其鄰居節(jié)點的負(fù)載,就可以通過相互的負(fù)載遷移達(dá)到負(fù)載平衡。其中 F0S擴(kuò)散算法是最具有代表性的算法之一,在F0S擴(kuò)散算法中,過載服務(wù)節(jié)點與其所有的鄰 居節(jié)點都進(jìn)行負(fù)載遷移,在進(jìn)行負(fù)載遷移之前需要計算節(jié)點之間的負(fù)載交換比率。局部算 法關(guān)注的是節(jié)點的動態(tài)負(fù)載情況,隨著鄰居間的負(fù)載流動使系統(tǒng)保持負(fù)載平衡。
[0009] 介于全局與局部算法的是分層算法,它對系統(tǒng)中的節(jié)點進(jìn)行層次劃分,將某些節(jié) 點編成組,使得負(fù)載的流動限制在里面,從而達(dá)到了縮小搜索空間和快速實施遷移并且降 低開銷的目的。但是固定的分層結(jié)構(gòu)存在組間負(fù)載差距較大的問題,使得組間負(fù)載遷移開 銷較大。
[0010] 采用物理資源擴(kuò)容的方法可以解決服務(wù)節(jié)點過載的問題。增加服務(wù)節(jié)點的數(shù)量, 可以分擔(dān)過載節(jié)點的服務(wù)請求,但是新加入的服務(wù)節(jié)點需要重新部署和調(diào)配資源,實現(xiàn)難 度較大。而且當(dāng)服務(wù)請求重新降低,不在需要大量的服務(wù)節(jié)點時,新增的服務(wù)節(jié)點將會空 置,造成資源浪費。
[0011] 而對服務(wù)節(jié)點的物理資源進(jìn)行動態(tài)行擴(kuò)展的方法雖然可以方便做到臨時調(diào)配,但 是由于整體物理資源受到限制,不能隨意擴(kuò)展。同時在某一時間間隔或某一時刻,各服務(wù)節(jié) 點的負(fù)載具有不均衡性,所有節(jié)點并不全部處于過載狀態(tài),因此存在資源開銷較大,不能充 分利用所配置資源等問題,該方法通常適用于物理資源充足和服務(wù)質(zhì)量要求較高的場合。
[0012] 將服務(wù)節(jié)點上優(yōu)先級較低的請求丟棄以保證高優(yōu)先級的響應(yīng)時間的這種方式很 容易造成低優(yōu)先級服務(wù)請求的不公平,最差的情況下低優(yōu)先級服務(wù)請求會在很長時間內(nèi)都 無法獲得服務(wù),而且另一方面其他服務(wù)節(jié)點的負(fù)載狀態(tài)可能一直較低。將位于隊列長度閾 值之后的請求重新交回中心節(jié)點并與其他的請求一起等待再次分配的負(fù)載遷移方法的這 種方法雖然保證各類請求都能獲得響應(yīng)但是在重新獲得響應(yīng)之前需要經(jīng)歷傳回中心節(jié)點, 分配隊列排隊,發(fā)送至響應(yīng)節(jié)點和響應(yīng)隊列排隊等多次消息傳遞,造成了較大的延遲。
[0013] 因此目前常采用負(fù)載遷移的方法,負(fù)載遷移通常采用擴(kuò)散算法對服務(wù)節(jié)點之間進(jìn) 行負(fù)載交換,常用的F0S擴(kuò)散算法采用固定比率交換負(fù)載,根據(jù)節(jié)點間的負(fù)載差異來調(diào)整 需要遷移的負(fù)載量,即只對節(jié)點間的負(fù)載差異做出反應(yīng)。這種情況下雖然所要選擇的兩個 遷移對象(如兩個鄰居節(jié)點A和B)具有相同的負(fù)載,但是這兩個鄰居節(jié)點各自周圍的負(fù)載 狀況差別可能會很大,如節(jié)點A的鄰居節(jié)點的負(fù)載都大于A,而節(jié)點B的鄰居節(jié)點的負(fù)載都 小于B,也就是說節(jié)點A和其鄰居的負(fù)載遠(yuǎn)大于節(jié)點B和其鄰居的負(fù)載,那么在將要發(fā)生的 負(fù)載遷移中,如果過載節(jié)點向A和B遷移相同的負(fù)載量,那么必然會加劇A和B周圍負(fù)載狀 態(tài)的不平衡,即固定比率交換負(fù)載的F0S擴(kuò)散算法對負(fù)載遷移量分配的指向性不強,使固 定比率負(fù)載擴(kuò)散算法的收斂速度(即使負(fù)載達(dá)到平衡的速度)受到嚴(yán)重影響。
[0014] 目前改進(jìn)的F0S擴(kuò)散算法使用了全局最小負(fù)載等信息進(jìn)行加速。由于使用了全局 信息,需要有中心控制節(jié)點來將參數(shù)傳遞各節(jié)點,通信開銷較大,還會造成較大的信息傳播 延遲;另一方面F0S擴(kuò)散算法對信息采集的延遲要求高,延遲過大將造成信息陳舊,影響算 法的準(zhǔn)確度。因此算法的可用性不好。
【發(fā)明內(nèi)容】
[0015] 本發(fā)明的目的是提供一種S0A動態(tài)負(fù)載遷移方法與系統(tǒng),用以解決F0S擴(kuò)散算法 對負(fù)載遷移量分配流向的指向性不強的問題。
[0016] 為實現(xiàn)上述目的,本發(fā)明的方案包括:
[0017] 一種S0A動態(tài)負(fù)載遷移方法,步驟如下:
[0018] 1)檢測服務(wù)節(jié)點是否過載,若過載則發(fā)起負(fù)載遷移;
[0019] 2)發(fā)起負(fù)載遷移的服務(wù)節(jié)點與其鄰居節(jié)點交換負(fù)載信息,確定所有的負(fù)載遷移目 的節(jié)點,負(fù)載遷移目的節(jié)點形成負(fù)載遷移組;已經(jīng)參與其他節(jié)點發(fā)起的負(fù)載遷移的節(jié)點不 在負(fù)載遷移組中;
[0020] 3)在負(fù)載遷移組中,根據(jù)鄰居節(jié)點周圍的負(fù)載情況,計算向鄰居節(jié)點的負(fù)載遷移 量。
[0021] 所述檢測服務(wù)節(jié)點是否過載是通過檢測服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度(len) 是否大于服務(wù)節(jié)點的最大允許隊列長度(Lmax)。
[0022] 若當(dāng)L0〈L〈Lmax,或者當(dāng)L〈L0〈Lmax,出現(xiàn)len>Lmax的情況時不發(fā)起負(fù)載遷移;L 為預(yù)計穩(wěn)態(tài)隊列長度,L0為當(dāng)前平均隊列長度。
[0023] 服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度小于最大允許隊列長度或者遷移輪數(shù)達(dá)到設(shè) 定閾值時,結(jié)束負(fù)載遷移。
[0024] 在負(fù)載遷移組中,向鄰居節(jié)點的負(fù)載遷移量與以下參數(shù)有關(guān):xl,負(fù)載遷移目的節(jié) 點與其鄰居節(jié)點的負(fù)載差值之和,所述其鄰居節(jié)點不包括發(fā)起負(fù)載遷移的節(jié)點;X2,負(fù)載遷 移目的節(jié)點與發(fā)起負(fù)載遷移的節(jié)點的負(fù)載差值;向鄰居節(jié)點的負(fù)載遷移量與xl成反比,與 x2成正比。
[0025] -種S0A動態(tài)負(fù)載遷移系統(tǒng),包括:
[0026] 1)用于檢測服務(wù)節(jié)點是否過載,若過載則發(fā)起負(fù)載遷移的模塊;
[0027] 2)用于發(fā)起負(fù)載遷移的服務(wù)節(jié)點與其鄰居節(jié)點交換負(fù)載信息,確定所有的負(fù)載遷 移目的節(jié)點的模塊,負(fù)載遷移目的節(jié)點形成負(fù)載遷移組;已經(jīng)參與其他節(jié)點發(fā)起的負(fù)載遷 移的節(jié)點不在負(fù)載遷移組中;
[0028] 3)用于在負(fù)載遷移組中,根據(jù)鄰居節(jié)點周圍的負(fù)載情況,計算向鄰居節(jié)點的負(fù)載 遷移量的模塊。
[0029] 所述檢測服務(wù)節(jié)點是否過載是通過檢測服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度(len) 是否大于服務(wù)節(jié)點的最大允許隊列長度(Lmax)。
[0030] 若當(dāng)L0〈L〈Lmax,或者當(dāng)L〈L0〈Lmax,出現(xiàn)len>Lmax的情況時不發(fā)起負(fù)載遷移;L 為預(yù)計穩(wěn)態(tài)隊列長度,L0為當(dāng)前平均隊列長度。
[0031] 服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度小于最大允許隊列長度或者遷移輪數(shù)達(dá)到設(shè) 定閾值時,結(jié)束負(fù)載遷移。
[0032] 在負(fù)載遷移組中,向鄰居節(jié)點的負(fù)載遷移量與以下參數(shù)有關(guān):xl,負(fù)載遷移目的節(jié) 點與其鄰居節(jié)點的負(fù)載差值之和,所述其鄰居節(jié)點不包括發(fā)起負(fù)載遷移的節(jié)點; X2,負(fù)載遷 移目的節(jié)點與發(fā)起負(fù)載遷移的節(jié)點的負(fù)載差值;向鄰居節(jié)點的負(fù)載遷移量與xl成反比,與 x2成正比。
[0033] 本發(fā)明提出利用鄰居節(jié)點的負(fù)載信息交換,使過載的服務(wù)節(jié)點可以較好地掌握局 部的負(fù)載狀況,使負(fù)載遷移量的分配更具有指向性;例如在遷移量計算時不僅考慮過載服 務(wù)節(jié)點各鄰居節(jié)點的負(fù)載情況,而且還考慮到鄰居節(jié)點各自的鄰居節(jié)點的負(fù)載情況,從而 使負(fù)載遷移量的分配更具有指向性。
[0034] 服務(wù)節(jié)點利用鄰居節(jié)點間的負(fù)載信息交換,迅速掌握周圍的負(fù)載情況,使負(fù)載遷 移算法迅速收斂(遷移算法迅速達(dá)到負(fù)載平衡)。而且本發(fā)明的方法中服務(wù)節(jié)點只需要利 用局部信息,不需要全局信息,因此算法的適應(yīng)性較好。
【專利附圖】
【附圖說明】
[0035] 圖1是服務(wù)節(jié)點的負(fù)載模型示意圖;
[0036] 圖2是本發(fā)明實施例的流程圖;
[0037] 圖3是負(fù)載遷移組建立示意圖。
【具體實施方式】
[0038] 下面結(jié)合附圖對本發(fā)明做進(jìn)一步詳細(xì)的說明。
[0039] 本發(fā)明的基本方案是:一種S0A動態(tài)負(fù)載遷移方法,步驟如下:
[0040] 1)檢測服務(wù)節(jié)點是否過載,若過載則發(fā)起負(fù)載遷移;
[0041] 2)發(fā)起負(fù)載遷移的服務(wù)節(jié)點與其鄰居節(jié)點交換負(fù)載信息,確定所有的負(fù)載遷移目 的節(jié)點,負(fù)載遷移目的節(jié)點形成負(fù)載遷移組;已經(jīng)參與其他節(jié)點發(fā)起的負(fù)載遷移的節(jié)點不 在負(fù)載遷移組中;
[0042] 3)在負(fù)載遷移組中,根據(jù)鄰居節(jié)點周圍的負(fù)載情況,計算向鄰居節(jié)點的負(fù)載遷移 量。
[0043] 在上述基本方案的基礎(chǔ)上,每個步驟都有多種實施手段,如檢測服務(wù)節(jié)點是否過 載的手段,節(jié)點間交互信息的手段,根據(jù)鄰居節(jié)點周圍負(fù)載情況確定遷移量的手段等。
[0044] 具體的,以下給出一種【具體實施方式】。
[0045] 如圖2為具體步驟,對各個步驟解釋說明如下:
[0046] 步驟1負(fù)載遷移發(fā)起判斷
[0047] 本實施例以平均響應(yīng)時間為服務(wù)質(zhì)量約束,在服務(wù)節(jié)點運行時,為了確保服務(wù)質(zhì) 量,使平均響應(yīng)時間維持在一個可接受的范圍之內(nèi),當(dāng)服務(wù)節(jié)點的平均響應(yīng)時間不滿足服 務(wù)質(zhì)量約束時,將發(fā)起負(fù)載遷移。在排隊系統(tǒng)中平均響應(yīng)時間和平均隊列長度是一致的,所 以平均隊列長度可以直觀表征服務(wù)節(jié)點的負(fù)載情況。
[0048] 如圖1所示的服務(wù)節(jié)點負(fù)載模型,服務(wù)節(jié)點上的服務(wù)請求包含:在隊列里等待響 應(yīng)的服務(wù)請求、正在響應(yīng)的服務(wù)請求和將要遷移至其他節(jié)點的服務(wù)請求,同時隊列里將會 出現(xiàn)有其他服務(wù)節(jié)點遷移來的服務(wù)請求和將要分發(fā)到的服務(wù)請求。各種參數(shù)如表所示:
[0049]
【權(quán)利要求】
1. 一種SOA動態(tài)負(fù)載遷移方法,其特征在于,步驟如下: 1) 檢測服務(wù)節(jié)點是否過載,若過載則發(fā)起負(fù)載遷移; 2) 發(fā)起負(fù)載遷移的服務(wù)節(jié)點與其鄰居節(jié)點交換負(fù)載信息,確定所有的負(fù)載遷移目的節(jié) 點,負(fù)載遷移目的節(jié)點形成負(fù)載遷移組;已經(jīng)參與其他節(jié)點發(fā)起的負(fù)載遷移的節(jié)點不在負(fù) 載遷移組中; 3) 在負(fù)載遷移組中,根據(jù)鄰居節(jié)點周圍的負(fù)載情況,計算向鄰居節(jié)點的負(fù)載遷移量。
2. 根據(jù)權(quán)利要求1所述的一種S0A動態(tài)負(fù)載遷移方法,其特征在于,所述檢測服務(wù)節(jié)點 是否過載是通過檢測服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度(len)是否大于服務(wù)節(jié)點的最大 允許隊列長度(Lmax)。
3. 根據(jù)權(quán)利要求2所述的一種S0A動態(tài)負(fù)載遷移方法,其特征在于,若當(dāng)L0〈L〈Lmax, 或者當(dāng)L〈L0〈Lmax,出現(xiàn)len>Lmax的情況時不發(fā)起負(fù)載遷移;L為預(yù)計穩(wěn)態(tài)隊列長度,L0為 當(dāng)前平均隊列長度。
4. 根據(jù)權(quán)利要求3所述的一種S0A動態(tài)負(fù)載遷移方法,其特征在于,服務(wù)節(jié)點服務(wù)請求 的當(dāng)前隊列長度小于最大允許隊列長度或者遷移輪數(shù)達(dá)到設(shè)定閾值時,結(jié)束負(fù)載遷移。
5. 根據(jù)權(quán)利要求1所述的一種S0A動態(tài)負(fù)載遷移方法,其特征在于,在負(fù)載遷移組中, 向鄰居節(jié)點的負(fù)載遷移量與以下參數(shù)有關(guān):xl,負(fù)載遷移目的節(jié)點與其鄰居節(jié)點的負(fù)載差 值之和,所述其鄰居節(jié)點不包括發(fā)起負(fù)載遷移的節(jié)點;x2,負(fù)載遷移目的節(jié)點與發(fā)起負(fù)載遷 移的節(jié)點的負(fù)載差值;向鄰居節(jié)點的負(fù)載遷移量與xl成反比,與x2成正比。
6. -種S0A動態(tài)負(fù)載遷移系統(tǒng),其特征在于,包括: 1) 用于檢測服務(wù)節(jié)點是否過載,若過載則發(fā)起負(fù)載遷移的模塊; 2) 用于發(fā)起負(fù)載遷移的服務(wù)節(jié)點與其鄰居節(jié)點交換負(fù)載信息,確定所有的負(fù)載遷移目 的節(jié)點的模塊,負(fù)載遷移目的節(jié)點形成負(fù)載遷移組;已經(jīng)參與其他節(jié)點發(fā)起的負(fù)載遷移的 節(jié)點不在負(fù)載遷移組中; 3) 用于在負(fù)載遷移組中,根據(jù)鄰居節(jié)點周圍的負(fù)載情況,計算向鄰居節(jié)點的負(fù)載遷移 量的模塊。
7. 根據(jù)權(quán)利要求6所述的一種S0A動態(tài)負(fù)載遷移系統(tǒng),其特征在于,所述檢測服務(wù)節(jié)點 是否過載是通過檢測服務(wù)節(jié)點服務(wù)請求的當(dāng)前隊列長度(len)是否大于服務(wù)節(jié)點的最大 允許隊列長度(Lmax)。
8. 根據(jù)權(quán)利要求7所述的一種S0A動態(tài)負(fù)載遷移系統(tǒng),其特征在于,若當(dāng)L0〈L〈Lmax, 或者當(dāng)L〈L0〈Lmax,出現(xiàn)len>Lmax的情況時不發(fā)起負(fù)載遷移;L為預(yù)計穩(wěn)態(tài)隊列長度,L0為 當(dāng)前平均隊列長度。
9. 根據(jù)權(quán)利要求8所述的一種S0A動態(tài)負(fù)載遷移系統(tǒng),其特征在于,服務(wù)節(jié)點服務(wù)請求 的當(dāng)前隊列長度小于最大允許隊列長度或者遷移輪數(shù)達(dá)到設(shè)定閾值時,結(jié)束負(fù)載遷移。
10. 根據(jù)權(quán)利要求6所述的一種S0A動態(tài)負(fù)載遷移系統(tǒng),其特征在于,在負(fù)載遷移組中, 向鄰居節(jié)點的負(fù)載遷移量與以下參數(shù)有關(guān):xl,負(fù)載遷移目的節(jié)點與其鄰居節(jié)點的負(fù)載差 值之和,所述其鄰居節(jié)點不包括發(fā)起負(fù)載遷移的節(jié)點;x2,負(fù)載遷移目的節(jié)點與發(fā)起負(fù)載遷 移的節(jié)點的負(fù)載差值;向鄰居節(jié)點的負(fù)載遷移量與xl成反比,與x2成正比。
【文檔編號】H04L29/08GK104298557SQ201410249319
【公開日】2015年1月21日 申請日期:2014年6月5日 優(yōu)先權(quán)日:2014年6月5日
【發(fā)明者】張斌, 張紅旗, 劉洋, 費曉飛, 楊英杰, 余鑫, 閆少閣 申請人:中國人民解放軍信息工程大學(xué)