日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

分布式虛擬環(huán)境的管理方法、系統(tǒng)及節(jié)點的制作方法

文檔序號:7654550閱讀:235來源:國知局
專利名稱:分布式虛擬環(huán)境的管理方法、系統(tǒng)及節(jié)點的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息處理技術(shù)領(lǐng)域,尤其涉及一種服務(wù)器中分布式虛擬環(huán)境的管理方法、一種節(jié)點中分布式虛擬環(huán)境的信息管理方法、一種分布式虛擬環(huán)境的系統(tǒng)及系統(tǒng)中的節(jié)點。
背景技術(shù)
在互聯(lián)網(wǎng)得到廣泛應(yīng)用的今天,互聯(lián)網(wǎng)中處理信息的技術(shù)也在不斷向前發(fā)展。其中,一種叫做對等計算技術(shù)(P to P,Peer to Peer)的信息處理技術(shù)應(yīng)用的尤其廣泛。
對等計算技術(shù)也被人們稱為點對點技術(shù)、或者P2P技術(shù),通常可以定義為網(wǎng)絡(luò)的參與者共享他們所擁有的一部分硬件資源,如處理能力、存儲能力、網(wǎng)絡(luò)連接能力、打印機等,這些共享資源通過網(wǎng)絡(luò)提供服務(wù)和內(nèi)容,能被其它對等節(jié)點(Peer)直接訪問而無需經(jīng)過中間實體,在此網(wǎng)絡(luò)中的參與者既是資源提供者(Server),又是資源獲取者(Client)。
比起傳統(tǒng)的客戶機/服務(wù)器(C/S,Client/Server)結(jié)構(gòu),在采用P2P技術(shù)的網(wǎng)絡(luò)中,每個節(jié)點都是處于對等的地位,既充當(dāng)服務(wù)器,為其他節(jié)點提供服務(wù),同時也享用其他節(jié)點提供的服務(wù),網(wǎng)絡(luò)中的資源和服務(wù)分散在所有節(jié)點上,信息的傳輸和服務(wù)的實現(xiàn)都直接在節(jié)點之間進(jìn)行,可以無需中間環(huán)節(jié)和服務(wù)器的介入,避免了可能的瓶頸。
而且,在P2P網(wǎng)絡(luò)中,隨著用戶的加入,不僅服務(wù)的需求增加了,系統(tǒng)整體的資源和服務(wù)能力也在同步地擴充,理論上其可擴展性幾乎可以認(rèn)為是無限的。
同時,由于服務(wù)是分散在各個節(jié)點之間進(jìn)行的,部分節(jié)點或網(wǎng)絡(luò)遭到破壞對其它部分的影響很小。P2P網(wǎng)絡(luò)一般在部分節(jié)點失效時能夠自動調(diào)整整體拓?fù)洌3制渌?jié)點的連通性。P2P網(wǎng)絡(luò)通常都是以自組織的方式建立起來的,并允許節(jié)點自由地加入和離開,所以其健壯性也很好。
所以,在文件傳輸、通訊與信息共享、網(wǎng)絡(luò)游戲等,信息流量很大、有多用戶參與信息交互的場合,P2P技術(shù)都得到了廣泛的應(yīng)用。
在這些應(yīng)用P2P技術(shù)的場合,有很多都是在虛擬環(huán)境中進(jìn)行的,例如網(wǎng)絡(luò)游戲、虛擬社區(qū)之類,這種基于P2P技術(shù)的虛擬的環(huán)境,呈現(xiàn)分布式結(jié)構(gòu),這種虛擬的環(huán)境可以被稱為分布式虛擬環(huán)境。
在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有的分布式虛擬環(huán)境管理方法至少會帶來以下問題在基于P2P結(jié)構(gòu)的分布式虛擬環(huán)境中,其網(wǎng)絡(luò)結(jié)構(gòu)導(dǎo)致每個節(jié)點都可能需要與多個節(jié)點進(jìn)行信息交換,關(guān)注很多相關(guān)節(jié)點的狀態(tài)變化,在這種情況下,節(jié)點之間的通信量非常的大,造成節(jié)點負(fù)載過重,特別是在數(shù)據(jù)更新快、參與用戶多、網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜的情況下,此問題就會更加明顯。
以大型多人在線網(wǎng)絡(luò)游戲(MMOG,Massively Multiplayer Online Games)為例,在游戲中,通常會對節(jié)點進(jìn)行區(qū)域興趣管理,實現(xiàn)區(qū)域興趣管理最理想的狀態(tài),也就是每個節(jié)點盡量只接收和處理它需要的數(shù)據(jù),也即節(jié)點感興趣的數(shù)據(jù)的狀態(tài),盡量減少節(jié)點處理的冗余信息,盡量將節(jié)點的負(fù)載降到最低。
一個游戲可以視為虛擬環(huán)境中多個虛擬實體共同構(gòu)成,每個玩家都要通過一個節(jié)點參與到游戲中,這個節(jié)點一般都由普通家用電腦擔(dān)任,當(dāng)然也有可能是其他具有計算功能,可以連接到互聯(lián)網(wǎng)的工具,例如移動電話、家用游戲機等。玩家可以通過這個節(jié)點在游戲中操作一個虛擬實體,然后通過操作指令改變虛擬實體狀態(tài),每個虛擬實體有自己的屬性和參數(shù),通過狀態(tài)變量表現(xiàn)游戲中的所有元素。游戲元素構(gòu)成整個游戲狀態(tài),用戶通過節(jié)點操作游戲元素的任一行為都可以映射為游戲事件。每個時刻上游戲都由于事件的影響產(chǎn)生了狀態(tài)的變更。
游戲中的每一個虛擬實體都必然會存在于一個對應(yīng)的節(jié)點上,但并非每個節(jié)點上都會有一個對應(yīng)的虛擬實體。
舉例來說,一個用戶通過自己的家用電腦參與到一個大型多人在線網(wǎng)絡(luò)游戲,建立了一個虛擬實體,這個虛擬實體在游戲中體現(xiàn)為一個游戲人物,這個游戲人物的屬性和參數(shù)表現(xiàn)在,它是一個女性,等級1,站立在一個虛擬的城市中,這個城市就是各種狀態(tài)變量的體現(xiàn)。玩家操作這個女性坐在路邊的凳子上,即對游戲產(chǎn)生了影響,首先它的狀態(tài)由站立變更為坐著,影響到它周圍的虛擬人物都看見它坐下,凳子的狀態(tài)也由空閑變?yōu)橛腥俗?。在一個大型多人在線網(wǎng)絡(luò)游戲中,每時每刻都有大量類似的事件發(fā)生。
通常的區(qū)域興趣管理都是基于節(jié)點的可視范圍進(jìn)行的,也就是將節(jié)點可視范圍內(nèi)的虛擬對象及全部游戲元素,都設(shè)定為這個節(jié)點的興趣數(shù)據(jù)群,該節(jié)點會保存興趣數(shù)據(jù)群的所有信息,參與信息數(shù)據(jù)群的計算,當(dāng)該節(jié)點的位置發(fā)生移動,該節(jié)點的興趣數(shù)據(jù)群也隨之發(fā)生變化,而在進(jìn)行游戲時大多數(shù)時候,節(jié)點都是在不停移動中的,該節(jié)點也就需要不停對它的興趣數(shù)據(jù)群進(jìn)行更新,與新的興趣數(shù)據(jù)群中的節(jié)點進(jìn)行通信,造成了非常大的計算量及通信量,節(jié)點的負(fù)載也就很重。
現(xiàn)階段一個較受歡迎的大型多人在線網(wǎng)絡(luò)游戲,同時在線人數(shù)時常會高達(dá)十萬或更多,這么多節(jié)點之間的通信就變得更加復(fù)雜,同時處于游戲中的用戶使用的計算機大部分都是普通家用電腦,其計算能力有限,負(fù)載過重時,會照成局部的響應(yīng)速度變慢,甚至造成網(wǎng)絡(luò)壅塞。

發(fā)明內(nèi)容
本發(fā)明一實施例要解決的技術(shù)問題是提供一種分布式虛擬環(huán)境的管理方法,能夠降低分布式虛擬環(huán)境中節(jié)點的負(fù)載。
為解決上述技術(shù)問題,本發(fā)明所提供的一種服務(wù)器中分布式虛擬環(huán)境的管理方法,實施例是通過以下技術(shù)方案實現(xiàn)的所述方法包括服務(wù)器將所述分布式虛擬環(huán)境劃分為面積比節(jié)點可視范圍小的小區(qū),以使處于所述分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,并使小區(qū)的參與計算的節(jié)點在事件影響到小區(qū)時,計算事件影響小區(qū)的結(jié)果,將計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
本發(fā)明另一實施例要解決的技術(shù)問題是提供一種節(jié)點中分布式虛擬環(huán)境的管理方法,能夠降低分布式虛擬環(huán)境中節(jié)點的負(fù)載。
本發(fā)明所提供的一種節(jié)點中分布式虛擬環(huán)境的管理方法實施例是通過以下技術(shù)方案實現(xiàn)的所述方法包括處于分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,所述小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,所述小區(qū)面積比節(jié)點可視范圍??;事件影響到的小區(qū)的參與計算的節(jié)點計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
本發(fā)明另一實施例要解決的技術(shù)問題是提供一種分布式虛擬環(huán)境的系統(tǒng),能夠降低分布式虛擬環(huán)境中節(jié)點的負(fù)載。
為解決上述技術(shù)問題,本發(fā)明所提供的分布式虛擬環(huán)境的系統(tǒng)實施例是通過以下技術(shù)方案實現(xiàn)的所述系統(tǒng)包含多個節(jié)點,所述節(jié)點位于所述系統(tǒng)中的小區(qū)內(nèi),所述小區(qū)為分布式虛擬環(huán)境被劃分出的區(qū)域,所述節(jié)點的可視范圍大于所述小區(qū)的面積;所述節(jié)點用于保存自身關(guān)注范圍內(nèi)的所述小區(qū)信息,在事件影響所述節(jié)點參與計算的小區(qū)時,計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到獲取所述小區(qū)更新信息的節(jié)點。
本發(fā)明另一實施例要解決的技術(shù)問題是提供一種節(jié)點,能夠降低分布式虛擬環(huán)境中節(jié)點的負(fù)載。
為解決上述技術(shù)問題,本發(fā)明所提供的節(jié)點實施例是通過以下技術(shù)方案實現(xiàn)的所述節(jié)點包括存儲單元用于存儲所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,所述小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,所述小區(qū)面積比節(jié)點可視范圍小;計算單元用于在節(jié)點參與計算的小區(qū)被事件影響到時,計算事件影響小區(qū)的結(jié)果,并更新存儲單元;通信單元用于將計算單元的計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
以上技術(shù)方案可以看出,在現(xiàn)有技術(shù)中節(jié)點需要參與其興趣數(shù)據(jù)群的全部計算,而節(jié)點的興趣數(shù)據(jù)群通常又是由節(jié)點的可視范圍決定的,在本發(fā)明實施例中,由于本發(fā)明實施例將系統(tǒng)劃分為多個比節(jié)點可視范圍小的小區(qū),以小區(qū)為單位進(jìn)行數(shù)據(jù)保存,及計算,使得節(jié)點通常只需要參與其計算小區(qū)的計算,而小區(qū)是一個比可視范圍小的區(qū)域,所以節(jié)點的計算量得到了很大的減輕,有效降低了節(jié)點的負(fù)載。


