本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,更準確地說,本發(fā)明涉及一種云計算數(shù)據(jù)中心負載均衡調(diào)度策略方法。
背景技術(shù):云計算數(shù)據(jù)中心有著十萬百萬規(guī)模的服務(wù)器或PC機等,資源數(shù)量大,異構(gòu)性強。其中,數(shù)據(jù)中心服務(wù)器的負載均衡問題直接影響到整個系統(tǒng)性能的好壞,因此負載均衡調(diào)度算法的研究已成為人們關(guān)注和研究的熱點。云計算數(shù)據(jù)中心按用戶需求根據(jù)調(diào)度策略動態(tài)地將資源服務(wù)器分配給用戶。由于數(shù)據(jù)中心服務(wù)器資源處理性能不一致或者用戶需求規(guī)格(比如,用戶請求服務(wù)的時間長度,問題難度)不一致,如果采用簡單的分配調(diào)度方法,例如常用的輪轉(zhuǎn)法、加權(quán)輪轉(zhuǎn)法、最小連接算法、加權(quán)最小連接算法、哈希法等,很難達到物理服務(wù)器真正的負載均衡。具體而言,輪轉(zhuǎn)調(diào)度算法就是將外部請求按順序輪流分配到集群中的服務(wù)器上,算法簡單但不適用于物理服務(wù)器處理性能不一致的情況。加權(quán)輪轉(zhuǎn)調(diào)度算法是用相應(yīng)的權(quán)值表示服務(wù)器的處理性能,根據(jù)權(quán)值的高低按輪循方式分配請求到各服務(wù)器,在輪轉(zhuǎn)法的基礎(chǔ)上考慮了物理服務(wù)器處理性能不一致的情況,但是當用戶需求規(guī)格不一致時仍然存在負載不均衡的問題。最小連接調(diào)度算法是把新的連接請求分配到當前連接數(shù)最小的服務(wù)器,這一方法無法解決服務(wù)器處理性能不一致和用戶需求規(guī)格不一致而造成的負載不均衡問題。加權(quán)最小連接調(diào)度算法是用相應(yīng)的權(quán)值表示服務(wù)器的處理性能,在調(diào)度新連接時盡可能使服務(wù)器的已建立連接數(shù)與其權(quán)值成比例,這一方法同樣無法解決用戶需求規(guī)格 不一致造成的負載不均衡問題。哈希法預(yù)先設(shè)定一個哈希函數(shù),用于映射用戶需求的虛擬機到相應(yīng)的物理服務(wù)器上,執(zhí)行速度較快,但如何設(shè)計一個哈希函數(shù)既滿足用戶的需求又滿足物理服務(wù)器配置不一致并且解決負載不均衡的問題幾乎是不可能的。加權(quán)最小連接調(diào)度算法是在最小連接調(diào)度算法基礎(chǔ)上發(fā)展而來,是LVS(LinuxVirtualSystem)默認的負載分配算法。這種算法適用于服務(wù)器節(jié)點處理性能有差異的情況,但是仍然存在著以下幾個不足的地方:(1)對服務(wù)器性能權(quán)值的設(shè)置不能準確的反映節(jié)點的真實處理能力。由于權(quán)值是事先根據(jù)服務(wù)器節(jié)點的配置情況和管理員的經(jīng)驗設(shè)定的,隨著運行時間的增加,有些節(jié)點負載已經(jīng)很重,但仍不斷收到連接請求,而有些節(jié)點卻處于空閑狀態(tài),使得這些事先設(shè)定的權(quán)值已不再能準確的反映出節(jié)點的真實處理能力,造成整個系統(tǒng)負載發(fā)生傾斜,影響系統(tǒng)性能的發(fā)揮。(2)僅僅以連接數(shù)來表示節(jié)點負載,并不能很準確的表示服務(wù)節(jié)點的實時負載情況。連接數(shù)在一定程度上能反映出節(jié)點的負載情況,但只是個數(shù)量上的反映,而沒有考慮不同請求任務(wù)類型之間的差異,所以也不能反映出節(jié)點的實時負載情況。例如在WWW服務(wù)中,假設(shè)兩臺服務(wù)器某刻保持著相同的連接數(shù),但是一臺服務(wù)器處理的是多媒體視頻的傳送請求,而另一臺只是負責(zé)處理傳送純文本的網(wǎng)頁信息。由于處理不同的請求所耗費的時間和系統(tǒng)資源不同,兩臺服務(wù)器此時的負載顯然是存在差異的。因此僅依靠連接數(shù)來衡量負載是不全面的。
技術(shù)實現(xiàn)要素:本發(fā)明的目的是:為了解決現(xiàn)有技術(shù)中加權(quán)最小連接調(diào)度算法的不足,提供一種基于雙加權(quán)最小連接算法的云計算負載均衡調(diào)度算法,從而實現(xiàn)更好的負載均衡。具體地說,本發(fā)明是采用以下的技術(shù)方案來實現(xiàn)的,包括下列步驟:1)對于每臺服務(wù)器,計算出各服務(wù)器上所有的任務(wù)權(quán)值之和與服務(wù)器性能權(quán)值之比;2)當有新的請求任務(wù)到達時,將新的請求任務(wù)分配到步驟1)中計算出的服務(wù)器上所有的任務(wù)權(quán)值之和與服務(wù)器性能權(quán)值之比最小的服務(wù)器上。本發(fā)明的進一步特征在于,所述服務(wù)器性能權(quán)值的計算方法如下:設(shè)有服務(wù)器組為S={S0,S1,…Sn-1},服務(wù)器Si的CPU個數(shù)用Cnt(Si)表示,CPU處理速率用C(Si)表示,CPU空閑率用Vc(Si)表示,內(nèi)存容量用M(Si)表示,內(nèi)存空閑率用Vm(Si)表示,服務(wù)器性能權(quán)值用W(Si)表示,則:W(Si)=k1*Cnt(Si)*C(Si)*Vc(Si)+k2*M(Si)*Vm(Si)其中,k1為CPU空閑率Vc(Si)對于W(Si)的權(quán)值系數(shù),k2為內(nèi)存空閑率Vm(Si)對于W(Si)的權(quán)值系數(shù),k1+k2=1,Vc(Si)∈(0,1),Vm(Si)∈(0,1)。本發(fā)明的進一步特征在于:所述k1=0.6,k2=0.4。本發(fā)明的進一步特征在于:設(shè)有多種任務(wù)M={M1,M2,…,Mt},t為任務(wù)的種類總數(shù),這些任務(wù)的權(quán)值分別為P={P1,P2,…Pt},Cij為服務(wù)器Si上處理第j種任務(wù)的數(shù)量,則服務(wù)器Si上所有任務(wù)的權(quán)值之和為:本發(fā)明的有益效果如下:本發(fā)明在加權(quán)最小連接調(diào)度算法對資源服務(wù)器的性能進行加權(quán)的基礎(chǔ)上,采用服務(wù)器上CPU空閑率和內(nèi)存空閑率等實時信息動態(tài)地表示服務(wù)器性能的權(quán)值,從而充分評估和利用各節(jié)點服務(wù)器的剩余處理能力;根據(jù)任務(wù)類型的復(fù)雜程度為任務(wù)賦予相應(yīng)的權(quán)值;為保證系統(tǒng)在長時間運行狀態(tài)下各個節(jié)點的負載不發(fā)生較大的傾斜,每次分配任務(wù)之前,調(diào)度器將計算出每個服務(wù)器上所有任務(wù)的權(quán)值之和與服務(wù)器性能的權(quán)值之比,將新任務(wù)分配給比值最小的服務(wù)器。本發(fā)明降低了整個云計算服務(wù)體系的平均完成時間,即提高了系統(tǒng)效率;同時提高了云數(shù)據(jù)中心各個資源服務(wù)器的負載均衡程度。附圖說明圖1為本發(fā)明的雙加權(quán)最小連接云計算負載均衡調(diào)度算法的執(zhí)行流程圖。圖2為任務(wù)數(shù)為150時最小連接調(diào)度算法完成任務(wù)時間情況。圖3為任務(wù)數(shù)為150時加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。圖4為任務(wù)數(shù)為150時雙加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。圖5為任務(wù)數(shù)為1500時最小連接調(diào)度算法完成任務(wù)時間情況。圖6為任務(wù)數(shù)為1500時加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。圖7為任務(wù)數(shù)為1500時雙加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。圖8為任務(wù)數(shù)為15000時最小連接調(diào)度算法完成任務(wù)時間情況。圖9為任務(wù)數(shù)為15000時加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。圖10為任務(wù)數(shù)為15000時雙加權(quán)最小連接調(diào)度算法完成任務(wù)時間情況。具體實施方式下面參照附圖并結(jié)合實例對本發(fā)明作進一步詳細描述。本發(fā)明算法設(shè)計思想如下:為了實現(xiàn)更好的負載均衡,將服務(wù)器的性能進行綜合考慮,實現(xiàn)動態(tài)賦權(quán)值;同時根據(jù)任務(wù)類型的復(fù)雜程度,確定每個任務(wù)的權(quán)值。從而使負載均衡器能夠更為準確地了解各個服務(wù)器節(jié)點的實時處理性能和負載狀況,選取最合適的服務(wù)節(jié)點。(1)采用實時信息動態(tài)地表示服務(wù)器性能的權(quán)值,從而充分評估和利用各節(jié)點服務(wù)器的剩余處理能力。通常情況下,服務(wù)器的處理能力可以用幾個指標綜合量度:CPU類型,CPU數(shù)量,CPU空閑率,內(nèi)存空閑率,網(wǎng)絡(luò)剩余帶寬,進程數(shù)等。為了不給調(diào)度器增加過多的計算任務(wù)以避免其成為新的瓶頸,在新的改進算法中僅取可由服務(wù)器節(jié)點自身計算完成并且是描述服務(wù)器節(jié)點當前處理能力最重要的兩個參數(shù):CPU空閑率和內(nèi)存空閑率來描述服務(wù)器性能。在每次分配 任務(wù)之前,調(diào)度器將收集每個服務(wù)器的CPU空閑率和內(nèi)存空閑率并計算出服務(wù)器性能的權(quán)值。(2)根據(jù)任務(wù)中文件的類型為任務(wù)賦予相應(yīng)的權(quán)值。任務(wù)中文件的擴展名可確定文件的類型,從而確定任務(wù)的權(quán)值。任務(wù)中文件所需資源越多,任務(wù)權(quán)值越高。服務(wù)器節(jié)點的實時負載即為服務(wù)器上所有任務(wù)的權(quán)值之和。在每次分配任務(wù)之前,調(diào)度器將計算出每個服務(wù)器上所有任務(wù)的權(quán)值之和。(3)為保證系統(tǒng)在長時間運行狀態(tài)下各個節(jié)點的負載不發(fā)生較大的傾斜,每次分配任務(wù)之前,調(diào)度器將計算出每個服務(wù)器上所有任務(wù)的權(quán)值之和與服務(wù)器性能的權(quán)值之比,將新任務(wù)分配給比值最小的服務(wù)器。權(quán)值的具體計算過程如下:(1)服務(wù)器性能權(quán)值的確定假設(shè)有一組服務(wù)器S={S0,S1,…,Sn-1},服務(wù)器Si的CPU個數(shù)用Cnt(Si)表示,CPU處理速率用C(Si)表示,CPU空閑率用Vc(Si)表示,內(nèi)存容量用M(Si)表示,內(nèi)存空閑率用Vm(Si)表示,服務(wù)器性能權(quán)值用W(Si)表示。服務(wù)器性能的權(quán)值越大,表示其處理能力越強。W(Si)為0時代表服務(wù)節(jié)點故障。在此引入一個權(quán)值表達函數(shù):W(Si)=k1*Cnt(Si)*C(Si)*Vc(Si)+k2*M(Si)*Vm(Si)(1)其中,k1為CPU空閑率Vc(Si)對于W(Si)的權(quán)值系數(shù),k2為內(nèi)存空閑率Vm(Si)對于W(Si)的權(quán)值系數(shù),k1+k2=1,Vc(Si)∈(0,1),Vm(Si)∈(0,1)。顯然k1與k2不可能同時為0,且在實際應(yīng)用中,CPU與內(nèi)存同時完全滿載的可能性也非常小,即CPU空閑率Vc(Si)與內(nèi)存空閑率Vm(Si)也不會同時為0,故由權(quán)值計算函數(shù)得出的權(quán)值W(Si)不會為0,為0的權(quán)值通常只出現(xiàn)在得不到響應(yīng)從而認為其宕機的服務(wù)節(jié)點中。由權(quán)值表達函數(shù)可以看出k1與k2的值實際在一定程度上代表CPU空閑率 Vc(Si)與內(nèi)存空閑率Vm(Si)在描述服務(wù)節(jié)點處理能力上的重要程度,考慮到二者之中,CPU空閑率相對于內(nèi)存空閑率較為重要,故k1的值應(yīng)大于k2的值,在此不妨設(shè)k1:k2為黃金分割比,即0.618:0.382??紤]到浮點運算的計算復(fù)雜性,取其近似值0.6:0.4,即k1=0.6,k2=0.4。完整的權(quán)值表達函數(shù)如下:W(Si)=0.6*Cnt(Si)*C(Si)*Vc(Si)+0.4*M(Si)*Vm(Si)(2)(2)任務(wù)權(quán)值的確定設(shè)有多種任務(wù)M={M1,M2,…,Mt},t為任務(wù)的種類總數(shù)。根據(jù)任務(wù)類型的復(fù)雜程度,這些任務(wù)的權(quán)值分別為P={P1,P2,…,Pt},任務(wù)類型越復(fù)雜,權(quán)值越高。設(shè)Cij為服務(wù)器Si上處理第j種任務(wù)的數(shù)量,則服務(wù)器Si上所有任務(wù)的權(quán)值之和為:算法流程設(shè)計如下:(1)對每臺服務(wù)器進行編號1~N;(2)根據(jù)服務(wù)器的處理能力設(shè)定服務(wù)器性能權(quán)值;(3)根據(jù)任務(wù)類型的復(fù)雜度設(shè)定任務(wù)權(quán)值;(4)對于每臺服務(wù)器,計算出服務(wù)器上所有的任務(wù)權(quán)值之和與服務(wù)器性能權(quán)值之比;(5)將任務(wù)分配給比值最小的服務(wù)器。服務(wù)器上已有的任務(wù)越簡單,其任務(wù)權(quán)值越?。磺曳?wù)器的處理能力越強,其權(quán)值越大。故當有新的請求到達的時候,總是將任務(wù)分配到服務(wù)器上已有的任務(wù)權(quán)值之和與服務(wù)器性能權(quán)值之比最小的服務(wù)器上。即當前的新連接請求會被發(fā)送至服務(wù)器Sm,當且僅當服務(wù)器Sm滿足以下條件:所以判斷條件為:其中,i=0,1,...n-1,W(Si)不為零。若公式(4)的判斷條件不滿足,則表示Sm為已有的任務(wù)權(quán)值之和與服務(wù)器性能權(quán)值之比最小的服務(wù)器,此時,應(yīng)將新任務(wù)發(fā)送到服務(wù)器Sm。因為除法所需的CPU周期比乘法多,且在Linux內(nèi)核中不允許浮點除法,服務(wù)器性能的權(quán)值都大于零,所以判斷條件可以進一步優(yōu)化為同時保證服務(wù)器性能的權(quán)值為零時,服務(wù)器不被調(diào)度。由于數(shù)據(jù)中心服務(wù)器提供每天24小時的不間斷服務(wù),因此算法一直運行,直到所有的服務(wù)器都停止提供服務(wù),算法才會結(jié)束。本實施例為簡化處理,根據(jù)任務(wù)中不同文件類型所需資源不同,將任務(wù)分為四種類型,即在實際運行時,將任務(wù)中的文件分為四個大類,對應(yīng)四種任務(wù),表示如下:1)文檔文件,系統(tǒng)文件,映像文件,備份文件,臨時文件,模板文件,批處理文件;權(quán)值為1。2)圖形文件,壓縮文件,可執(zhí)行文件,語言文件;權(quán)值為2。3)聲音文件;權(quán)值為3。4)影像文件;權(quán)值為4。根據(jù)文件的擴展名可判斷文件的類型,從而確定任務(wù)的權(quán)值。此時,公式(5)即變化為圖2~圖10為算法仿真結(jié)果圖。圖2~圖4,圖5~圖7,圖8~圖10分別表示對于三組任務(wù)(150個,1500 個,15000個任務(wù)),分別使用三種調(diào)度算法(最小連接調(diào)度算法,加權(quán)最小連接調(diào)度算法和雙加權(quán)最小連接調(diào)度算法)的任務(wù)完成時間情況。任務(wù)完成時間的均值代表了整個云計算系統(tǒng)的平均完成時間,即代表系統(tǒng)效率,均值越小,表明系統(tǒng)效率越高。標準差代表其負載均衡的效果,標準差越小,表明其負載均衡程度越高。圖2~圖4,圖5~圖7,圖8~圖10表示當任務(wù)數(shù)相同時,雙加權(quán)最小連接調(diào)度算法的系統(tǒng)效率最高,最小連接調(diào)度算法次之,而加權(quán)最小連接調(diào)度算法的系統(tǒng)效率是最低的;雙加權(quán)最小連接調(diào)度算法的負載均衡效果最好,加權(quán)最小連接調(diào)度算法次之,而最小連接調(diào)度算法的負載均衡效果是最差的。由圖2、圖5、圖8,圖3、圖6、圖9,圖4、圖7、圖10可知,隨著任務(wù)數(shù)的增加,雙加權(quán)最小連接調(diào)度算法的負載均衡效果和效率優(yōu)勢更加明顯。雖然本發(fā)明已以較佳實施例公開如上,但實施例并不是用來限定本發(fā)明的。在不脫離本發(fā)明之精神和范圍內(nèi),所做的任何等效變化或潤飾,同樣屬于本發(fā)明之保護范圍。因此本發(fā)明的保護范圍應(yīng)當以本申請的權(quán)利要求所界定的內(nèi)容為標準。