能夠保證在迀移過程中各個服務(wù)器負(fù)責(zé)區(qū)域的無孔連通性,從而從整體上減小了各個服務(wù)器間的通信開銷和客戶端迀移帶來的系統(tǒng)開銷,降低了動態(tài)匹配過程可能對虛擬世界完整性造成的影響,從而從整體上提高了多服務(wù)器DVE系統(tǒng)的可用性,能夠有效保證各服務(wù)器維護區(qū)域的連通性,匹配過程速度快、效果好、用戶真實體驗好、適用性好的優(yōu)點。
【附圖說明】
[0011]圖1為現(xiàn)有技術(shù)多服務(wù)器DVE系統(tǒng)的結(jié)構(gòu)示意圖。
[0012]圖2為本發(fā)明實施例方法的基本流程示意圖。
[0013]圖3為本發(fā)明實施例步驟2)的基本流程示意圖。
[0014]圖4為區(qū)塊迀出區(qū)域的無孔連通性保持原則各種情況的示意圖。
【具體實施方式】
[0015]如圖1所示,本實施例多服務(wù)器DVE系統(tǒng)中保持連通性的動態(tài)匹配方法的步驟包括:
I)在多服務(wù)器DVE系統(tǒng)運行前,預(yù)先將多服務(wù)器DVE系統(tǒng)的虛擬環(huán)境的二維空間根據(jù)服務(wù)器數(shù)量劃分為多個無孔的連通區(qū)域,每個區(qū)域都由具有相同大小的正方形的區(qū)塊組成,區(qū)塊為負(fù)載均衡過程中不同服務(wù)器之間進(jìn)行二維空間迀移的最小單位;連通區(qū)域指組成該區(qū)域的所有區(qū)塊可組成強連通子圖,對于該區(qū)域中的任何兩個區(qū)塊,都可以在該區(qū)域內(nèi)找到一條路徑連接這兩個區(qū)塊,且該路徑只包括水平和垂直兩個方向的連接線,并不包括45度角的斜線;無孔的連通區(qū)域是指該區(qū)域內(nèi)部不包含不屬于該區(qū)域的區(qū)塊,描述為該連通區(qū)域的補充區(qū)域也是連通區(qū)域,該連通區(qū)域的補充區(qū)域是指虛擬空間中除去該連通區(qū)域的之外其他區(qū)塊共同組成的區(qū)域;將劃分得到的多個無孔的連通區(qū)域分別指派給不同的服務(wù)器,每個服務(wù)器負(fù)責(zé)維護所分配區(qū)域及其上運行的客戶端實體; 2)在多服務(wù)器DVE系統(tǒng)運行期間,各個服務(wù)器周期性地檢查自身的負(fù)載情況,如果負(fù)載超出預(yù)設(shè)的負(fù)載閾值,則啟動動態(tài)匹配過程,根據(jù)區(qū)域連通性檢查法則和區(qū)塊滿意度優(yōu)化原則對所分配區(qū)域的備選迀移區(qū)塊進(jìn)行選擇,并根據(jù)選擇結(jié)果將相應(yīng)區(qū)塊發(fā)送給維護相鄰區(qū)域的服務(wù)器。
[0016]本實施例中,步驟2)的詳細(xì)步驟包括:
2.1)在多服務(wù)器DVE系統(tǒng)運行期間,各個服務(wù)器周期性地檢查自己的負(fù)載情況,判斷自身的負(fù)載是否超出預(yù)設(shè)的負(fù)載閾值,如果自身的負(fù)載超出預(yù)設(shè)的負(fù)載閾值,則跳轉(zhuǎn)執(zhí)行步驟2.2),否則在下一個周期時跳轉(zhuǎn)執(zhí)行步驟2.1);
2.2)當(dāng)前服務(wù)器向在多服務(wù)器DVE系統(tǒng)虛擬環(huán)境的二維空間中維護相鄰區(qū)域的服務(wù)器發(fā)送區(qū)塊迀移請求,收到區(qū)塊迀移請求的服務(wù)器根據(jù)自身目前負(fù)載情況給予反饋,若目前處于低負(fù)載情況則反饋可以迀移,否則反饋無法迀移;
2.3)當(dāng)前服務(wù)器接收來自其他服務(wù)器的反饋,若其他服務(wù)器均反饋無法接收當(dāng)前服務(wù)器的迀移請求,則本周期的動態(tài)匹配過程中止,在下一周期跳轉(zhuǎn)執(zhí)行步驟2.1),否則當(dāng)前服務(wù)器從自身維護的區(qū)域中選擇備選迀移區(qū)塊準(zhǔn)備進(jìn)行動態(tài)匹配;
2.4)當(dāng)前服務(wù)器根據(jù)區(qū)域連通性檢查法則對備選迀移區(qū)塊進(jìn)行篩選,保留可以保持迀出與迀入服務(wù)器的無孔連通性的區(qū)塊;
2.5)當(dāng)前服務(wù)器根據(jù)區(qū)塊滿意度優(yōu)化原則對可迀移區(qū)塊進(jìn)行排序;
2.6)當(dāng)前服務(wù)器根據(jù)排序結(jié)果選擇區(qū)塊發(fā)送給反饋可以進(jìn)行迀移的服務(wù)器實施迀移;
2.7)當(dāng)前服務(wù)器判斷自身的負(fù)載情況是否仍然超出預(yù)設(shè)的負(fù)載閾值,如果仍然超出預(yù)設(shè)的負(fù)載閾值,則跳轉(zhuǎn)執(zhí)行步驟2.4);否則迀移過程結(jié)束,在下一個周期跳轉(zhuǎn)執(zhí)行步驟
2.D0
[0017]本實施例中,步驟2.4)的詳細(xì)步驟包括:
2.4.1)對備選迀移區(qū)塊和待迀出區(qū)域按照區(qū)塊迀出區(qū)域的無孔連通性保持原則進(jìn)行檢查,如果可以保持,則在可迀移區(qū)塊列表中保留該區(qū)塊,否則剔除該區(qū)塊;
2.4.2)對備選迀移區(qū)塊和待迀入?yún)^(qū)域的補充區(qū)域按照區(qū)塊迀出區(qū)域的無孔連通性保持原則進(jìn)行檢查,如果可以保持,則在可迀移區(qū)塊列表中保留該區(qū)塊,否則剔除該區(qū)塊。
[0018]本實施例中,區(qū)塊迀出區(qū)域的無孔連通性保持原則包括下述規(guī)則:①如果區(qū)塊與區(qū)域的交界線有一個,則該區(qū)塊迀出該區(qū)域不會影響區(qū)域的無孔連通性;②如果區(qū)塊與區(qū)域的交界線有兩個、且交界線位于區(qū)塊相對的兩側(cè),則該區(qū)塊迀出該區(qū)域會影響區(qū)域的無孔連通性;③如果區(qū)塊與區(qū)域的交界線有兩個、且交界線位于區(qū)塊相鄰的兩側(cè),當(dāng)該區(qū)塊在相鄰交界線的對角區(qū)塊也屬于該區(qū)域時,則該區(qū)塊迀出該區(qū)域不會影響區(qū)域的無孔連通性,否則當(dāng)該區(qū)塊在相鄰交界線的對角區(qū)塊不屬于該區(qū)域時,則該區(qū)塊迀出該區(qū)域會影響區(qū)域的無孔連通性,相鄰交界線的對角區(qū)塊是指與該區(qū)塊相鄰的兩個區(qū)塊也都相鄰的區(qū)塊;④如果區(qū)塊與區(qū)域的交界線有三個,當(dāng)該區(qū)塊在兩組相鄰交界線的對角區(qū)塊都屬于該區(qū)域時,則該區(qū)塊迀出該區(qū)域不會影響區(qū)域的無孔連通性,否則當(dāng)該區(qū)塊在兩組相鄰交界線的對角區(qū)塊不都屬于該區(qū)域時,則該區(qū)塊迀出該區(qū)域會影響區(qū)域的無孔連通性,相鄰交界線的對角區(qū)塊是指與該區(qū)塊相鄰的兩組區(qū)塊分別相鄰的兩個區(qū)塊;⑤如果區(qū)塊與區(qū)域的交界線有四個,則該區(qū)塊迀出該區(qū)域會影響區(qū)域的無孔連通性。
[0019]本實施例中,步驟2.5)的詳細(xì)步驟包括:對備選迀移區(qū)塊按區(qū)塊不滿意度調(diào)整值由高到低的順序進(jìn)行排序,區(qū)塊不滿意度調(diào)整值為該備選迀移區(qū)塊在迀出服務(wù)器的不滿意度減去該區(qū)塊在待迀入服務(wù)器的不滿意度,區(qū)塊在服務(wù)器的不滿意度是指該區(qū)塊中與該服務(wù)器的通信延遲高于額定延遲的客戶端的數(shù)量。
[0020]對于需要劃分為多個區(qū)域的多服務(wù)器DVE系統(tǒng)來說,如果可以保證每個服務(wù)器負(fù)責(zé)區(qū)域連通性,則可以保證每個服務(wù)器所負(fù)責(zé)的全部區(qū)塊連成一個整體,而不是孤立的分散在虛擬空間的不同部分。但是如果連通區(qū)域內(nèi)部存在屬于其他服務(wù)器維護區(qū)域的空洞,則會對該區(qū)域的整體性帶來影響,因此本發(fā)明采用區(qū)域連通性檢查法則保證每一次迀移過程都不會對迀入和迀出服務(wù)器所負(fù)責(zé)區(qū)域的無孔連通性帶來影響。區(qū)域連通性檢查法則主要包括迀出區(qū)域檢查和迀入?yún)^(qū)域檢查兩個方面,均需要使用區(qū)塊迀出區(qū)域的無孔連通性保持原則。
[0021]區(qū)塊迀出區(qū)域的無孔連通性保持原則是檢查某一個區(qū)塊從某個所屬區(qū)域移除后,是否會對該區(qū)域的無孔連通性產(chǎn)生影響的一個過程。對于迀出區(qū)域來說,就是檢查備選迀移區(qū)塊的迀出是否會對迀出區(qū)域產(chǎn)生影響。事實上,一個區(qū)塊迀出某個區(qū)域是否對該區(qū)域的無孔連通性產(chǎn)生影響,只需要檢查該區(qū)塊的迀出是否影響原區(qū)域中與其相鄰的區(qū)塊之間的連通性即可。如果該區(qū)塊迀出后,原區(qū)域中與其相鄰的區(qū)塊之間的連通性不受影響,則所有其他區(qū)塊間的連通性也不會受到影響,就說明該區(qū)塊的迀出不會影響區(qū)域整體的連通性,反之則會影響區(qū)域的連通性。該原則的檢查過程具體包含以下5點:
(I)區(qū)塊與區(qū)域的交界線有一個,參見規(guī)則①,如圖4.a所示,由于區(qū)域內(nèi)與該區(qū)塊相鄰的區(qū)塊只有一個,因此迀移區(qū)塊的迀出不會影響相鄰區(qū)塊之間的相互連通性,因此也不會影響區(qū)域的無孔連通性;
(II)區(qū)塊與區(qū)域的交界線有兩個,且交界線位于區(qū)塊相對的兩側(cè),參見規(guī)則②,如圖
4.b所示,這種情況迀移區(qū)塊在區(qū)域內(nèi)的相鄰區(qū)塊有兩個,假設(shè)這兩個區(qū)塊除迀移區(qū)塊外還有其他路徑可以連通,則該區(qū)域內(nèi)必然會出現(xiàn)孔,與該區(qū)域原來的無孔連通性矛盾,因此假設(shè)不成立,這兩個區(qū)塊只能通過迀移區(qū)塊保持連通性,則此時迀出迀移區(qū)塊會導(dǎo)致兩個相鄰區(qū)塊的連通性遭到破壞,從而影響整個區(qū)域的無孔連通性;
(III)區(qū)塊與區(qū)域的交界線有兩個,且交界線位于區(qū)塊相鄰的兩側(cè),參見規(guī)則③,如圖
4.c所示,則同前述規(guī)則,如果對角區(qū)塊也屬于該區(qū)域,則迀移區(qū)塊迀出后,兩個相鄰的區(qū)塊的連通性可以由對角區(qū)塊來繼續(xù)保持,因此區(qū)域的整體連通性不會受到影響,否則,如果對角區(qū)塊不屬于該區(qū)域,則迀移區(qū)塊迀出后,兩個相鄰的區(qū)塊的連通性遭到破壞,因此區(qū)域的整體連通性也會受到影響;
(IV)區(qū)塊與區(qū)域的交界線有三個,參見規(guī)則④,如圖4.d所示,同前述規(guī)則,如果兩個對角區(qū)塊都屬于該區(qū)域,則迀移區(qū)塊迀出后,三個相鄰的區(qū)塊的連通性可以由兩個對