圖1、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例示意圖;圖2、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的加入新的小區(qū)的方法流程圖;圖3、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的計算小區(qū)改為更新小區(qū)方法流程圖;圖4、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的更新小區(qū)提升為計算小區(qū)方法流程圖;圖5、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的節(jié)點失效時的處理方法流程圖;圖6、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的發(fā)布事件的方法流程圖;圖7、本發(fā)明實施例分布式虛擬環(huán)境的管理方法實施例的對節(jié)點數(shù)據(jù)進(jìn)行校驗的方法流程圖;圖8、本發(fā)明實施例分布式虛擬環(huán)境的系統(tǒng)實施例結(jié)構(gòu)圖;圖9、本發(fā)明實施例節(jié)點的實施例結(jié)構(gòu)圖。
具體實施例方式
在本發(fā)明的實施例中提供了一種服務(wù)器中分布式虛擬環(huán)境的管理方法、一種節(jié)點中分布式虛擬環(huán)境的信息管理方法、一種分布式虛擬環(huán)境的系統(tǒng)及系統(tǒng)中的節(jié)點,將分布式虛擬環(huán)境分為合理大小的小區(qū)進(jìn)行管理,有效地降低了各節(jié)點的負(fù)載,具體描述見下文。
使用分布式虛擬環(huán)境的場合有很多種,如網(wǎng)絡(luò)游戲、虛擬社區(qū)之類,本文將以網(wǎng)絡(luò)游戲中的大型多人在線網(wǎng)絡(luò)游戲為例進(jìn)行描述。
游戲可以視為由虛擬環(huán)境中多個虛擬實體共同構(gòu)成,每個玩家都要通過一個節(jié)點參與到游戲中,這個節(jié)點一般都由普通家用電腦擔(dān)任,當(dāng)然也有可能是其他具有計算功能,可以連接到互聯(lián)網(wǎng)的工具,比如專用游戲機之類。玩家可以通過這個節(jié)點在游戲中設(shè)定一個虛擬實體參與到游戲中,或者直接參與游戲,通過操作指令改變游戲中虛擬實體狀態(tài),每個虛擬實體有自己的屬性和參數(shù),通過狀態(tài)變量表現(xiàn)游戲中的所有元素。游戲元素構(gòu)成整個游戲狀態(tài),用戶通過節(jié)點操作游戲元素的任一行為都可以映射為游戲事件。每個時刻上游戲都由于事件的影響產(chǎn)生了狀態(tài)的變更。
舉例來說,一個用戶通過自己的家用電腦參與到一個大型多人在線網(wǎng)絡(luò)游戲,建立了一個虛擬實體,這個虛擬實體在游戲中體現(xiàn)為一個游戲人物,這個游戲人物的屬性和參數(shù)表現(xiàn)在,它是一個女性,等級1,站立在一個虛擬的城市中,這個城市就是各種狀態(tài)變量的體現(xiàn)。玩家操作這個女性坐在路邊的凳子上,即對游戲產(chǎn)生了影響,首先它的狀態(tài)由站立變更為坐著,影響到它周圍的虛擬人物都看見它坐下,凳子的狀態(tài)也由空閑變?yōu)橛腥俗?,也就是說其他虛擬對象都被此事件影響。在一個大型多人在線網(wǎng)絡(luò)游戲中,每時每刻都有大量類似的事件發(fā)生。
現(xiàn)階段一個較受歡迎的大型多人在線網(wǎng)絡(luò)游戲,同時在線人數(shù)時常會高達(dá)十萬或更多,在基于P2P結(jié)構(gòu)的游戲中,每個游戲玩家或用戶都位于一個對等節(jié)點上,這些節(jié)點隨著游戲的進(jìn)行會不斷進(jìn)行數(shù)據(jù)的更新,不停的進(jìn)行數(shù)據(jù)的交換,這些節(jié)點間的數(shù)據(jù)通信量就非常的大,節(jié)點的負(fù)載相應(yīng)也就很重。處于游戲中的用戶使用的計算機大部分都是普通家用電腦,其計算能力有限,負(fù)載過重時,會照成局部的響應(yīng)速度變慢,甚至造成網(wǎng)絡(luò)壅塞。
本發(fā)明實施例提供的服務(wù)器中分布式虛擬環(huán)境的管理方法實施例,將分布式虛擬環(huán)境劃分為較小的小區(qū)進(jìn)行管理,具體內(nèi)容如下服務(wù)器將分布式虛擬環(huán)境劃分為面積比節(jié)點可視范圍小的小區(qū),處于所述分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,并使小區(qū)的參與計算的節(jié)點在事件影響到小區(qū)時,計算事件影響小區(qū)的結(jié)果,將計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
在小區(qū)的參與計算的節(jié)點數(shù)目為一個時,將服務(wù)器設(shè)為所述小區(qū)的參與計算的節(jié)點。同時也可以為小區(qū)的參與計算的節(jié)點數(shù)目設(shè)置上限。
在節(jié)點失效時,與之通信的節(jié)點將保存的失效節(jié)點數(shù)據(jù)傳送給所述服務(wù)器,服務(wù)器接收到該失效節(jié)點數(shù)據(jù)時,確認(rèn)該失效節(jié)點已從系統(tǒng)退出,保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)。
進(jìn)一步為了提高失效報告的可靠性,可以預(yù)訂一個上限,使服務(wù)器在收到達(dá)到上限數(shù)目個失效報告時,再確認(rèn)節(jié)點失效。
此時,服務(wù)器在接收到預(yù)定數(shù)目節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù)時,確認(rèn)該失效節(jié)點已從系統(tǒng)退出,同時收集所有節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù),并對所述數(shù)據(jù)進(jìn)行比較,以多數(shù)一致的結(jié)果為準(zhǔn),確定所述失效節(jié)點退出系統(tǒng)時的狀態(tài),并進(jìn)行保存。
本發(fā)明實施例提供的節(jié)點中分布式虛擬環(huán)境的信息管理方法實施例,將分布式虛擬環(huán)境劃分為較小的小區(qū)進(jìn)行管理,具體內(nèi)容如下處于分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,該小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,其面積比節(jié)點可視范圍小;事件影響到的小區(qū)的參與計算的節(jié)點計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到該事件影響到的小區(qū)的獲取更新的節(jié)點。
其中獲取更新的節(jié)點獲取該參與計算的節(jié)點發(fā)布的計算結(jié)果包括在該小區(qū)的參與計算的節(jié)點中挑選出一個網(wǎng)絡(luò)連接速度達(dá)到預(yù)設(shè)條件的參與計算的節(jié)點,將該獲取更新的節(jié)點連接到該參與計算的節(jié)點,獲取該參與計算的節(jié)點發(fā)布的計算結(jié)果。
節(jié)點根據(jù)自身的性能和網(wǎng)絡(luò)速度決定是否作為其所在小區(qū)的參與計算的節(jié)點。當(dāng)節(jié)點為小區(qū)內(nèi)獲取更新的節(jié)點,在小區(qū)的參與計算的節(jié)點數(shù)目為一個時,提升為該小區(qū)參與計算的節(jié)點、或者節(jié)點在小區(qū)的參與計算的節(jié)點數(shù)目為一個時,請求服務(wù)器參與該小區(qū)的計算。同時也可以為所述小區(qū)的參與計算的節(jié)點數(shù)目設(shè)置上限。
在節(jié)點關(guān)注范圍需要加入新的小區(qū)時,該節(jié)點需連接到所述新的小區(qū)的參與計算的節(jié)點,獲取并保存該新的小區(qū)的信息。
節(jié)點關(guān)注范圍需要加入新的小區(qū)包括以下兩種狀況1、節(jié)點的可視范圍進(jìn)入到新的小區(qū)時,節(jié)點需要加入該新的小區(qū);2、事件的影響范圍涉及了不在引發(fā)事件的節(jié)點的關(guān)注范圍內(nèi)的新的小區(qū),則節(jié)點需要加入該新的小區(qū)。
節(jié)點關(guān)注范圍加入新的小區(qū)時,進(jìn)一步需要判斷該節(jié)點是否需要參加該小區(qū)的計算,若需要則該節(jié)點成為該小區(qū)的參與計算節(jié)點,若不需要則該節(jié)點成為該小區(qū)的獲取更新節(jié)點。
在節(jié)點需要退出小區(qū)時,要向該小區(qū)中與該節(jié)點有通信的節(jié)點發(fā)送退出小區(qū)通知,收到通知的節(jié)點修改自身上保存的該小區(qū)的信息。
在節(jié)點需要退出系統(tǒng)時,節(jié)點在發(fā)送完退出小區(qū)通知后,向服務(wù)器發(fā)送退出系統(tǒng)請求,服務(wù)器收到退出系統(tǒng)請求后,保存該節(jié)點退出時的數(shù)據(jù)。
在節(jié)點失效時,與之通信的節(jié)點將保存的該失效節(jié)點數(shù)據(jù)傳送給服務(wù)器,服務(wù)器接收到所述失效節(jié)點數(shù)據(jù)時,確認(rèn)所述失效節(jié)點已從系統(tǒng)退出,保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)。
進(jìn)一步為了提高失效報告的可靠性,可以預(yù)訂一個上限,使服務(wù)器在收到達(dá)到上限數(shù)目個失效報告時,再確認(rèn)節(jié)點失效。
此時,服務(wù)器在接收到預(yù)定數(shù)目節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù)時,確認(rèn)該失效節(jié)點已從系統(tǒng)退出,同時收集所有節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù),并對所述數(shù)據(jù)進(jìn)行比較,以多數(shù)一致的結(jié)果為準(zhǔn),確定所述失效節(jié)點退出系統(tǒng)時的狀態(tài),并進(jìn)行保存。
進(jìn)一步本實施例還給出了校驗的方法,先從小區(qū)的節(jié)點中挑選出校驗節(jié)點,到預(yù)設(shè)的時間時,該小區(qū)內(nèi)的節(jié)點自動保存當(dāng)前小區(qū)的狀態(tài)信息,并將狀態(tài)信息或需校驗對象的哈希值發(fā)送到該校驗節(jié)點,由校驗節(jié)點對狀態(tài)信息或所述哈希值進(jìn)行核對,以多數(shù)相同的結(jié)果為準(zhǔn),并向校驗結(jié)果不一致的節(jié)點反饋校驗結(jié)果,校驗結(jié)果不一致的節(jié)點連接到校驗結(jié)果一致的節(jié)點,獲取自動保存的當(dāng)前小區(qū)的狀態(tài)信息,覆蓋該不一致的節(jié)點的狀態(tài)。
從所述小區(qū)的節(jié)點中挑選出校驗節(jié)點,可以是從所述小區(qū)的參與計算的節(jié)點中挑選出校驗節(jié)點。挑選的方法可以是隨機挑選出校驗節(jié)點、或挑選出信譽評價較高的節(jié)點作為校驗節(jié)點。
到預(yù)設(shè)的時間時,節(jié)點建立隊列保存所述校驗時刻后到收到校驗結(jié)果并進(jìn)行相應(yīng)處理前的事件;覆蓋所述不一致的節(jié)點的狀態(tài)后,根據(jù)隊列中保存的事件修正所述不一致的節(jié)點的狀態(tài)。
上文所述預(yù)設(shè)的時間可以是預(yù)設(shè)的固定間隔的時間。
上面分別從服務(wù)器側(cè)及節(jié)點側(cè)對分布式虛擬環(huán)境的管理方法進(jìn)行了描述,但是在實際使用中大部分時候,服務(wù)器的行為和節(jié)點的行為是互相配合的,下文將對兩種分布式虛擬環(huán)境的管理方法一起使用時的狀況進(jìn)行詳細(xì)描述。下文為描述方便將統(tǒng)一稱為分布式虛擬環(huán)境的管理方法。
將游戲的虛擬環(huán)境分為一些通常比可視范圍小的小區(qū)(cell),劃分小區(qū)后,每個節(jié)點感興趣的范圍將以小區(qū)為單位進(jìn)行劃分,每個節(jié)點以小區(qū)為單位進(jìn)行信息存儲,發(fā)生事件時,以小區(qū)為單位進(jìn)行計算,也即計算事件對小區(qū)發(fā)生的影響會有什么樣的結(jié)果??梢暦秶枪?jié)點在具體游戲空間中可以觀察到的范圍,這個范圍根據(jù)不同的游戲設(shè)定有所不同,大部分的游戲中,節(jié)點都需要知道其可視范圍內(nèi)所有游戲元素的相關(guān)信息,例如其他虛擬實體的狀態(tài),游戲環(huán)境的變化。本分布式虛擬環(huán)境的管理方法實施例中在劃分小區(qū)范圍時會參考游戲中大多數(shù)節(jié)點的可視范圍大小,將小區(qū)劃分為比可視范圍小的區(qū)域,也就是說游戲中每個節(jié)點的可視范圍都會涉及多個小區(qū),每個節(jié)點都會保存與該節(jié)點可視范圍有交集的小區(qū)信息。
節(jié)點的關(guān)注范圍通常就是與該節(jié)點可視范圍有交集的所有小區(qū),但是在有些情況下,節(jié)點的關(guān)注范圍有可能超出與該節(jié)點可視范圍有交集的所有小區(qū)。
例如,通常,每發(fā)生一個游戲事件都會影響一個或多個虛擬對象在游戲中的狀態(tài)參數(shù),影響的虛擬對象集合可以稱為事件影響范圍。若一個節(jié)點引發(fā)的事件影響范圍超出了該節(jié)點當(dāng)前的關(guān)注范圍,影響到了與該節(jié)點可視范圍沒有交集的小區(qū),由于該節(jié)點上沒有保存該小區(qū)的信息,無法向該小區(qū)的節(jié)點發(fā)布時間信息,此時該節(jié)點需要加入該小區(qū),把該小區(qū)也列入到關(guān)注范圍內(nèi),調(diào)出并保存該小區(qū)的信息,然后向所有受影響的小區(qū)內(nèi)的計算節(jié)點發(fā)布事件信息。
那么根據(jù)節(jié)點的關(guān)注范圍節(jié)點和小區(qū)會呈現(xiàn)三種關(guān)系節(jié)點位于的小區(qū)、被節(jié)點關(guān)注范圍涉及但不包含該節(jié)點的小區(qū)、節(jié)點關(guān)注范圍沒有涉及的小區(qū)。為了便于描述,本文將節(jié)點位于的小區(qū)稱為該節(jié)點的計算小區(qū),被節(jié)點可視范圍涉及的非計算小區(qū)稱為該節(jié)點的更新小區(qū),處于節(jié)點可視范圍外的小區(qū)稱為該節(jié)點的無關(guān)小區(qū),一個小區(qū)是某節(jié)點的計算小區(qū)、更新小區(qū)、或無關(guān)小區(qū),可以稱為是該節(jié)點對該小區(qū)的關(guān)注度,一個節(jié)點的計算小區(qū)和更新小區(qū)共同構(gòu)成了該節(jié)點的關(guān)注范圍。
由于節(jié)點通常對該節(jié)點可視范圍內(nèi)的虛擬對象的集合關(guān)注程度較高,尤其對該節(jié)點身邊的環(huán)境要求可靠度更高,因此節(jié)點通常會參與該節(jié)點計算小區(qū)的計算,第一時間獲得計算小區(qū)內(nèi)所有的數(shù)據(jù)更新。由于節(jié)點的更新小區(qū)和節(jié)點的距離較計算小區(qū)要遠(yuǎn),通常節(jié)點不必參與更新小區(qū)的計算,可以通過接受更新小區(qū)內(nèi)節(jié)點信息發(fā)布的方式進(jìn)行數(shù)據(jù)更新。至于無關(guān)小區(qū),由于節(jié)點一般不需要知道該節(jié)點關(guān)注范圍外的數(shù)據(jù),所以節(jié)點通常也不需要保存無關(guān)小區(qū)的數(shù)據(jù)。
此處需要指出的是,本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例還提供了一種實施方式,在一些特殊的情況下,節(jié)點可以不參與節(jié)點所在計算小區(qū)的計算,例如網(wǎng)絡(luò)延遲大,該節(jié)點不能同時與多個節(jié)點快速通信,或該節(jié)點計算能力差,又或該節(jié)點計算小區(qū)中參與計算的節(jié)點已經(jīng)達(dá)到某種上限,不需要該節(jié)點參與計算,在這些情況下節(jié)點都可以不參與節(jié)點的計算小區(qū)的計算,而通過接受其計算小區(qū)內(nèi)其他節(jié)點發(fā)布的小區(qū)更新信息來進(jìn)行游戲,以提高系統(tǒng)整體的性能。節(jié)點是否參與節(jié)點的計算小區(qū)的計算可以由系統(tǒng)決定,也可以由節(jié)點自身決定。
在通常的游戲系統(tǒng)中,節(jié)點的行為都是連續(xù)的,例如在虛擬空間中連續(xù)地移動,或改變視角,不斷地進(jìn)行新資源的發(fā)現(xiàn),這些新資源包括所有新進(jìn)入節(jié)點可視范圍的游戲元素,這時節(jié)點之間必然需要進(jìn)行大量的信息交換,造成節(jié)點負(fù)載過高。而在本發(fā)明實施例中,節(jié)點只有在節(jié)點的可視范圍內(nèi)出現(xiàn)新的小區(qū),或者節(jié)點引發(fā)的事件影響范圍超出節(jié)點記錄的小區(qū)范圍時,才會需要加入新的小區(qū)信息,并保存該新的小區(qū)信息,不必每次在虛擬實體更改位置時進(jìn)行資源發(fā)現(xiàn)操作,大大減少了節(jié)點間的信息交換量,相應(yīng)也就有效降低了節(jié)點的負(fù)載。同時,在現(xiàn)有技術(shù)中節(jié)點需要參與其興趣數(shù)據(jù)群的全部計算,而節(jié)點的興趣數(shù)據(jù)群通常又是由節(jié)點的可視范圍決定的,在本發(fā)明實施例中,節(jié)點通常只需要參與其計算小區(qū)的計算,而小區(qū)是一個比可視范圍小的區(qū)域,所以節(jié)點的計算量也得到了很大的減輕,有效降低了節(jié)點的負(fù)載。
現(xiàn)舉例說明劃分小區(qū)后,系統(tǒng)的工作方式,小區(qū)在虛擬環(huán)境中的形狀通常為規(guī)則的幾何形狀,例如方形,六邊形之類,本實施例中將以方形為例進(jìn)行描述。
如圖1所示,游戲空間中的一塊被劃分為16個小區(qū)小區(qū)101、小區(qū)102、小區(qū)103、小區(qū)104、小區(qū)105、小區(qū)106、小區(qū)107、小區(qū)108、小區(qū)109、小區(qū)110、小區(qū)111、小區(qū)112、小區(qū)113、小區(qū)114、小區(qū)115、小區(qū)116,節(jié)點120上位于小區(qū)106,節(jié)點120的可視范圍用圓圈130表示,圓圈130與小區(qū)106、小區(qū)107、小區(qū)110、及小區(qū)111相交。
由圖1可知,假設(shè)節(jié)點120的關(guān)注范圍就是可視范圍,那么對于節(jié)點120來說,小區(qū)106為節(jié)點的計算小區(qū),小區(qū)107、小區(qū)110、及小區(qū)111均為節(jié)點的更新小區(qū),小區(qū)101、小區(qū)102、小區(qū)103、小區(qū)104、小區(qū)105、小區(qū)108、小區(qū)109、小區(qū)112、小區(qū)113、小區(qū)114、小區(qū)115、小區(qū)116均為節(jié)點的無關(guān)小區(qū)。
通常,每發(fā)生一個游戲事件都會影響一個或多個虛擬對象在游戲中的狀態(tài)參數(shù),影響的虛擬對象集合可以稱為事件影響范圍。游戲中所有的計算都由游戲事件發(fā)起,在發(fā)生游戲事件時,節(jié)點是否參與該游戲事件的計算,要看該游戲事件是否影響到這個節(jié)點的計算小區(qū),如果影響到,該節(jié)點就可以參與該游戲事件的計算。當(dāng)然上文有提到過,本發(fā)明實施例中也提供節(jié)點不需要參與計算小區(qū)計算的實施方式,所以節(jié)點是否一定要參與該事件的計算,還要看系統(tǒng)的設(shè)定,系統(tǒng)可以設(shè)定小區(qū)內(nèi)所有節(jié)點在小區(qū)被事件影響時都需要參與計算,也可以設(shè)定在特殊情況下允許小區(qū)內(nèi)部分節(jié)點不參與計算。
為了便于描述,本文將在游戲事件影響小區(qū)時,該小區(qū)內(nèi)需要參與計算的節(jié)點稱為該小區(qū)的計算節(jié)點,只需獲取該小區(qū)更新信息的節(jié)點稱為該小區(qū)的更新節(jié)點,需要說明的是,該小區(qū)的更新節(jié)點也包括其他小區(qū)內(nèi)需要獲取該小區(qū)更新信息的節(jié)點。
小區(qū)的每個更新節(jié)點都必須連接到該小區(qū)的一個計算節(jié)點,以獲取小區(qū)的更新數(shù)據(jù),在有多個計算節(jié)點可供選擇時,一般以網(wǎng)絡(luò)連接速度作為主要評判標(biāo)準(zhǔn),選擇網(wǎng)絡(luò)連接速度最佳的計算節(jié)點接收小區(qū)的更新數(shù)據(jù)。當(dāng)該計算節(jié)點不再承擔(dān)小區(qū)的計算職能時,所有從它獲取更新的節(jié)點需要從計算節(jié)點隊列中另選擇一個計算節(jié)點作為數(shù)據(jù)來源。
以圖1為例,若系統(tǒng)設(shè)定節(jié)點120在游戲事件影響小區(qū)106時,需要參與計算,則節(jié)點120為小區(qū)106的計算節(jié)點,同時節(jié)點120需要獲取其更新小區(qū)107的更新信息,所以節(jié)點120可以稱為小區(qū)107的更新節(jié)點,若系統(tǒng)設(shè)定節(jié)點120不需要參與小區(qū)106的計算,則節(jié)點120對于小區(qū)106也是一個更新節(jié)點。
由于計算節(jié)點承擔(dān)的計算量及信息通信量遠(yuǎn)遠(yuǎn)大于更新節(jié)點,所以在系統(tǒng)允許部分節(jié)點不參與計算時,通常會從小區(qū)的節(jié)點中挑選出性能較好、網(wǎng)絡(luò)速度較快的擔(dān)任計算節(jié)點。挑選的動作一般是由節(jié)點自身完成的,服務(wù)器設(shè)定一些基本條件,例如一個小區(qū)內(nèi)可以有多少個計算節(jié)點、或擔(dān)任計算節(jié)點的節(jié)點必須具備那些條件、等等,節(jié)點在判斷自身符合標(biāo)準(zhǔn)后,就會加入?yún)⒓蛹靶^(qū)的計算。
在一個小區(qū)內(nèi)計算節(jié)點和更新節(jié)點的身份可以進(jìn)行互換,如一個計算節(jié)點退出了小區(qū),需要從更新節(jié)點中挑選出一個升級為計算節(jié)點;或者一個計算節(jié)點由于網(wǎng)絡(luò)的原因,網(wǎng)絡(luò)延遲突然變大,該節(jié)點申請成為更新節(jié)點,也是允許的。
上文提到在本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例中每個節(jié)點以小區(qū)為單位進(jìn)行信息存儲。
由于在實際運行中可能會出現(xiàn)一個小區(qū)內(nèi)只剩下一個計算節(jié)點的情況,而任何普通用戶節(jié)點的可信度都是有限的,在只有一個節(jié)點參與小區(qū)計算的情況下,如果這個計算節(jié)點計算錯誤,或者蓄意進(jìn)行欺騙性行為時,將沒有其他節(jié)點可以對它進(jìn)行監(jiān)督,該小區(qū)的更新節(jié)點也都會跟著發(fā)生錯誤,或者被欺騙,導(dǎo)致系統(tǒng)可靠程度降低。為了防止這些情況的出現(xiàn),提高系統(tǒng)的可靠程度,本發(fā)明實施例提供了在小區(qū)內(nèi)只剩下一個計算節(jié)點時引入可靠節(jié)點進(jìn)行監(jiān)督,此可靠節(jié)點可以由服務(wù)器擔(dān)任,當(dāng)然,如果小區(qū)內(nèi)還存在其他更新節(jié)點,也可以將更新節(jié)點提升為計算節(jié)點,提升的數(shù)目可以是一個,也可以是多個。
另一方面,在單個小區(qū)集中過多的節(jié)點同時計算也是沒有必要的,而且會由于網(wǎng)絡(luò)延遲等問題對計算和同步帶來困難,因此本發(fā)明實施例提供了限制小區(qū)計算節(jié)點數(shù)目上限的實施方式,可以根據(jù)具體游戲環(huán)境的不同,如小區(qū)內(nèi)用戶數(shù)目、網(wǎng)絡(luò)延遲、網(wǎng)絡(luò)丟包、欺騙發(fā)生的概率等因素,設(shè)定小區(qū)內(nèi)計算節(jié)點數(shù)目的上限。
在本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例中,每個節(jié)點除了保存有該節(jié)點的標(biāo)識符之外,還保存該節(jié)點的所有計算小區(qū)的集合,以及該節(jié)點的所有更新小區(qū)的集合;在計算小區(qū)的集合中的計算小區(qū)信息中,記錄了該小區(qū)的標(biāo)識符,該小區(qū)的計算節(jié)點隊列,及該小區(qū)的更新小區(qū)隊列;在更新小區(qū)的隊列中的更新小區(qū)信息中,記錄了該小區(qū)的標(biāo)識符,該小區(qū)的計算節(jié)點隊列;計算節(jié)點隊列保存該小區(qū)的所有計算節(jié)點信息,更新小區(qū)隊列保存該小區(qū)的所有更新節(jié)點信息;隊列中的節(jié)點信息記錄了節(jié)點標(biāo)識符、地址信息、及指向節(jié)點操作的虛擬對象的指針,當(dāng)該虛擬對象在保存信息節(jié)點的關(guān)注范圍內(nèi)時,必然在保存信息的節(jié)點上建立了一個對應(yīng)的虛擬對象,該對象與其操作節(jié)點信息用指針連接,當(dāng)該虛擬對象不在保存信息節(jié)點的關(guān)注范圍時,可以不建立對應(yīng)的虛擬對象,指針指向為空。在節(jié)點上的每個虛擬對象都有唯一一個對應(yīng)的操作節(jié)點信息被保存,而保存的節(jié)點信息可以沒有本節(jié)點內(nèi)的虛擬對象。
在上文的描述中,節(jié)點在有些時候會需要加入新的小區(qū),這些時候可能是在節(jié)點的可視范圍內(nèi)出現(xiàn)新的小區(qū),或者節(jié)點引發(fā)的事件影響范圍超出節(jié)點記錄的小區(qū)范圍時,下面本文將對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例加入新的小區(qū)的方法進(jìn)行描述,該實施例流程見圖2步驟201、獲得小區(qū)內(nèi)計算節(jié)點的地址,并建立連接。
當(dāng)一個節(jié)點需要加入新的小區(qū)時,首先要獲得該小區(qū)內(nèi)至少一個計算節(jié)點的地址,并與之并建立連接。
在基于P2P的系統(tǒng)中,查詢信息的方式有很多種,現(xiàn)在通常通過分布式哈希表(DHT,Distributed Hash Table)系統(tǒng)進(jìn)行查詢。所謂DHT系統(tǒng)就是將需要查找的文件的索引信息--例如節(jié)點的標(biāo)識符,表示成一個(K,V)對,一個(K,V)對可以稱為一個索引條目,K稱為關(guān)鍵字,可以是文件名、節(jié)點標(biāo)識符或其他描述信息的哈希值,V是實際存儲文件的節(jié)點的網(wǎng)際協(xié)議(IP)地址或節(jié)點的其他描述信息。所有的索引條目組成一張大的索引哈希表,只要輸入目標(biāo)節(jié)點的K值,就可以從這張表中查出所有存儲該節(jié)點信息的節(jié)點地址。然后,再將上面的大文件哈希表分割成很多局部小塊,按照特定的規(guī)則把這些小塊的局部哈希表分布到系統(tǒng)中的所有參與節(jié)點上,使得每個節(jié)點負(fù)責(zé)維護其中的一塊。這樣,節(jié)點查詢另一個節(jié)點時,把查詢報文路由到相應(yīng)的節(jié)點,由于該節(jié)點維護的哈希表分塊中含有要查找的(K,V)對,即可查詢出需要的節(jié)點信息。
在本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例中,通過DHT將網(wǎng)絡(luò)信息均勻散布在網(wǎng)絡(luò)節(jié)點上,每個小區(qū)設(shè)定標(biāo)識符后,根據(jù)該標(biāo)識符的哈希值,設(shè)立小區(qū)的索引節(jié)點,一般要求節(jié)點標(biāo)識符哈希值與小區(qū)標(biāo)識符哈希值最接近的節(jié)點擔(dān)任該職責(zé),該索引節(jié)點只要處于網(wǎng)絡(luò)中即可,不一定要該小區(qū)的節(jié)點擔(dān)任,每個索引節(jié)點保存該小區(qū)上一個計算節(jié)點的信息,節(jié)點尋找小區(qū)信息時,可以根據(jù)DHT查找到該小區(qū)的索引節(jié)點,獲得該索引節(jié)點上保存的計算節(jié)點信息,進(jìn)而與該計算節(jié)點建立連接。
在索引節(jié)點原保存的計算節(jié)點不再擔(dān)任該小區(qū)的計算任務(wù)時,由該小區(qū)的計算節(jié)點另選擇一個計算節(jié)點與索引節(jié)點直接聯(lián)系。
步驟202、發(fā)送對該小區(qū)的關(guān)注類型。
需要加入新的小區(qū)的節(jié)點向步驟201中建立了連接的計算節(jié)點發(fā)送對該小區(qū)的關(guān)注類型,例如該節(jié)點需要參與該小區(qū)的計算,或者該節(jié)點需要獲取該小區(qū)的狀態(tài)更新信息。
通常我們默認(rèn)設(shè)定節(jié)點所在小區(qū)為參與計算的小區(qū),只是需要加入其關(guān)注范圍的小區(qū)為獲取更新的小區(qū),節(jié)點加入該小區(qū)后,系統(tǒng)會根據(jù)實際情況再對節(jié)點是否參與計算進(jìn)行調(diào)配。
步驟203、判斷該節(jié)點是否參與小區(qū)計算。
對步驟202中發(fā)送的對該小區(qū)的關(guān)注類型進(jìn)行判斷,判斷該節(jié)點是否參與小區(qū)計算,若是則進(jìn)入步驟204;若否,則進(jìn)入步驟206。
步驟204、接收小區(qū)內(nèi)計算節(jié)點隊列、獲取更新節(jié)點隊列以及小區(qū)對象信息。
進(jìn)入此步驟,說明該節(jié)點需要參與小區(qū)計算,則需要獲取小區(qū)內(nèi)所有信息,包括小區(qū)內(nèi)所有對象信息,參與計算節(jié)點隊列和獲取更新節(jié)點隊列。
步驟205、與所有計算節(jié)點建立連接,向更新節(jié)點發(fā)送參與計算通知。
該節(jié)點與小區(qū)內(nèi)所有計算節(jié)點建立連接,并向在獲取更新節(jié)點隊列中的節(jié)點發(fā)送自己參與該小區(qū)計算的通知,要求所有獲取小區(qū)更新的節(jié)點將自身加入?yún)⑴c小區(qū)計算的節(jié)點隊列中。
至此流程結(jié)束。
步驟206、接收小區(qū)內(nèi)計算節(jié)點隊列以及小區(qū)對象信息。
進(jìn)入此步驟,說明該節(jié)點只需獲取小區(qū)的更新信息,該節(jié)點與該小區(qū)的計算節(jié)點建立連接,接收小區(qū)內(nèi)計算節(jié)點隊列以及小區(qū)對象信息。
步驟207、與小區(qū)的計算節(jié)點建立連接,獲取該小區(qū)的更新信息。
該節(jié)點在該小區(qū)的所有計算節(jié)點中挑選出一個計算節(jié)點,固定從該計算節(jié)點獲取該小區(qū)的狀態(tài)更新,然后向隊列中的所有參與計算節(jié)點發(fā)布登陸該小區(qū)的消息,加入該小區(qū)的獲取更新節(jié)點隊列,小區(qū)內(nèi)的計算節(jié)點根據(jù)這種標(biāo)記向該節(jié)點發(fā)送事件信息或狀態(tài)更新數(shù)據(jù)。
至此流程結(jié)束。
另外,在很多時候節(jié)點對一個小區(qū)的關(guān)注度會發(fā)生變化,例如由于節(jié)點移動離開了原來的計算小區(qū),該計算小區(qū)變成了更新小區(qū),節(jié)點移動到的原更新小區(qū)就變成了計算小區(qū),或者系統(tǒng)將一個更新節(jié)點升為了計算節(jié)點,該小區(qū)原本是節(jié)點的更新小區(qū),就變成了計算小區(qū)。節(jié)點對一個小區(qū)的關(guān)注度變化是一個可以互逆的過程。
下面本文將對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例改變小區(qū)關(guān)注度的方法進(jìn)行描述,以計算小區(qū)改變?yōu)楦滦^(qū)為例,流程見圖3所示步驟301、通知該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列中的節(jié)點。
節(jié)點向該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列中的節(jié)點發(fā)送通知,通知該節(jié)點將退出該小區(qū)的計算節(jié)點隊列,加入獲取更新節(jié)點隊列。
步驟302、修改該節(jié)點對小區(qū)的關(guān)注度信息。
從節(jié)點上記錄的計算小區(qū)集合中刪除該小區(qū),并將該小區(qū)加入到獲取更新小區(qū)集合,刪除自身保存的該小區(qū)的獲取更新節(jié)點隊列,修改該小區(qū)的計算節(jié)點隊列,將該節(jié)點從計算節(jié)點隊列刪除。
此步驟和后續(xù)的步驟之間沒有先后順序關(guān)系。
步驟303、修改該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列。
收到通知的計算節(jié)點修改自身保存的該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列,將該節(jié)點從計算節(jié)點隊列刪除,加入到獲取更新節(jié)點隊列。
收到通知的更新節(jié)點修改自身保存的該小區(qū)的計算節(jié)點隊列,將該節(jié)點從計算節(jié)點隊列刪除。
步驟304、判斷節(jié)點是否從該節(jié)點獲取更新,是則進(jìn)入步驟305,否則流程結(jié)束。
步驟305、從該小區(qū)的計算節(jié)點隊列中另選一獲取更新來源并建立連接。
流程結(jié)束。
將一個更新小區(qū)提升為計算小區(qū)時,流程見圖4所示步驟401、獲取該小區(qū)的獲取更新節(jié)點隊列。
從作為該節(jié)點獲取更新來源的該小區(qū)的計算節(jié)點,獲取該小區(qū)的獲取更新節(jié)點隊列。
步驟402、修改該節(jié)點對小區(qū)的關(guān)注度信息。
將該節(jié)點加入到節(jié)點上記錄的計算小區(qū)集合,并將該小區(qū)從獲取更新小區(qū)集合刪除,修改該節(jié)點上保存的該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列,將該節(jié)點加入計算節(jié)點隊列,退出獲取更新節(jié)點隊列。
此步驟和后續(xù)的步驟之間沒有先后順序關(guān)系。
步驟403、向該小區(qū)的相關(guān)節(jié)點發(fā)送更改關(guān)注類型信息。
節(jié)點向該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列中的節(jié)點發(fā)送通知,通知該節(jié)點將加入該小區(qū)的計算節(jié)點隊列,退出獲取更新節(jié)點隊列。
步驟404、接收到該信息的節(jié)點對自身保存的隊列信息進(jìn)行相應(yīng)的修改。
收到通知的計算節(jié)點修改自身保存的該小區(qū)的計算節(jié)點隊列、獲取更新節(jié)點隊列,將該節(jié)點從獲取更新節(jié)點隊列刪除,加入到計算節(jié)點隊列。
收到通知的更新節(jié)點修改自身保存的該小區(qū)的計算節(jié)點隊列,將該節(jié)點加入到計算節(jié)點隊列。
流程結(jié)束。
將無關(guān)小區(qū)提升為更新小區(qū)或計算小區(qū),也就是上文描述的加入新的小區(qū)的方法,在此不再重復(fù)描述。
至于將計算小區(qū)或更新小區(qū)變?yōu)闊o關(guān)小區(qū),也可以說是一個節(jié)點退出了這個計算小區(qū)或更新小區(qū),無論該節(jié)點是該小區(qū)的計算節(jié)點還是更新節(jié)點,要退出小區(qū)時,都要向該小區(qū)中自身保存的節(jié)點列表中的節(jié)點發(fā)送通知。若該節(jié)點為計算節(jié)點,則必然存有該小區(qū)的計算節(jié)點列表和獲取更新節(jié)點列表,則此時需向兩個列表中的節(jié)點發(fā)送退出小區(qū)通知;若該節(jié)點為更新節(jié)點,則僅存有該小區(qū)的計算節(jié)點列表,此時就需要向所有計算節(jié)點發(fā)送退出小區(qū)通知。節(jié)點向這些對應(yīng)小區(qū)內(nèi)自身通信的節(jié)點發(fā)送退出小區(qū)的通知,以便使得這些節(jié)點修改該小區(qū)內(nèi)信息,而退出節(jié)點直接刪除自身保存的該小區(qū)信息即可,當(dāng)然在系統(tǒng)及節(jié)點自身性能允許的情況下,不刪也是可以的。
在節(jié)點需要退出系統(tǒng)時,首先要退出所有關(guān)注的小區(qū),最后向游戲服務(wù)器發(fā)送退出系統(tǒng)請求,游戲服務(wù)器保存該節(jié)點退出時的數(shù)據(jù)。
在實際運行中,有時也會碰到節(jié)點突然失效的狀況,例如網(wǎng)絡(luò)突然斷線、節(jié)點突然死機之類,為了預(yù)防這類事故,本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例提供了在節(jié)點失效時的處理方法,具體流程如圖5所示步驟501、發(fā)送失效節(jié)點數(shù)據(jù)以及失效報告至服務(wù)器。
節(jié)點意外失效時,由與之通信的節(jié)點向服務(wù)器進(jìn)行報告。若失效節(jié)點為計算節(jié)點,則與之同屬一個小區(qū)的計算節(jié)點以及從該節(jié)點獲取小區(qū)更新的更新節(jié)點都將在該節(jié)點長時間不響應(yīng)的情況下,發(fā)現(xiàn)該節(jié)點失效;若失效節(jié)點為更新節(jié)點,則它獲取更新的小區(qū)計算節(jié)點會在其長期無響應(yīng)的情況下,得知節(jié)點失效。在發(fā)現(xiàn)節(jié)點失效的節(jié)點中必然有部分節(jié)點保存了該失效節(jié)點的數(shù)據(jù),這些節(jié)點將本機內(nèi)保存的失效節(jié)點數(shù)據(jù)以及失效報告一起提交給游戲服務(wù)器步驟502、接收失效節(jié)點數(shù)據(jù)以及失效報告。
游戲服務(wù)器接收失效節(jié)點數(shù)據(jù)以及失效報告。
步驟503、判斷是否為第一個對該節(jié)點的失效報告,是則進(jìn)入步驟504;否則進(jìn)入步驟505。
步驟504、建立失效節(jié)點數(shù)據(jù)統(tǒng)計隊列。
建立一個統(tǒng)計隊列,用于記錄關(guān)于該失效節(jié)點的數(shù)據(jù),稱為失效節(jié)點數(shù)據(jù)統(tǒng)計隊列。
步驟505、將該報告中失效節(jié)點數(shù)據(jù)插入失效節(jié)點數(shù)據(jù)統(tǒng)計隊列。
服務(wù)器將該報告中失效節(jié)點數(shù)據(jù)插入該失效節(jié)點的失效節(jié)點數(shù)據(jù)統(tǒng)計隊列。
步驟506、服務(wù)器判斷接收到的關(guān)于該失效節(jié)點的失效節(jié)點報告,是否達(dá)到預(yù)設(shè)的失效節(jié)點報告上限,是則進(jìn)入步驟507;否則返回步驟501。
在只有一個節(jié)點報告失效的情況下,很有可能是報告失效的節(jié)點與該失效節(jié)點之間網(wǎng)絡(luò)故障造成的,為了提高系統(tǒng)的可靠性,本發(fā)明實施例提供的在節(jié)點失效時的處理方法中采用了,設(shè)定一個數(shù)值,限制只有收到預(yù)定數(shù)目的失效報告時,才確認(rèn)該節(jié)點失效的方法。當(dāng)然,直接在收到第一個失效報告時,立即進(jìn)行后續(xù)處理也是允許的。
步驟507、確定并保存失效節(jié)點退出時的狀態(tài)。
服務(wù)器根據(jù)隊列中失效節(jié)點數(shù)據(jù)進(jìn)行統(tǒng)計,以多數(shù)相同的數(shù)據(jù)為準(zhǔn),確定失效節(jié)點退出時的狀態(tài),然后進(jìn)行保存。
步驟508、服務(wù)器向發(fā)送報告的節(jié)點發(fā)送反饋信息。
步驟509、發(fā)送報告的節(jié)點接收服務(wù)器發(fā)送的反饋信息。
流程結(jié)束。
由于本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例中,每個節(jié)點都以小區(qū)為單位保存數(shù)據(jù),每個節(jié)點上以小區(qū)為單位的數(shù)據(jù)都可能被多個節(jié)點備份,如計算節(jié)點數(shù)據(jù)保存在與之直接聯(lián)系的計算節(jié)點和數(shù)據(jù)更新節(jié)點,數(shù)據(jù)更新節(jié)點數(shù)據(jù)保存在與之直接聯(lián)系的計算節(jié)點上,所以在出現(xiàn)節(jié)點意外失效時,就可以利用這些備份數(shù)據(jù),獲知失效節(jié)點時效時的數(shù)據(jù),進(jìn)行保存,提升了系統(tǒng)的可靠性。
以圖1為例,節(jié)點120保存了小區(qū)106、小區(qū)107、小區(qū)110、及小區(qū)111的信息,當(dāng)節(jié)點120失效時,與節(jié)點120直接通信的小區(qū)106內(nèi)的計算節(jié)點,以及小區(qū)107、小區(qū)110、小區(qū)111內(nèi)為節(jié)點120提供數(shù)據(jù)更新的節(jié)點會因節(jié)點120長時間不響應(yīng)而確認(rèn)節(jié)點120失效,并向游戲服務(wù)器報告,小區(qū)106中得知節(jié)點120失效的節(jié)點,保存了節(jié)點120上虛擬實體的數(shù)據(jù),并向游戲服務(wù)器發(fā)送,游戲服務(wù)器根據(jù)小區(qū)106內(nèi)節(jié)點發(fā)送的數(shù)據(jù)確定節(jié)點120上的虛擬實體退出時的所有狀態(tài)信息,并進(jìn)行保存。這樣,在節(jié)點120恢復(fù)正常后,用戶再次調(diào)出之前的虛擬實體時,就不會丟失該虛擬實體的數(shù)據(jù)。
在發(fā)生事件時,需要對相關(guān)節(jié)點發(fā)布該事件,然后以小區(qū)為單位對事件進(jìn)行計算和計算結(jié)果的評估,下面本文將對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例發(fā)布事件的方法進(jìn)行描述,具體流程見圖6步驟601、計算事件影響的小區(qū)。
一個節(jié)點引發(fā)一個事件時,計算該事件的影響范圍,根據(jù)事件影響范圍與小區(qū)的交疊情況,計算該事件影響的小區(qū),有時事件影響范圍會超出一個小區(qū)范圍,即同時影響多個小區(qū)。
步驟602、判斷是否有事件影響到的小區(qū)不在該節(jié)點的關(guān)注范圍,是則進(jìn)入步驟603;否則進(jìn)入步驟604。
步驟603、使用上文描述的加入新的小區(qū)的方法,將該小區(qū)加入該節(jié)點的關(guān)注范圍。
步驟604、向所有受影響的小區(qū)內(nèi)的計算節(jié)點發(fā)布事件信息。
流程結(jié)束,接著就以小區(qū)為單位對事件進(jìn)行計算和計算結(jié)果的評估。
通過上述的發(fā)布事件的方法,只要發(fā)生事件時每個小區(qū)都會被多個節(jié)點計算,就能保證每個事件有多個節(jié)點同時參與計算,通過將多個節(jié)點的計算結(jié)果進(jìn)行比較就可以實現(xiàn)避免少數(shù)節(jié)點的欺騙的行為。
網(wǎng)絡(luò)中的用戶指令首先以事件的形式在各個計算節(jié)點進(jìn)行計算,所有獲取小區(qū)數(shù)據(jù)更新的節(jié)點以直接獲取狀態(tài)的形式從計算節(jié)點獲得游戲的發(fā)展信息,這些節(jié)點的信息與其數(shù)據(jù)源的計算節(jié)點狀態(tài)數(shù)據(jù)一致。只要能夠保證多個計算節(jié)點的計算一致,將計算節(jié)點的欺詐行為或數(shù)據(jù)錯誤降到最低,就能在一定程度上確保整個系統(tǒng)是安全一致的。
為了確保系統(tǒng)的一致性,本發(fā)明分布式虛擬環(huán)境的管理方法實施例提供了對節(jié)點數(shù)據(jù)進(jìn)行校驗的方法,具體做法見下文所述,具體流程參見圖7步驟701、保存校驗時刻的數(shù)據(jù)信息并向小區(qū)校驗節(jié)點發(fā)送。
為了確保系統(tǒng)中數(shù)據(jù)的一致性,本發(fā)明分布式虛擬環(huán)境的管理方法實施例通過周期性以小區(qū)為單位檢測各個節(jié)點上的數(shù)據(jù)來實現(xiàn)。
本發(fā)明分布式虛擬環(huán)境的管理方法實施例在全局統(tǒng)一時鐘上建立一系列的監(jiān)測時間點,作為統(tǒng)一的校驗時刻,這些監(jiān)測時間點的間隔時間很短,長度通常是相等且固定的,當(dāng)然系統(tǒng)也可以根據(jù)其他得需求對這些監(jiān)測時間點進(jìn)行設(shè)定,每個節(jié)點在運行到校驗時刻時,將自動保存當(dāng)前的小區(qū)的狀態(tài)信息,并向該小區(qū)內(nèi)的一個統(tǒng)一的校驗節(jié)點發(fā)送。
校驗節(jié)點是對該小區(qū)狀態(tài)數(shù)據(jù)進(jìn)行統(tǒng)一校驗的節(jié)點,該節(jié)點由于需要承擔(dān)額外的計算任務(wù),計算量較其他節(jié)點略大,需要比較好的性能也需要較高的可信度,所以通常由小區(qū)內(nèi)的計算節(jié)點擔(dān)任。而校驗節(jié)點的選擇,可以通過隨機選擇或基于信譽機制選舉的方式確定。
在小區(qū)內(nèi)部的節(jié)點中進(jìn)行校驗節(jié)點的選擇時,隨機選擇方案是指在網(wǎng)絡(luò)中根據(jù)一定的規(guī)則輪換選擇校驗節(jié)點,這種方案可以有效避免網(wǎng)絡(luò)中多個節(jié)點相互勾結(jié)欺騙,但是選擇的節(jié)點,其性能不能確保是所有節(jié)點中比較好的;基于信譽機制選舉的方式,通過一種有效的信譽控制機制可以在小區(qū)的計算節(jié)點中,推選出一個一段時間內(nèi)可信的節(jié)點,這樣系統(tǒng)相對穩(wěn)定。
參與某一小區(qū)校驗的節(jié)點通常是該小區(qū)的計算節(jié)點,獲取小區(qū)狀態(tài)更新的節(jié)點一般不用參與校驗,只要計算節(jié)點上的信息是正確的,那么獲取計算節(jié)點發(fā)布的信息的更新節(jié)點就是正確的。參與校驗的節(jié)點要向校驗節(jié)點發(fā)送參與校驗的時間點t,參與小區(qū)計算的節(jié)點個數(shù)N,也即該小區(qū)的計算節(jié)點數(shù)目,該節(jié)點保存的該小區(qū)內(nèi)的對象總數(shù)M,也即該小區(qū)內(nèi)計算節(jié)點和更新節(jié)點的數(shù)目之和,以及各個校驗對象的狀態(tài)信息,這里校驗對象的狀態(tài)信息可以是該校驗對象的狀態(tài)信息哈希值,以減少數(shù)據(jù)通信量,及方便比對。
步驟702、建立該校驗時刻的校驗列表。
校驗節(jié)點在收到各計算節(jié)點發(fā)送來的信息后,建立該校驗時刻的校驗列表,包含各計算節(jié)點發(fā)送來的校驗對象信息,及校驗節(jié)點本身保存的校驗對象信息,用于后續(xù)的比對。
步驟703、對數(shù)據(jù)信息進(jìn)行比對,以少數(shù)服從多數(shù)的方式確定正確狀態(tài)信息。
現(xiàn)舉例說明校驗列表的結(jié)構(gòu),及比對的方法,假設(shè)節(jié)點P1、P2、P3......PN向校驗節(jié)點發(fā)送了在校驗時刻t需校驗的狀態(tài)信息,這些節(jié)點加上校驗節(jié)點一共是N個,每個節(jié)點發(fā)送來的狀態(tài)信息哈希值記為H1、H2、H3......HM,其中M為小區(qū)內(nèi)的對象總數(shù)。校驗節(jié)點建立的t時刻的校驗列表如表1所示。
表1、校驗列表

