結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法
【專利摘要】本發(fā)明提供了一種結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,包括隨機抽樣步驟和虛擬化步驟。本發(fā)明通過結(jié)合隨機抽樣和虛擬化技術(shù),做出全局負(fù)載(網(wǎng)絡(luò)帶寬)的均衡選擇,也能夠保證局部負(fù)載(CPU、內(nèi)存)的均衡選擇,從而可以顯著提高整個分布式系統(tǒng)(云計算)的所有資源(網(wǎng)絡(luò)帶寬、CPU、內(nèi)存)的利用率。使得用戶的滿意度最大化,減少響應(yīng)時間,增加資源的利用率,減少任務(wù)被駁回的數(shù)量,提高整個分布式系統(tǒng)的性能。全局管控和局部管控的分離使得整個系統(tǒng)節(jié)省能源、更易于擴展和維護,從而使得這樣的負(fù)載均衡方法更有實際應(yīng)用價值。
【專利說明】結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機【技術(shù)領(lǐng)域】,尤其是應(yīng)用于分布式系統(tǒng)(比如云計算)中讓所有的結(jié)點的資源都能夠充分被應(yīng)用,具體涉及一種結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法。
【背景技術(shù)】
[0002]從1961年圖靈獎得主約翰.麥卡錫提出“效用計算”讓計算能力將像水和電一樣提供給用戶使用開始,人們就一直希望能夠更容易地獲得IT服務(wù),但是當(dāng)時并未得到實際應(yīng)用。直到2004年,Amazon推出EC2服務(wù)(彈性計算云,Elastic Compute Cloud),云計算作為一種簡單的、直觀的IT資源提供模式才開始走進不同用戶的視野。隨后的2006年,Google首席執(zhí)行官埃里克.施密特在搜索引擎大會上首次提出了“云計算”(CloudComputing)的概念。自此之后,云計算作為一種新的IT服務(wù)名詞被廣泛傳播。
[0003]目前普遍認(rèn)同的云計算概念是:云計算是一種由大規(guī)模商業(yè)利益驅(qū)動的計算模式,它能夠滿足用戶的需求,通過Internet從一個抽象的可動態(tài)擴展的虛擬化資源池中提供計算能力存儲資源以及平臺服務(wù)。
[0004]云計算中一個重要的問題就是負(fù)載均衡,這是云計算調(diào)度的一個重要目標(biāo)和指標(biāo)。
[0005]負(fù)載均衡(Load balancing)是一種計算機技術(shù),用來在多個計算機(虛擬機、計算機集群)、網(wǎng)絡(luò)連接、CPU、磁盤驅(qū)動器或其他資源中分配負(fù)載,以達到優(yōu)化資源使用、最大化吞吐率、最小化響應(yīng)時間,同時避免過載的目的。使用帶有負(fù)載均衡的多個服務(wù)組件,取代單一的組件,可以通過冗余提高可靠性。
[0006]負(fù)載均衡的起源是隨著互聯(lián)網(wǎng)信息的日益普及,無論在局域網(wǎng)、廣域網(wǎng)還是在以太網(wǎng)上,業(yè)務(wù)量和用戶訪問次數(shù)都呈現(xiàn)指數(shù)級增長,面對應(yīng)用或工作負(fù)載的突發(fā)狀況,單一的服務(wù)器節(jié)點會出現(xiàn)熱點問題,無法承擔(dān)突發(fā)的工作流,出現(xiàn)節(jié)點過載問題。目前針對節(jié)點過載問題的研究中,主要存在兩種解決辦法:其一是對服務(wù)器進行更新?lián)Q代,淘汰掉功能較弱的服務(wù)器,添置新型的更高性能的服務(wù)器來應(yīng)對增長的工作負(fù)載,這是一種縱向處理方法;第二種方法是進行橫向處理,將多個服務(wù)性能一般的服務(wù)器組合起來構(gòu)成一個集群,多臺并行執(zhí)行,使其處理能力相當(dāng)于一臺高性能的處理機。然而這兩種方法都具有各自的局限性:
[0007]第一種方案一方面比較浪費,被淘汰掉的服務(wù)器一般都不能再利用,并且在進行這種更替的過程中,必須要停掉服務(wù),會形成業(yè)務(wù)中斷,從而影響正常的工作。另一方面,這種解決方式的擴展性并不好,每次更新都淘汰舊的服務(wù)器,重新?lián)Q上更好的服務(wù)器。
[0008]第二種方案則是通過增加新的服務(wù)器來提高處理能力,不僅不丟棄舊的服務(wù)器,而且也不需要在部署系統(tǒng)時停掉服務(wù),和第一種相比,該方法有很大的優(yōu)越性。但是它同時也帶來了新的問題:由原來的單個服務(wù)器變成了集群結(jié)構(gòu),而其不足之處在于這些服務(wù)器之間都是相互獨立的,它們可以同時對多個用戶的請求而進行并行工作。但是對于大規(guī)模業(yè)務(wù)突發(fā)狀況來說,可能仍會出現(xiàn)某些服務(wù)器過忙,而另一些又過閑,集群資源未能充分利用,出現(xiàn)負(fù)載不均衡的狀況。
[0009]負(fù)載均衡算法以及機制的產(chǎn)生,很好地解決了集群環(huán)境下負(fù)載不均衡的問題,集群環(huán)境有一個管理節(jié)點,采用負(fù)載均衡算法將資源按照某種規(guī)則進行合理分配,同時又能很好的為用戶提供服務(wù)。因此負(fù)載均衡需要完成的主要任務(wù)如下:解決服務(wù)器過載問題,為多個并行用戶提供更好的服務(wù)質(zhì)量,提高任務(wù)的響應(yīng)時間,消除業(yè)務(wù)突發(fā)導(dǎo)致的熱點問題,提高服務(wù)器的利用率,實現(xiàn)集群資源的合理分配。
[0010]目前負(fù)載均衡的算法主要有如下幾種,他們各有優(yōu)缺點。
[0011]帶有偏好的隨機抽樣算法:帶有偏好的隨機抽樣(Biased Random Sampling)算法是一種分布式和可伸縮的負(fù)載平衡方法,該方法通過對系統(tǒng)域進行隨機取樣來實現(xiàn)自組織,從而平衡負(fù)載系統(tǒng)的所有節(jié)點。算法構(gòu)造了一個虛擬網(wǎng)絡(luò)拓?fù)鋱D,圖中的各節(jié)點的連通關(guān)系(服務(wù)器視為一個節(jié)點)代表了服務(wù)器上的負(fù)載。每個服務(wù)器節(jié)點的入度表示分派到該服務(wù)器的資源。這種負(fù)載均衡模式是非集中式的,這樣就更能適應(yīng)像云計算那樣的大規(guī)模網(wǎng)絡(luò)環(huán)境。但是隨著節(jié)點規(guī)模的提高和多樣性增加,性能會有所降低,而且不一定能達到最優(yōu)解。
[0012]Sufferage算法:在Sufferage算法中,第一步計算出所有任務(wù)分配到不同機器上的最短和次短完成時間,將兩者作差得到sufferage值,在第二步中選取sufferage值最大的任務(wù)分配到所對應(yīng)的完成時間最短的機器上執(zhí)行。Sufferage算法在批模式下能使得任務(wù)的makespan最短,但是忽略了任務(wù)的QoS需求而且負(fù)載均衡效果不佳。
[0013]投機負(fù)載均衡算法:投機負(fù)載均衡(Opportunistic Load Balancing, 0LB)算法按照任意的順序指派任務(wù)到空閑的虛擬機上,算法忽略任務(wù)的執(zhí)行時間,主要目的在于使所有的機器都保持繁忙狀態(tài)而不關(guān)心結(jié)果的最優(yōu)化。其優(yōu)點是簡單易實現(xiàn),但是無法保證完成時間最短。
[0014]Min-Min調(diào)度算法:算法從一些未分配的任務(wù)集合開始。首先,從映射方案集中找出預(yù)計完成時間最短的任務(wù)集合。然后,在這些任務(wù)集合中再選出執(zhí)行時間最小的分配方案。基于這個方案,任務(wù)被指派到對應(yīng)的機器上執(zhí)行。接著這臺虛擬機上運行的所有任務(wù)的執(zhí)行時間加上該任務(wù)的執(zhí)行時間,隨后從任務(wù)隊列中移除該任務(wù)。最后,算法繼續(xù)按照上述流程執(zhí)行,直到所有任務(wù)都被分配完畢。這種算法的主要缺點是容易造成饑餓效應(yīng)。
【發(fā)明內(nèi)容】
[0015]分布式系統(tǒng)必須根據(jù)動態(tài)的網(wǎng)絡(luò)狀況、不同結(jié)點的資源池使用情況來自適應(yīng)地選擇把任務(wù)分配給哪一個結(jié)點,以此來提高用戶的滿意度和資源利用率。因此,為了在最短時間內(nèi)增加整個分布式系統(tǒng)的吞吐量,必須基于負(fù)載均衡的目標(biāo)來結(jié)合基于特征策略的隨機抽樣方法和虛擬化技術(shù),讓整個系統(tǒng)的資源充分被調(diào)用起來,且節(jié)約能源,易擴展和維護。
[0016]基于以上理解及針對現(xiàn)有技術(shù)中的不足之處,本發(fā)明的目的在于既可以在局部范圍內(nèi)達到負(fù)載均衡,又可以在整個系統(tǒng)中達到負(fù)載均衡,并且盡可能的節(jié)省資源(電費),還可以達到網(wǎng)絡(luò)、CPU、內(nèi)存這三個主要的指標(biāo)全部負(fù)載均衡。從而讓這個系統(tǒng)易于擴展(需要使用的時候開通新的結(jié)點),便于維護(出現(xiàn)問題的結(jié)點可以暫時不用,待修理好之后再接入系統(tǒng)中使用),節(jié)省能源,提高整個系統(tǒng)的性能。即,通過隨機抽樣和虛擬化步驟,將整個分布式系統(tǒng)中的所有資源,包括網(wǎng)絡(luò)帶寬、CPU、內(nèi)存全部用到最大限度,并在最大限度的情況下能夠?qū)⑷蝿?wù)進行完美的處理;隨機抽樣步驟的特征在于將整個分布式系統(tǒng)的網(wǎng)絡(luò)帶寬用到最好;虛擬化步驟的特征在于將局部分布式系統(tǒng)的所有機器的CPU、內(nèi)存盡可能的發(fā)揮到最佳的狀態(tài)且保證系統(tǒng)的負(fù)載均衡。
[0017]根據(jù)本發(fā)明提供的一種結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,包括如下步驟:
[0018]步驟一:隨機抽樣步驟,所述隨機抽樣步驟用于根據(jù)不同地理位置的服務(wù)器和不同網(wǎng)絡(luò)分布,將批量的任務(wù)從全局主控結(jié)點分配到局部控制服務(wù)器(針對不同地理位置分布的服務(wù)器[比如微博的北京、上海的服務(wù)器]和不同網(wǎng)絡(luò)分布[比如使用移動聯(lián)通電信教育網(wǎng)]的服務(wù)器);
[0019]步驟二:虛擬化步驟,所述虛擬化步驟用于將局部控制服務(wù)器上面的批量任務(wù)分配到資源池對應(yīng)的虛擬機上面來處理。
[0020]優(yōu)選地,在步驟一中采用通信延遲策略和計算能力策略,以控制全局的負(fù)載均衡;
[0021]所述通信延遲策略,用于根據(jù)當(dāng)前整個系統(tǒng)的負(fù)載均衡較低時,在隨機抽樣步驟進行最后一個結(jié)點的選擇的時候,優(yōu)先選擇通信延遲較低的結(jié)點;
[0022]所述計算能力策略,用于根據(jù)當(dāng)前整個系統(tǒng)的負(fù)載均衡較高時,在隨機抽樣步驟進行結(jié)點選擇的時候,盡量選擇計算能力較強的結(jié)點。
[0023]優(yōu)選地,所述虛擬化步驟采用基于資源池分配的負(fù)載均衡算法和基于預(yù)測的彈性負(fù)載均衡算法,以負(fù)責(zé)局部的負(fù)載均衡;
[0024]所述基于資源池分配的負(fù)載均衡算法,根據(jù)當(dāng)前局部分布式系統(tǒng)的資源池的負(fù)載情況來分配任務(wù),以保證系統(tǒng)的所有資源池的虛擬機都能夠保證高質(zhì)量的負(fù)載均衡狀態(tài);
[0025]所述基于預(yù)測的彈性分配負(fù)載均衡算法,是當(dāng)任務(wù)分配到具體的資源池之后,針對資源池內(nèi)部的處理機制,以讓系統(tǒng)的資源池發(fā)揮到較高質(zhì)量的利用,或者讓空閑的虛擬機較少被利用,增加整個系統(tǒng)的性能,降低開銷。
[0026]優(yōu)選地,所述基于資源池分配的負(fù)載均衡算法,具體為:
[0027]輸入:待處理的任務(wù)TQ,T1……Tn以及可用的資源池P。,P1……Pn
[0028]輸出:一個任務(wù)分配方案,使得每一個待處理的任務(wù)均被分配到當(dāng)前負(fù)載最小的資源池中
[0029]數(shù)據(jù)結(jié)構(gòu):通過負(fù)載均衡器維護一張任務(wù)與資源池的映射表,用以保存已分配任務(wù)的情況
[0030]初始狀態(tài):所有資源池均未分配任務(wù),任務(wù)與資源池的映射表為空
[0031]數(shù)據(jù)中心每接收到一個請求執(zhí)行如下步驟:
[0032]步驟Al:數(shù)據(jù)中心接收到請求后交由負(fù)載均衡器進行處理;
[0033]步驟A2:解析任務(wù)與資源池的映射表,尋找當(dāng)前負(fù)載最小的資源池Ps ;
[0034]如果Ps在上一輪迭代中已被選中,那么繼續(xù)尋找負(fù)載次小的資源池Ps’作為目標(biāo)資源池;否則Ps即為本次迭代的目標(biāo)資源池;
[0035]步驟A3:負(fù)載均衡器將目標(biāo)資源池返回給數(shù)據(jù)中心,數(shù)據(jù)中心將該次請求分配給目標(biāo)資源池;[0036]步驟A4:數(shù)據(jù)中心通知負(fù)載均衡器更新任務(wù)與資源池的映射表;
[0037]步驟A5:返回步驟Al繼續(xù)處理下一個請求;
[0038]虛擬機每處理完一個請求執(zhí)行如下步驟:
[0039]步驟B1:資源池處理完請求后將消息反饋給數(shù)據(jù)中心;
[0040]步驟B2:數(shù)據(jù)中心通知負(fù)載均衡器釋放該任務(wù)并更新任務(wù)與資源池的映射表。
[0041]優(yōu)選地,所述基于預(yù)測的彈性分配負(fù)載均衡算法,具體為:
[0042]數(shù)據(jù)結(jié)構(gòu):負(fù)載均衡器負(fù)責(zé)維護三種隊列:
[0043]①于每一臺虛擬機S維護一個長度為ΡΛΙI的隊列Q,用以記錄S最近的負(fù)載狀況,
其中,T表示對資源池進行調(diào)整的時間間隔,t表示負(fù)載均衡器向處于運行狀態(tài)的虛擬機獲取負(fù)載數(shù)據(jù)的時間間隔;②對于每一個資源池P,維護長度為IpI的隊列i_queue,用以記錄P中處于空閑狀態(tài)的虛擬機在全局維護表schedule_list中,記錄需要進行調(diào)整的資源池
[0044]初始狀態(tài):Q以及schedule_list均為空,資源池P中的虛擬機均處于空閑狀態(tài)
[0045]每隔時間t:負(fù)載均衡器向處于運行狀態(tài)的虛擬機獲取負(fù)載數(shù)據(jù)
[0046]對于每一臺虛擬機Si,本次獲取的負(fù)載數(shù)據(jù)L,將被添加到相應(yīng)隊列Qi中;
[0047]每隔時間T:對資源池進行一次調(diào)整
[0048]步驟Cl:對于每一臺虛擬機Si,根據(jù)相應(yīng)負(fù)載隊列Qi中的負(fù)載數(shù)據(jù)Lp按如下公式計算出它的負(fù)載均值MSi
[0049]
【權(quán)利要求】
1.一種結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,其特征在于,包括如下步驟: 步驟一:隨機抽樣步驟,所述隨機抽樣步驟用于根據(jù)不同地理位置的服務(wù)器和不同網(wǎng)絡(luò)分布,將批量的任務(wù)從全局主控結(jié)點分配到局部控制服務(wù)器; 步驟二:虛擬化步驟,所述虛擬化步驟用于將局部控制服務(wù)器上面的批量任務(wù)分配到資源池對應(yīng)的虛擬機上面來處理。
2.根據(jù)權(quán)利要求1所述結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,其特征在于,在步驟一中采用通信延遲策略和計算能力策略,以控制全局的負(fù)載均衡; 所述通信延遲策略,用于根據(jù)當(dāng)前整個系統(tǒng)的負(fù)載均衡較低時,在隨機抽樣步驟進行最后一個結(jié)點的選擇的時候,優(yōu)先選擇通信延遲較低的結(jié)點; 所述計算能力策略,用于根據(jù)當(dāng)前整個系統(tǒng)的負(fù)載均衡較高時,在隨機抽樣步驟進行結(jié)點選擇的時候,盡量選擇計算能力較強的結(jié)點。
3.根據(jù)權(quán)利要求1所述結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,其特征在于,所述虛擬化步驟采用基于資源池分配的負(fù)載均衡算法和基于預(yù)測的彈性負(fù)載均衡算法,以負(fù)責(zé)局部的負(fù)載均衡; 所述基于資源池分配的負(fù)載均衡算法,根據(jù)當(dāng)前局部分布式系統(tǒng)的資源池的負(fù)載情況來分配任務(wù),以保證系 統(tǒng)的所有資源池的虛擬機都能夠保證高質(zhì)量的負(fù)載均衡狀態(tài); 所述基于預(yù)測的彈性分配負(fù)載均衡算法,是當(dāng)任務(wù)分配到具體的資源池之后,針對資源池內(nèi)部的處理機制,以讓系統(tǒng)的資源池發(fā)揮到較高質(zhì)量的利用,或者讓空閑的虛擬機較少被利用,增加整個系統(tǒng)的性能,降低開銷。
4.根據(jù)權(quán)利要求3所述結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,其特征在于,所述基于資源池分配的負(fù)載均衡算法,具體為: 輸入:待處理的任務(wù)T0, T1……Tn以及可用的資源池Ptl, P1……Pn 輸出:一個任務(wù)分配方案,使得每一個待處理的任務(wù)均被分配到當(dāng)前負(fù)載最小的資源池中 數(shù)據(jù)結(jié)構(gòu):通過負(fù)載均衡器維護一張任務(wù)與資源池的映射表,用以保存已分配任務(wù)的情況 初始狀態(tài):所有資源池均未分配任務(wù),任務(wù)與資源池的映射表為空 數(shù)據(jù)中心每接收到一個請求執(zhí)行如下步驟: 步驟Al:數(shù)據(jù)中心接收到請求后交由負(fù)載均衡器進行處理; 步驟A2:解析任務(wù)與資源池的映射表,尋找當(dāng)前負(fù)載最小的資源池Ps ; 如果Ps在上一輪迭代中已被選中,那么繼續(xù)尋找負(fù)載次小的資源池Ps’作為目標(biāo)資源池;否則Ps即為本次迭代的目標(biāo)資源池; 步驟A3:負(fù)載均衡器將目標(biāo)資源池返回給數(shù)據(jù)中心,數(shù)據(jù)中心將該次請求分配給目標(biāo)資源池; 步驟A4:數(shù)據(jù)中心通知負(fù)載均衡器更新任務(wù)與資源池的映射表; 步驟A5:返回步驟Al繼續(xù)處理下一個請求; 虛擬機每處理完一個請求執(zhí)行如下步驟: 步驟B1:資源池處理完請求后將消息反饋給數(shù)據(jù)中心; 步驟B2:數(shù)據(jù)中心通知負(fù)載均衡器釋放該任務(wù)并更新任務(wù)與資源池的映射表。
5.根據(jù)權(quán)利要求4所述結(jié)合隨機抽樣和虛擬化技術(shù)的負(fù)載均衡方法,其特征在于,所述基于預(yù)測的彈性分配負(fù)載均衡算法,具體為: 數(shù)據(jù)結(jié)構(gòu):負(fù)載均衡器負(fù)責(zé)維護三種隊列: ①于每一臺虛擬機S維護一個長度為FVtl的隊列Q,用以記錄S最近的負(fù)載狀況,其中,T表示對資源池進行調(diào)整的時間間隔,t表示負(fù)載均衡器向處于運行狀態(tài)的虛擬機獲取負(fù)載數(shù)據(jù)的時間間隔;②對于每一個資源池P,維護長度為|P|的隊列i_queue,用以記錄P中處于空閑狀態(tài)的虛擬機在全局維護表schedule_list中,記錄需要進行調(diào)整的資源池 初始狀態(tài):Q以及schedule_list均為空,資源池P中的虛擬機均處于空閑狀態(tài) 每隔時間t:負(fù)載均衡器向處于運行狀態(tài)的虛擬機獲取負(fù)載數(shù)據(jù) 對于每一臺虛擬機Si,本次獲取的負(fù)載數(shù)據(jù)L將被添加到相應(yīng)隊列Qi中; 每隔時間T:對資源池進行一次調(diào)整 步驟Cl:對于每一臺虛擬機Si,根據(jù)相應(yīng)負(fù)載隊列Qi中的負(fù)載數(shù)據(jù)Lp按如下公式計算出它的負(fù)載均值MSi
【文檔編號】H04L29/08GK103944997SQ201410178070
【公開日】2014年7月23日 申請日期:2014年4月29日 優(yōu)先權(quán)日:2014年4月29日
【發(fā)明者】唐飛龍, 欒志坤, 張健桐, 張楊, 袁博, 過敏意 申請人:上海交通大學(xué)