計,并將統(tǒng)計結(jié)果作為下一階段虛擬機部署方案的調(diào)整依據(jù),典型的應用場景例如:在每天的O點,統(tǒng)計前I天的系統(tǒng)內(nèi)節(jié)點流量情況,然后根據(jù)前I天的流量情況確定當天的虛擬機部署方案。
[0112]假設監(jiān)測到在某段歷史時期內(nèi),圖1所示的初始部署方案的流量情況如下:
[0113]節(jié)點I與節(jié)點2之間流量:D12= 2G ;
[0114]節(jié)點I與節(jié)點3之間流量-D13= 2G ;
[0115]節(jié)點I與節(jié)點4之間流量-D14= 2G ;
[0116]節(jié)點I與節(jié)點5之間流量:D15= IG ;
[0117]節(jié)點I與節(jié)點13之間流量:D113= IG ;
[0118]S104,根據(jù)Ci/和Dij,計算兩個虛擬機節(jié)點i和j之間的修正鄰接度Ai/
[0119]根據(jù)S102獲得的Ci/以及S103獲得的Dij,利用Ai/ = Ci/ *DU可以計算得到,圖1所示的系統(tǒng)節(jié)點間修正鄰接度分別為:
[0120]節(jié)點I與節(jié)點2之間的修正鄰接度:A12’ = 2*2.875 = 5.75 ;
[0121]節(jié)點I與節(jié)點3之間的修正鄰接度:A13’ = 2*2.875 = 5.75 ;
[0122]節(jié)點I與節(jié)點4之間的修正鄰接度:A14’ = 2*2.875 = 5.75 ;
[0123]節(jié)點I與節(jié)點5之間的修正鄰接度:A15’ = 1*3.375 = 3.375 ;
[0124]節(jié)點I與節(jié)點13之間的修正鄰接度:A113’ = 1*4.25 = 4.25。
[0125]S105,對網(wǎng)絡中的虛擬機節(jié)點構(gòu)成的修正鄰接度圖采用最小割算法,得到至少兩個集合;
[0126]這里的修正鄰接度圖是根據(jù)網(wǎng)絡中的虛擬機節(jié)點生成,對于任一修正鄰接度圖而言,圖中的不同的頂點分別對應一個不同的虛擬機節(jié)點、且所述兩個虛擬機節(jié)點i和j所對應的兩個頂點之間存在一條以Ai/為權重值的邊。
[0127]在本發(fā)明的一種【具體實施方式】中,可以先根據(jù)預設的聚類規(guī)則,對N個虛擬機節(jié)點進行聚類,得到至少一個類簇,在同一個類簇中,對于任意一個節(jié)點P,存在至少另一個節(jié)點P’,使得P’與P之間的修正鄰接度不小于預設的閾值;然后根據(jù)預定義的物理鄰接域劃分規(guī)則,確定所述網(wǎng)絡中每個物理鄰接域所能容納的虛擬機節(jié)點數(shù)量M,對各個類簇對應的修正鄰接度圖分別迭代使用2階最小割算法,得到對應于各個類簇的分割結(jié)果;其中,每組分割結(jié)果中包含至少一個集合,且每個集合中的虛擬機節(jié)點數(shù)量不大于M。
[0128]上述實施方式中,對虛擬機節(jié)點進行聚類的目的是:將交互關系比較密切的虛擬機節(jié)點劃分到相同的類簇中,使得同一類簇中的節(jié)點能夠優(yōu)先被分配到物理連接較為緊密的位置。
[0129]相應地,“物理鄰接域”可以按照實際需求靈活定義,例如,可以定義每臺物理服務器為一個物理鄰接域,也可以定義通信代價較小的多臺服務器為一個物理鄰接域。物理鄰接域劃分規(guī)則以預設信息的形式存儲,該預設信息可以被在最小割計算過程中被讀取,從而確定最小割算法中需要使用的參數(shù)M。
[0130]根據(jù)S104的計算結(jié)果,假設預設的修正鄰接度閾值為3,由于計算得到的6個修正鄰接度均大于該閾值,因此,確定節(jié)點1、2、3、4、5、13屬于同一類簇。進而以節(jié)點1、2、3、4、5、13為頂點、修正鄰接度為邊權重值,生成節(jié)點一張修正鄰接度圖。
[0131]在本實施例中,定義每臺物理服務器為一個物理鄰接域,即:每個物理鄰接域所能容納的虛擬機數(shù)量為2 ;
[0132]對修正鄰接度圖迭代使用2階最小割算法,直至各個子集合中的節(jié)點個數(shù)不大于2,最后得到包含5個虛擬機節(jié)點子集合的分割結(jié)果:5,13,4,3,(1,2)。可見,每個子集合中的節(jié)點數(shù)量均小于物理服務器所能容納的虛擬機數(shù)量2。另外,分割結(jié)果實際是一個子集合序列,各個子集合在序列中的相對位置,體現(xiàn)了在最小割迭代算法中分割子集合的先后順序:
[0133]第一次分割,根據(jù)修正鄰接度最小的A15’,將節(jié)點5分割為一個子集,
[0134]第二次分割,根據(jù)修正鄰接度次小的A113’,將節(jié)點13分割為一個子集,
[0135]......
[0136]以此類推,得到最終的分割結(jié)果5,13,4,3,(I, 2)。
[0137]可以理解的是,最小割算法的目的是:從圖的所有割中,確定邊權值之和最小的害J,因此,劃分結(jié)果可能并不唯一,例如在上例的劃分結(jié)果中,節(jié)點2、3、4是可以彼此調(diào)換的。另外為描述方便,在本實施例中僅涉及了節(jié)點I與其他節(jié)點間的流量,并未涉及其他節(jié)點間(例如節(jié)點2和3之間)的流量,而最小割算法本身能夠適應各種可能出現(xiàn)的情況,并不僅限于處理上述簡化情況。
[0138]在本發(fā)明的另一種【具體實施方式】中,還可以對包含N個虛擬機節(jié)點的修正鄰接度圖使用K階最小割算法,得到K個虛擬機節(jié)點子集合。這里的K是預設的數(shù)值,K值可以根據(jù)實際需求設置,例如根據(jù)網(wǎng)絡中物理鄰接域數(shù)量設置,或者根據(jù)系統(tǒng)業(yè)務的邏輯分組數(shù)量設置,等等。
[0139]預先設置K值的目的是:按照實際需求,直接把虛擬機節(jié)點劃分到K個組中。例如,對于圖1所示系統(tǒng),假設預設的數(shù)值K = 5,則直接對節(jié)點1-16構(gòu)成的修正鄰接度圖進行5階最小割運算,得到5個虛擬機節(jié)點子集合。
[0140]S106,根據(jù)最小割算法得到的至少兩個集合,對網(wǎng)絡中的虛擬機節(jié)點的部署位置進行調(diào)整。
[0141]可以理解的是,最小割算法僅是從數(shù)學的角度上,給出了對虛擬機部署方案的建議,但是該建議并不一定與系統(tǒng)的實際情況完全符合。因此在實際應用中,可能需要進一步結(jié)合系統(tǒng)的實際情況,對最小割算法的結(jié)果進行優(yōu)化,總的優(yōu)化原則是:在調(diào)整后的虛擬機部署方案中,對于任意虛擬機節(jié)點X,若存在虛擬機節(jié)點y與X屬于相同的集合、虛擬機節(jié)點z與X屬于不同的集合,則X與y之間的通信代價不大于X與z之間的通信代價。具體的優(yōu)化策略可參考現(xiàn)有技術的實現(xiàn)方式,本發(fā)明實施例對此不做詳細介紹。
[0142]例如,在迭代使用最小割算法的情況下,根據(jù)迭代原理,各個子集合在序列中的相對位置,體現(xiàn)了迭代分割子集合的先后順序,而最先分割出的節(jié)點集,應該部署到通信代價較小的位置。
[0143]根據(jù)S105中的分割結(jié)果5,13,4,3,(I, 2),確定最終的虛擬機部署方案,由控制器對虛擬機的部署位置進行迀移,調(diào)整后的虛擬機部署方案如圖6所示??梢?,數(shù)據(jù)交互量較大的虛擬機I和2、虛擬機I和3或虛擬機I和4被調(diào)整到通信代價較小的位置,而數(shù)據(jù)交互量較小的虛擬機I和13、虛擬機I和5則被調(diào)整到通信代價較大的位置,該調(diào)整結(jié)果與實際期望的調(diào)整結(jié)果相符。
[0144]可見,本發(fā)明實施例所采用的方案,通過對節(jié)點間通信代價Cij進行修正,使得修正后的節(jié)點間通信代價既能體現(xiàn)對虛擬機部署位置調(diào)整結(jié)果的影響,又使得通信流量在調(diào)整結(jié)果中起到主導影響作用,從而可以得到更為合理的虛擬機部署位置調(diào)整結(jié)果。
[0145]相應于上面的方法實施例,本發(fā)明實施例還提供一種虛擬機部署位置調(diào)整裝置,該裝置可以應用于云計算系統(tǒng)中的控制器,或者應用于其他網(wǎng)絡管理實體中。參見圖7所示,該虛擬機部署位置調(diào)整裝置100可以包括:
[0146]通信代價確定模塊110、數(shù)據(jù)平滑模塊120、流量統(tǒng)計值獲得模塊130、修正鄰接度計算模塊140、最小割計算模塊150、調(diào)整模塊160。以下詳細對各個模塊的工作原理及協(xié)作關系進彳丁介紹。
[0147]通信代價確定模塊110,用于根據(jù)虛擬機所在網(wǎng)絡的拓撲結(jié)構(gòu),以及根據(jù)所述網(wǎng)絡中任意兩個虛擬機節(jié)點i和j所述屬的物理服務器情況確定所述節(jié)點i和j之間的通信代價 CijQ 幸 j),
[0148]Cij為表示節(jié)點i和節(jié)點j之間的通信代價,兩個節(jié)點之間的通信代價一般可以理解為兩個節(jié)點之間的通信距離,通信代價由網(wǎng)絡拓撲結(jié)構(gòu)決定,也就是說,在一個確定的網(wǎng)絡中,任意兩個給定位置之間的通信代價是不會變化的。
[0149]為方便計算,兩個虛擬機節(jié)點之間的通信代價可以根據(jù)節(jié)點間的交換機數(shù)量確定,另外,同一臺物理服務器內(nèi)的虛擬機之間不需要經(jīng)過交換機即可通信,因此可以統(tǒng)一規(guī)定:同一臺物理服務器中的兩個節(jié)點通信代價為一個預設數(shù)值。也就是說:在i和j不屬于同一物理服務器的情況下,Cij為i和j之間的交換機數(shù)量,在i和j屬于同一物理服務器的情況下,Ci#預設的數(shù)值。一般而言,該預設數(shù)值可以在區(qū)間(0,1]中選取。
[0150]假設系統(tǒng)初始的虛擬機部署方案如圖1所示,并且規(guī)定:同一臺物理服務器中的兩個節(jié)點通信代價為I ;則按照圖1的部署方案,虛擬機的總數(shù)N = 16,可以得到如圖2所示的大小為16*16通信代價矩陣。
[0151]根據(jù)圖2所示的通信代價矩陣,可以看出=Cij= Cji,即兩個節(jié)點間的正反向通信代價相同。另外,由于節(jié)點與其自身事實上并不存在通信代價的概念,因此當i = j時,Cij并無實際意義,圖2所示矩陣中,將主對角線上的值用表示,這些數(shù)值不需要參與后續(xù)計算。
[0152]數(shù)據(jù)平滑模塊120,用于對通信代價確定模塊110得到的Cij使用數(shù)據(jù)平滑算法,得到兩個虛擬機節(jié)點i和j之間的通信代價的修正值Ci/ ;
[0153]在本發(fā)明的實施例中,使用數(shù)據(jù)平滑算法的目的是:減小Cu中最大值和最小值的差距,減小Cij的數(shù)值范圍。本領域技術人員可以根據(jù)實際需求選擇數(shù)據(jù)平滑模塊120所使用的具體的數(shù)據(jù)平滑算法,例如式(2.1)、(2.2)、(2.3)所示的平滑算法等,本發(fā)明實施例對此并不需要進行限定。
[0154]在本實施例中,數(shù)據(jù)平滑模塊120使用公式(2.1)對(^_進行平滑處理。
[0155]根據(jù)系統(tǒng)的網(wǎng)絡拓撲結(jié)構(gòu),統(tǒng)計各種通信代價的取值可能出現(xiàn)的概率,例如:根據(jù)圖1所示系統(tǒng)的網(wǎng)絡拓撲結(jié)構(gòu),統(tǒng)計結(jié)果如下:
[0156]通信代價取值I在網(wǎng)絡中的出現(xiàn)概率為1/4 ;
[0157]通信代價取值3在網(wǎng)絡中的出現(xiàn)概率為1/4 ;
[0158]通信代價取值5在網(wǎng)絡中的出現(xiàn)概率為1/2 ;
[0159]根據(jù)統(tǒng)計結(jié)果,計算出整個網(wǎng)絡中任意兩點之間的通信代價平均值Ce:
[0160]Ce= 1*1/4+3*1/4+5*1/2 = 3.5
[0161]根據(jù)Ci/ = Ci^Pij+C^(1-Pij)對節(jié)點之間的通信代價進行修正,其中P