表1中記錄了各個節(jié)點發(fā)送來的校驗對象的狀態(tài)信息哈希值,通過對這些哈希值的比對,獲得多數(shù)一致的結(jié)果為最終結(jié)果,如H1,P1、P2、P4......到PN發(fā)送來的哈希值都是h11,只有P3發(fā)送來的哈希值是h15,所以H1將以h11為最終正確的結(jié)果,那么P1、P2、P4......到PN對H1的校驗結(jié)果都是一致,而P3對H1的校驗結(jié)果就是不一致。
步驟704、向小區(qū)內(nèi)參與校驗的節(jié)點發(fā)送校驗結(jié)果。
校驗節(jié)點向校驗結(jié)果為一致的節(jié)點發(fā)送狀態(tài)一致通知,向校驗結(jié)果為不一致的節(jié)點發(fā)送狀態(tài)不一致通知,該不一致通知中要包含一個檢驗結(jié)果為一致的節(jié)點信息,也即一個可靠節(jié)點信息。
以表1為例,就需要向節(jié)點P3發(fā)送狀態(tài)不一致通知,該通知中包含P1、P2、P4......到PN之中任一個節(jié)點的信息,還要向其他節(jié)點發(fā)送狀態(tài)一致通知。
步驟705、各接受校驗的節(jié)點接收校驗結(jié)果。
步驟706、判斷該校驗時刻信息是否正確,是則流程結(jié)束;否則進(jìn)入步驟707。
步驟707、校正節(jié)點狀態(tài)。
進(jìn)入此步驟說明該接受校驗的節(jié)點在校驗時刻t的數(shù)據(jù)出現(xiàn)了錯誤,需要校正該節(jié)點的狀態(tài)信息,該節(jié)點將通過通知中攜帶的可靠節(jié)點信息,連接到該可靠節(jié)點,獲取正確的t時刻狀態(tài)信息。
此時,可以直接用在可靠節(jié)點獲取的狀態(tài)信息覆蓋該節(jié)點上當(dāng)前的記錄的狀態(tài)信息,但是由于進(jìn)行校驗需要花費一定的時間,雖然這個時間很短,也導(dǎo)致節(jié)點在獲取到正確的t時刻狀態(tài)信息時,t時刻已經(jīng)成為了一個過去的時間點,在t時刻到當(dāng)前的時間之間,小區(qū)可能會被其他的事件所影響,這時直接用在可靠節(jié)點獲取的狀態(tài)信息覆蓋該節(jié)點上當(dāng)前的記錄的狀態(tài)信息,可能會忽略掉這些新發(fā)生事件的影響。
為了準(zhǔn)確的校正節(jié)點上的信息,在節(jié)點運行到校驗時刻,保存狀態(tài)信息的同時,建立一個隊列保存校驗時刻后到收到校驗結(jié)果并進(jìn)行相應(yīng)處理前的所有事件,在收到不一致信息獲取正確的t時刻狀態(tài)信息后,根據(jù)狀態(tài)不一致對象和隊列中事件相關(guān)情況及因果關(guān)系,對節(jié)點進(jìn)行校驗。
參與校驗的節(jié)點,在接收到校驗節(jié)點發(fā)送來的不一致狀態(tài)通知后,把與不一致對象狀態(tài)事件相關(guān)的事件,以及與相關(guān)事件因果相關(guān)的事件依次檢索出來,然后從最近事件起依次建立反事件處理并向相關(guān)節(jié)點發(fā)送。
需要說明的是,有些時候,由于客觀原因,某些應(yīng)該參與校驗的節(jié)點,沒能及時把校驗信息發(fā)送到校驗節(jié)點,此時,校驗節(jié)點對那些沒有及時參與校驗的節(jié)點,直接發(fā)送校驗結(jié)果不一致通知,防止這一部分節(jié)點由于自身網(wǎng)絡(luò)或機器性能影響游戲向前推進(jìn),這樣可以順利進(jìn)行下一步操作。
以上既是對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例工作方式的描述,另外本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例也提供了設(shè)定小區(qū)范圍的方法上文提到小區(qū)的范圍要比可視區(qū)域要小,但是過小也是不合適的,因為小區(qū)過小就造成,節(jié)點的移動會頻繁在各小區(qū)間移動,帶來一些額外的通信數(shù)據(jù),為了限制通信數(shù)據(jù)量,若小區(qū)為方形,可以要求可視范圍直徑小于或等于二倍的小區(qū)邊長,即小區(qū)的邊長不小于可視范圍直徑的一半,這樣使得節(jié)點可視范圍中的小區(qū)個數(shù)一直保持小于等于9,若小區(qū)為六邊形,可以要求小區(qū)的對角線不小于可視范圍直徑的一半,在小區(qū)為其他形狀時也基本遵循這樣的規(guī)則。
同時,節(jié)點的計算范圍決定哪些節(jié)點與該節(jié)點構(gòu)成通信組,對同一個小區(qū)進(jìn)行計算,而參與同一小區(qū)計算的節(jié)點不宜過多,這就決定了小區(qū)不宜過大。另一方面,小區(qū)過小時,一個事件覆蓋多個小區(qū),參與該事件計算的節(jié)點從多個小區(qū)注冊過來,卻都是為了計算同一個事件,這會引起小區(qū)之間的重復(fù)通信。小區(qū)的大小界定是一個重要的問題。在整個游戲空間大小一定的前提下,小區(qū)越小,稱之為空間劃分粒度越細(xì)??臻g劃分粒度關(guān)系到空間數(shù)據(jù)索引頻繁程度。粒度過細(xì),節(jié)點在虛擬環(huán)境中的移動,可能引起分區(qū)間的數(shù)據(jù)頻繁交換;粒度過粗,節(jié)點控制的范圍過大,負(fù)載過大。舉例說明,設(shè)100×100的虛擬空間,可以按照每小區(qū)15×15或5×5進(jìn)行劃分,一個虛擬人物可以看到空間中10×10的范圍,則在5×5的劃分方式中,節(jié)點每直線行進(jìn)5步就看到一個新的小區(qū),進(jìn)行以小區(qū)為單位的數(shù)據(jù)發(fā)現(xiàn)。而在15×15的劃分方式中,一個小區(qū)內(nèi)的節(jié)點個數(shù)提高到了5×5劃分方式的9倍,每個節(jié)點產(chǎn)生事件都要發(fā)送給小區(qū)內(nèi)所有節(jié)點,數(shù)據(jù)通信量大大增加。因此,可以要求小區(qū)的邊長略大于或等于平均事件影響范圍的直徑。
另外,小區(qū)最好不要交疊,每個小區(qū)大小也最好是固定的,因為在交疊區(qū)會產(chǎn)生一定的附加計算和通信,而小區(qū)動態(tài)變化,會不便于節(jié)點進(jìn)行資源的查找。
以上是以大型多人在線網(wǎng)絡(luò)游戲為例,對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例的具體描述,至于其他的其他分布式虛擬環(huán)境,如虛擬社區(qū),其工作方式都和上文描述的大致相同。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,和上述的分布式虛擬環(huán)境的管理方法實施例基本相同。
上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
下面仍然以大型多人在線網(wǎng)絡(luò)游戲為例,對本發(fā)明實施例提供的分布式虛擬環(huán)境的系統(tǒng)實施例進(jìn)行具體描述。
本發(fā)明實施例提供的分布式虛擬環(huán)境的系統(tǒng)實施例,通常包含多個節(jié)點,所述節(jié)點位于所述系統(tǒng)中的小區(qū)內(nèi),這些小區(qū)的面積小于節(jié)點的可視范圍,現(xiàn)以圖8為例對本發(fā)明實施例提供的分布式虛擬環(huán)境的系統(tǒng)實施例的結(jié)構(gòu)進(jìn)行說明。
系統(tǒng)800中包含多個小區(qū),這些小區(qū)是小區(qū)810、小區(qū)820、小區(qū)830、小區(qū)840、小區(qū)850、小區(qū)860......等等。每個小區(qū)中又包含一些節(jié)點,小區(qū)810中包含節(jié)點811、節(jié)點812.......等等,小區(qū)820中包含節(jié)點821、節(jié)點822......等等,小區(qū)830中包含節(jié)點831、節(jié)點832......等等,小區(qū)840中包含節(jié)點841、節(jié)點842......等等,小區(qū)850中包含節(jié)點851、節(jié)點852......等等,小區(qū)860中包含節(jié)點861、節(jié)點862......等等。本圖中節(jié)點的數(shù)量和小區(qū)的數(shù)量都只是舉例來說,實際上系統(tǒng)只要有多于一個小區(qū)即可,每個小區(qū)內(nèi)的節(jié)點數(shù)沒有限制。
其中,每個小區(qū)的范圍都要小于系統(tǒng)中節(jié)點的可視范圍。
節(jié)點用于保存自身關(guān)注范圍內(nèi)的所有小區(qū)信息;在發(fā)生游戲事件時,若節(jié)點參與計算的小區(qū)被事件影響范圍涉及,節(jié)點需要參與該事件的計算,計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到接收該小區(qū)更新信息的節(jié)點,也即更新節(jié)點,更新節(jié)點連接到對事件進(jìn)行計算的節(jié)點,接收該關(guān)于小區(qū)的計算結(jié)果。
整個系統(tǒng)具體的工作方式和上文對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例的描述基本一致,在此不再重復(fù)描述。
本發(fā)明實施例提供的節(jié)點的具體實施方式
的內(nèi)部結(jié)構(gòu)如圖9所示,包含操作控制單元901、本地操作指令單元902、操作指令組903、地圖形態(tài)組904、玩家狀態(tài)結(jié)構(gòu)組905、校驗碼單元906、界面顯示單元907、通信單元908、計算單元909、以及存儲單元910。
存儲單元910用于存儲節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,其中小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,其面積比節(jié)點可視范圍??;計算單元909用于在節(jié)點參與計算的小區(qū)被事件影響到時,計算事件影響小區(qū)的結(jié)果,并更新存儲單元910;通信單元908用于將計算單元910的計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
操作控制單元901用于接收用戶終端輸入的鍵盤鼠標(biāo)指令。
本地操作單元902用于對用戶指令進(jìn)行編碼,加蓋時間戳。
界面顯示單元907用于將操作指令組903、地圖形態(tài)組904、玩家狀態(tài)結(jié)構(gòu)組905要呈現(xiàn)的情節(jié)相結(jié)合,在顯示終端顯示。
校驗碼單元906用于,校驗通信單元908接收到的其他節(jié)點發(fā)送來的需校驗的信息;此時通信單元還用于,向發(fā)送校驗信息的節(jié)點反饋校驗結(jié)果。
計算單元909參與所有節(jié)點計算的事件信息的計算,將計算結(jié)果根據(jù)需要進(jìn)行前端顯示或通過通信單元908向網(wǎng)絡(luò)中其它節(jié)點傳送。我們的系統(tǒng)中,計算單元909要負(fù)責(zé)事件和狀態(tài)發(fā)布時對數(shù)據(jù)的封裝,為每個發(fā)送到通信單元908的數(shù)據(jù)加上目標(biāo)地址和時間戳。
通信單元908負(fù)責(zé)所有網(wǎng)絡(luò)中傳輸承載的數(shù)據(jù)分類和傳輸,事件數(shù)據(jù)發(fā)送到計算單元909,狀態(tài)數(shù)據(jù)發(fā)送到界面顯示單元907。
整個游戲系統(tǒng)中節(jié)點都處于平等的位置。用戶輸入指令,系統(tǒng)將指令轉(zhuǎn)換為事件信息,通過核心計算進(jìn)程處理轉(zhuǎn)化為狀態(tài)信息,進(jìn)行界面顯示。另外事件信息和狀態(tài)信息通過通信單元908同步對其他節(jié)點發(fā)送。本發(fā)明實施例提供的節(jié)點的具體實施方式
具體的工作方式和上文對本發(fā)明實施例提供的分布式虛擬環(huán)境的管理方法實施例的描述基本一致,在此不再重復(fù)描述。
以上對本發(fā)明實施例所提供的一種分布式虛擬環(huán)境的管理方法,及一種分布式虛擬環(huán)境的系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明實施例的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明實施例的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實施例的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明實施例的限制。
權(quán)利要求
1.一種服務(wù)器中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法包括服務(wù)器將所述分布式虛擬環(huán)境劃分為面積比節(jié)點可視范圍小的小區(qū),以使處于所述分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,并使小區(qū)的參與計算的節(jié)點在事件影響到小區(qū)時,計算事件影響小區(qū)的結(jié)果,將計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
2.如權(quán)利要求1所述的服務(wù)器中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括所述服務(wù)器為所述小區(qū)的參與計算的節(jié)點數(shù)目設(shè)置上限。
3.如權(quán)利要求1或2所述的服務(wù)器中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括在所述節(jié)點失效時,所述服務(wù)器接收與所述失效節(jié)點通信的節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù),所述服務(wù)器接收到所述失效節(jié)點數(shù)據(jù)時,確認(rèn)所述失效節(jié)點已從系統(tǒng)退出,保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)。
4.如權(quán)利要求3所述的服務(wù)器中分布式虛擬環(huán)境的管理方法,其特征在于,所述服務(wù)器接收到所述失效節(jié)點數(shù)據(jù)包括所述服務(wù)器接收到預(yù)定數(shù)目節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù)時;所述保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)包括收集所有節(jié)點發(fā)送的所述失效節(jié)點數(shù)據(jù),并對所述數(shù)據(jù)進(jìn)行比較,以多數(shù)一致的結(jié)果為準(zhǔn),確定所述失效節(jié)點退出系統(tǒng)時的狀態(tài),并進(jìn)行保存。
5.一種節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法包括處于分布式虛擬環(huán)境中的節(jié)點保存所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,所述小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,所述小區(qū)面積比節(jié)點可視范圍??;事件影響到的小區(qū)的參與計算的節(jié)點計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
6.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括所述節(jié)點根據(jù)自身的性能和網(wǎng)絡(luò)速度決定是否作為所述小區(qū)的參與計算的節(jié)點。
7.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括所述節(jié)點為小區(qū)內(nèi)獲取更新的節(jié)點,在所述小區(qū)的參與計算的節(jié)點數(shù)目為一個時,提升為所述小區(qū)參與計算的節(jié)點;或者所述節(jié)點在所述小區(qū)的參與計算的節(jié)點數(shù)目為一個時,請求服務(wù)器參與所述小區(qū)的計算。
8.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括在所述節(jié)點關(guān)注范圍需要加入新的小區(qū)時,所述節(jié)點連接到所述新的小區(qū)的參與計算的節(jié)點,獲取并保存所述新的小區(qū)的信息。
9.如權(quán)利要求8所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括判斷所述節(jié)點是否需要參加所述新的小區(qū)的計算,若需要則所述節(jié)點成為所述小區(qū)的參與計算節(jié)點,若不需要則所述節(jié)點成為所述小區(qū)的獲取更新節(jié)點。
10.如權(quán)利要求8或9所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述節(jié)點關(guān)注范圍需要加入新的小區(qū)時包括所述節(jié)點的可視范圍進(jìn)入到新的小區(qū)時,所述節(jié)點需要加入所述新的小區(qū);或者事件的影響范圍涉及了不在引發(fā)事件的節(jié)點的關(guān)注范圍內(nèi)的新的小區(qū),則所述節(jié)點需要加入所述新的小區(qū)。
11.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括所述節(jié)點在退出小區(qū)時,向所述小區(qū)中與所述節(jié)點有通信的節(jié)點發(fā)送退出小區(qū)通知,收到所述通知的節(jié)點修改該節(jié)點上保存的所述小區(qū)的信息。
12.如權(quán)利要求11所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括在所述節(jié)點退出系統(tǒng)時,所述節(jié)點發(fā)送完退出小區(qū)通知后,向服務(wù)器發(fā)送退出系統(tǒng)請求,以使所述服務(wù)器收到所述退出系統(tǒng)請求時保存所述節(jié)點退出時的數(shù)據(jù)。
13.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括在所述節(jié)點失效時,與之通信的節(jié)點將保存的所述失效節(jié)點數(shù)據(jù)傳送給服務(wù)器,以使所述服務(wù)器接收到所述失效節(jié)點數(shù)據(jù)時,確認(rèn)所述失效節(jié)點已從系統(tǒng)退出,保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)。
14.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述獲取更新的節(jié)點獲取所述參與計算的節(jié)點發(fā)布的計算結(jié)果包括所述獲取更新的節(jié)點在所述小區(qū)的參與計算的節(jié)點中挑選出一個網(wǎng)絡(luò)連接速度達(dá)到預(yù)設(shè)條件的參與計算的節(jié)點,將所述獲取更新的節(jié)點連接到所述參與計算的節(jié)點,獲取所述參與計算的節(jié)點發(fā)布的計算結(jié)果。
15.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括從所述小區(qū)的節(jié)點中挑選出校驗節(jié)點,到預(yù)設(shè)的時間時,所述小區(qū)內(nèi)的節(jié)點自動保存當(dāng)前小區(qū)的狀態(tài)信息,并將所述狀態(tài)信息或需校驗對象的哈希值發(fā)送到所述校驗節(jié)點,由所述校驗節(jié)點對所述狀態(tài)信息或所述哈希值進(jìn)行核對,以多數(shù)相同的結(jié)果為準(zhǔn),并向校驗結(jié)果不一致的節(jié)點反饋校驗結(jié)果,所述校驗結(jié)果不一致的節(jié)點連接到校驗結(jié)果一致的節(jié)點,獲取所述自動保存的當(dāng)前小區(qū)的狀態(tài)信息,覆蓋所述不一致的節(jié)點的狀態(tài)。
16.如權(quán)利要求15所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,所述方法還包括到預(yù)設(shè)的時間時,所述節(jié)點建立隊列保存所述校驗時刻后到收到校驗結(jié)果并進(jìn)行相應(yīng)處理前的事件;覆蓋所述不一致的節(jié)點的狀態(tài)后,根據(jù)隊列中保存的事件修正所述不一致的節(jié)點的狀態(tài)。
17.如權(quán)利要求5所述的節(jié)點中分布式虛擬環(huán)境的管理方法,其特征在于,將所述分布式虛擬環(huán)境劃分為比可視范圍小的小區(qū)包括將所述分布式虛擬環(huán)境劃分為比系統(tǒng)設(shè)定的可視范圍小的小區(qū),若小區(qū)為方形,所述小區(qū)的邊長不小于所述可視范圍直徑的一半;若小區(qū)為六邊形,所述小區(qū)的對角線不小于所述可視范圍直徑的一半。
18.一種分布式虛擬環(huán)境的系統(tǒng),其特征在于,所述系統(tǒng)包含多個節(jié)點,所述節(jié)點位于所述系統(tǒng)中的小區(qū)內(nèi),所述小區(qū)為分布式虛擬環(huán)境被劃分出的區(qū)域,所述節(jié)點的可視范圍大于所述小區(qū)的面積;所述節(jié)點用于保存自身關(guān)注范圍內(nèi)的所述小區(qū)信息,在事件影響所述節(jié)點參與計算的小區(qū)時,計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到獲取所述小區(qū)更新信息的節(jié)點。
19.如權(quán)利要求18所述的分布式虛擬環(huán)境的系統(tǒng),其特征在于,所述節(jié)點還用于,在所述節(jié)點的關(guān)注范圍需要加入新的小區(qū)時,連接到所述新的小區(qū)的參與計算的節(jié)點,獲取并保存所述新的小區(qū)的信息。
20.如權(quán)利要求18所述的分布式虛擬環(huán)境的系統(tǒng),其特征在于,所述節(jié)點還用于,在所述節(jié)點退出小區(qū)時,向所述小區(qū)中與所述節(jié)點有通信的節(jié)點發(fā)送退出小區(qū)通知,收到所述通知的節(jié)點修改該節(jié)點上保存的所述小區(qū)的信息。
21.如權(quán)利要求20所述的分布式虛擬環(huán)境的系統(tǒng),其特征在于,所述系統(tǒng)還包括服務(wù)器;所述節(jié)點還用于,在所述節(jié)點退出系統(tǒng)時,向所述服務(wù)器發(fā)送退出系統(tǒng)請求;所述服務(wù)器用于,在收到所述退出系統(tǒng)請求后,保存所述節(jié)點退出時的數(shù)據(jù)。
22.如權(quán)利要求21所述的分布式虛擬環(huán)境的系統(tǒng),其特征在于,所述節(jié)點還用于,在有與之通信的節(jié)點失效時,將保存的所述失效節(jié)點數(shù)據(jù)傳送給服務(wù)器,所述服務(wù)器接收到所述失效節(jié)點數(shù)據(jù)時,確認(rèn)所述失效節(jié)點已從系統(tǒng)退出,保存所述失效節(jié)點退出系統(tǒng)時的狀態(tài)。
23.一種節(jié)點,其特征在于,所述節(jié)點包括存儲單元用于存儲所述節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息,所述小區(qū)為分布式虛擬環(huán)境被服務(wù)器劃分出的區(qū)域,所述小區(qū)面積比節(jié)點可視范圍?。挥嬎銌卧糜谠诠?jié)點參與計算的小區(qū)被事件影響到時,計算事件影響小區(qū)的結(jié)果,并更新存儲單元;通信單元用于將計算單元的計算結(jié)果發(fā)送到所述事件影響到的小區(qū)的獲取更新的節(jié)點。
24.如權(quán)利要求23所述的節(jié)點,其特征在于,所述計算單元還用于,根據(jù)節(jié)點的性能和網(wǎng)絡(luò)速度從所述小區(qū)內(nèi)的節(jié)點中挑選出所述參與計算的節(jié)點。
25.如權(quán)利要求23所述的節(jié)點,其特征在于,所述通信單元還用于,在所述節(jié)點需要加入新的小區(qū)時,將節(jié)點連接到所述新的小區(qū)的參與計算的節(jié)點獲取所述新的小區(qū)的信息,并保存在所述存儲單元。
26.如權(quán)利要求23所述的節(jié)點,其特征在于,所述通信單元還用于,在所述節(jié)點退出小區(qū)時,向所述小區(qū)中與所述節(jié)點有通信的節(jié)點發(fā)送退出小區(qū)通知。
27.如權(quán)利要求23所述的節(jié)點,其特征在于,所述通信單元還用于,在與之通信的節(jié)點失效時,將所述存儲單元上保存的所述失效節(jié)點數(shù)據(jù)傳送給服務(wù)器。
全文摘要
本發(fā)明公開了一種服務(wù)器中分布式虛擬環(huán)境的管理方法服務(wù)器將分布式虛擬環(huán)境劃分為面積比節(jié)點可視范圍小的小區(qū),以使處于分布式虛擬環(huán)境中的節(jié)點保存節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息。本發(fā)明還公開了一種節(jié)點中分布式虛擬環(huán)境的管理方法處于分布式虛擬環(huán)境中的節(jié)點保存節(jié)點關(guān)注范圍內(nèi)的小區(qū)信息;事件影響到的小區(qū)的計算節(jié)點計算事件影響小區(qū)的結(jié)果,并將計算結(jié)果發(fā)送到該小區(qū)的更新節(jié)點,更新節(jié)點獲取計算節(jié)點發(fā)布的計算結(jié)果。本發(fā)明還公開了一種分布式虛擬環(huán)境的系統(tǒng),該系統(tǒng)包含多個節(jié)點,節(jié)點位于小區(qū)內(nèi)。本發(fā)明還公開了一種節(jié)點包括存儲單元,計算單元,通信單元。通過應(yīng)用本發(fā)明可以有效降低節(jié)點的負(fù)載。
文檔編號H04L12/28GK101072160SQ20071011119
公開日2007年11月14日 申請日期2007年6月14日 優(yōu)先權(quán)日2007年6月14日
發(fā)明者李金龍, 劉姍姍, 沈靜波, 王煦法, 王鐵英 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1