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