專利名稱:一種對(duì)等網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)等(P2P,Peer-to-Peer)網(wǎng)絡(luò)技術(shù),特別是指一種P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法及系統(tǒng)。
背景技術(shù):
近年來(lái),P2P網(wǎng)絡(luò)技術(shù)作為一種分布式互聯(lián)網(wǎng)技術(shù),發(fā)展非常迅速。與傳統(tǒng)的客戶端/服務(wù)器(C/S,Client/server)技術(shù)不同的是P2P網(wǎng)絡(luò)中的所有節(jié)點(diǎn)均可作為服務(wù)器和客戶端。P2P網(wǎng)絡(luò)中的數(shù)據(jù)以分布式存儲(chǔ)在節(jié)點(diǎn)上,業(yè)務(wù)由節(jié)點(diǎn)通過(guò)分布式實(shí)現(xiàn)。由于P2P網(wǎng)絡(luò)中的所有節(jié)點(diǎn)均存儲(chǔ)有網(wǎng)絡(luò)運(yùn)行所必需的數(shù)據(jù),因此,當(dāng)有節(jié)點(diǎn)加入、或退出網(wǎng)絡(luò)、或進(jìn)行負(fù)載均衡時(shí),節(jié)點(diǎn)之間需要進(jìn)行數(shù)據(jù)遷移,即將某個(gè)節(jié)點(diǎn)所保存的數(shù)據(jù)拷貝到另一個(gè)節(jié)點(diǎn)上,以確保數(shù)據(jù)不會(huì)丟失,并維持?jǐn)?shù)據(jù)的完整性。舉個(gè)例子來(lái)說(shuō),在 目前廣泛應(yīng)用的資源定位與發(fā)現(xiàn)(RELOAD, REsource LOcation And Discovery) P2P網(wǎng)絡(luò)協(xié)議中,數(shù)據(jù)是以資源的形式組織的。網(wǎng)絡(luò)為每個(gè)資源分配一個(gè)全網(wǎng)唯一的資源標(biāo)識(shí),用于查找該資源標(biāo)識(shí)下的數(shù)據(jù)。每個(gè)節(jié)點(diǎn)可以負(fù)責(zé)一個(gè)或多個(gè)資源標(biāo)識(shí)的數(shù)據(jù)存儲(chǔ)及處理。在新節(jié)點(diǎn)加入時(shí),原有的負(fù)責(zé)節(jié)點(diǎn)會(huì)將加入節(jié)點(diǎn)應(yīng)負(fù)責(zé)的資源標(biāo)識(shí)下的數(shù)據(jù)發(fā)送給加入節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)退出時(shí),退出節(jié)點(diǎn)會(huì)將自身負(fù)責(zé)的資源標(biāo)識(shí)下的數(shù)據(jù)發(fā)送給新的負(fù)責(zé)節(jié)點(diǎn)。這樣,在節(jié)點(diǎn)變動(dòng)時(shí),網(wǎng)絡(luò)中始終保持每個(gè)資源標(biāo)識(shí)下的數(shù)據(jù)都有一個(gè)對(duì)應(yīng)節(jié)點(diǎn)負(fù)責(zé)。下面以節(jié)點(diǎn)加入流程為例,描述現(xiàn)有技術(shù)中數(shù)據(jù)的遷移流程,如圖I所示,包括以下步驟步驟101 :加入節(jié)點(diǎn)希望加入P2P網(wǎng)絡(luò)中,首先向配置服務(wù)器發(fā)送加入請(qǐng)求;步驟102 :配置服務(wù)器根據(jù)加入節(jié)點(diǎn)的能力和網(wǎng)絡(luò)負(fù)載情況,為加入節(jié)點(diǎn)分配一個(gè)節(jié)點(diǎn)標(biāo)識(shí)(ID, IDentity);步驟103 :加入節(jié)點(diǎn)向引導(dǎo)節(jié)點(diǎn)發(fā)送接入請(qǐng)求,同引導(dǎo)節(jié)點(diǎn)建立連接;步驟104 :在引導(dǎo)節(jié)點(diǎn)的引導(dǎo)下,加入節(jié)點(diǎn)同接納節(jié)點(diǎn)建立連接;這里,所述接納節(jié)點(diǎn)就是指當(dāng)前負(fù)責(zé)存儲(chǔ)加入節(jié)點(diǎn)所需獲取的數(shù)據(jù)的節(jié)點(diǎn);加入節(jié)點(diǎn)依據(jù)分配的節(jié)點(diǎn)ID,確定接納節(jié)點(diǎn)的節(jié)點(diǎn)號(hào),進(jìn)而同接納節(jié)點(diǎn)建立連接。步驟105 :加入節(jié)點(diǎn)向接納節(jié)點(diǎn)發(fā)送加入請(qǐng)求,請(qǐng)求接入P2P網(wǎng)絡(luò),并且希望接管接納節(jié)點(diǎn)的部分資源標(biāo)識(shí)下的數(shù)據(jù);步驟106 :接納節(jié)點(diǎn)將需要遷移的資源標(biāo)識(shí)下的數(shù)據(jù)發(fā)送給加入節(jié)點(diǎn);步驟107 :如果數(shù)據(jù)量比較大,接納節(jié)點(diǎn)則可以分多次發(fā)送數(shù)據(jù),直至所有數(shù)據(jù)全部都發(fā)送完畢;步驟108 :數(shù)據(jù)發(fā)送完畢后,接納節(jié)點(diǎn)通知加入節(jié)點(diǎn)更新P2P網(wǎng)絡(luò)路由,加入節(jié)點(diǎn)正式負(fù)責(zé)該部分?jǐn)?shù)據(jù)的存儲(chǔ)和處理;步驟109 :加入節(jié)點(diǎn)向其它相關(guān)節(jié)點(diǎn)發(fā)送路由更新,通知已正式加入P2P網(wǎng)絡(luò)。從上面的描述中可以看出,在現(xiàn)有的遷移流程中,配置服務(wù)器只依據(jù)加入節(jié)點(diǎn)的能力和網(wǎng)絡(luò)負(fù)載情況為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID,而不考慮加入節(jié)點(diǎn)自身存儲(chǔ)的數(shù)據(jù)信息,這樣,會(huì)造成為加入節(jié)點(diǎn)分配的節(jié)點(diǎn)ID具有一定的隨機(jī)性,進(jìn)而會(huì)造成加入節(jié)點(diǎn)即將接管的數(shù)據(jù)也存在較大的不確定性,因此,在很多情況下,會(huì)造成加入節(jié)點(diǎn)即將接管的數(shù)據(jù)與自身存儲(chǔ)的數(shù)據(jù)沒有任何聯(lián)系,此時(shí),接納節(jié)點(diǎn)需要把遷移的所有數(shù)據(jù)都發(fā)送給加入節(jié)點(diǎn),如此,會(huì)造成網(wǎng)絡(luò)數(shù)據(jù)量較大,對(duì)網(wǎng)絡(luò)造成較為嚴(yán)重地沖擊。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法及系統(tǒng),能大大減少P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的數(shù)據(jù)量,進(jìn)而保證網(wǎng)絡(luò)的正常運(yùn)行。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明提供了一種P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法,該方法包括需要進(jìn)行數(shù)據(jù)遷移時(shí),配置服務(wù)器依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)源節(jié)點(diǎn)將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。上述方案中,在將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn)后,該方法進(jìn)一步包括數(shù)據(jù)源節(jié)點(diǎn)保存自身當(dāng)前版本的遷移數(shù)據(jù)。上述方案中,需要進(jìn)行數(shù)據(jù)遷移的時(shí)機(jī)為有節(jié)點(diǎn)加入對(duì)等網(wǎng)絡(luò)時(shí),或者,有節(jié)點(diǎn)退出對(duì)等網(wǎng)絡(luò)時(shí),或者,對(duì)等網(wǎng)絡(luò)中有節(jié)點(diǎn)負(fù)載超載,需要均衡負(fù)載時(shí),或者,由于管理原因需要均衡負(fù)載時(shí),或者,需要增加節(jié)點(diǎn)作為對(duì)等網(wǎng)絡(luò)中的節(jié)點(diǎn)的數(shù)據(jù)的備份時(shí)。上述方案中,所述數(shù)據(jù)版本信息為數(shù)據(jù)版本號(hào)、和/或?yàn)樾薷臅r(shí)間戳、和/或?yàn)閿?shù)據(jù)的摘要信息。上述方案中,所述數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù),為數(shù)據(jù)目標(biāo)節(jié)點(diǎn)采用增量數(shù)據(jù)中的數(shù)據(jù)內(nèi)容,修改自身存儲(chǔ)的數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到最新版本的數(shù)據(jù)。上述方案中,所述為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)目標(biāo)節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上。上述方案中,在依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)時(shí),配置服務(wù)器進(jìn)一步依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置,最終確定為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。本發(fā)明還提供了一種P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的系統(tǒng),該系統(tǒng)包括配置服務(wù)器、第一節(jié)點(diǎn)、以及第二節(jié)點(diǎn);其中,配置服務(wù)器,用于需要進(jìn)行數(shù)據(jù)遷移時(shí),依據(jù)第一節(jié)點(diǎn)或第二節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)占.第一節(jié)點(diǎn),用于將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與第二節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn);第二節(jié)點(diǎn),用于收到第一節(jié)點(diǎn)發(fā)送的增量數(shù)據(jù)后,根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。上述方案中,所述第二節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上。上述方案中,所述第一節(jié)點(diǎn),還用于將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn)后,保存當(dāng)前版本數(shù)據(jù)。上述方案中,在依據(jù)第一節(jié)點(diǎn)或第二節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)點(diǎn)時(shí),所述配置服務(wù)器,進(jìn)一步用于依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置,最終確定為所述節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。
本發(fā)明提供的P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法及系統(tǒng),需要進(jìn)行數(shù)據(jù)遷移時(shí),配置服務(wù)器依據(jù)發(fā)送請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)源節(jié)點(diǎn)將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù),通過(guò)節(jié)點(diǎn)選擇,數(shù)據(jù)源節(jié)點(diǎn)即數(shù)據(jù)遷出節(jié)點(diǎn)和數(shù)據(jù)目標(biāo)節(jié)點(diǎn)即數(shù)據(jù)遷入節(jié)點(diǎn)的數(shù)據(jù)版本可以比較接近,減少增量數(shù)據(jù)的大小,如此,能大大減少P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的數(shù)據(jù)量,進(jìn)而提高數(shù)據(jù)遷移的速度及可靠性。除此以外,在將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn)后,數(shù)據(jù)源節(jié)點(diǎn)保存自身當(dāng)前版本的遷移數(shù)據(jù),如此,當(dāng)數(shù)據(jù)源節(jié)點(diǎn)再次負(fù)責(zé)相應(yīng)的數(shù)據(jù)時(shí),能減少數(shù)據(jù)的傳輸量,進(jìn)一步提高數(shù)據(jù)遷移的速度及可靠性,保證網(wǎng)絡(luò)的正常運(yùn)行。
圖I為現(xiàn)有技術(shù)中節(jié)點(diǎn)加入流程中數(shù)據(jù)的遷移流程示意圖;圖2為本發(fā)明P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法流程示意圖;圖3為實(shí)施例一實(shí)現(xiàn)數(shù)據(jù)遷移的方法流程示意圖;圖4為實(shí)施例二實(shí)現(xiàn)數(shù)據(jù)遷移的方法流程示意圖;圖5為實(shí)施例三實(shí)現(xiàn)數(shù)據(jù)遷移的方法流程示意圖;圖6為實(shí)施例四實(shí)現(xiàn)數(shù)據(jù)遷移的方法流程示意圖;圖7為本發(fā)明P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法,如圖2所示,包括以下步驟步驟201 :需要進(jìn)行數(shù)據(jù)遷移時(shí),配置服務(wù)器依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);其中,如果所述發(fā)送請(qǐng)求的節(jié)點(diǎn)為數(shù)據(jù)源節(jié)點(diǎn),則配置服務(wù)器為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn),如果所述發(fā)送請(qǐng)求的節(jié)點(diǎn)為數(shù)據(jù)目標(biāo)節(jié)點(diǎn),則配置服務(wù)器為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn);
這里,需要進(jìn)行數(shù)據(jù)遷移的時(shí)機(jī)為有節(jié)點(diǎn)加入P2P網(wǎng)絡(luò)時(shí),或者,有節(jié)點(diǎn)退出P2P網(wǎng)絡(luò)時(shí),或者,P2P網(wǎng)絡(luò)中有節(jié)點(diǎn)負(fù)載超載,需要均衡負(fù)載時(shí),或者,由于管理原因需要均衡負(fù)載時(shí),或者,需要增加節(jié)點(diǎn)作為某個(gè)節(jié)點(diǎn)的數(shù)據(jù)的備份時(shí);所述數(shù)據(jù)版本信息是指配置服務(wù)器能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出合適的節(jié)點(diǎn)ID的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;當(dāng)節(jié)點(diǎn)沒有相關(guān)的數(shù)據(jù)版本信息時(shí),所述數(shù)據(jù)版本信息具體還可以是表示空的字符;當(dāng)所述發(fā)送請(qǐng)求的節(jié)點(diǎn)向配置服務(wù)器發(fā)送加入請(qǐng)求時(shí),配置服務(wù)器為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn),即當(dāng)前負(fù)責(zé)存儲(chǔ)所述發(fā)送請(qǐng)求的節(jié)點(diǎn)所需獲取的數(shù)據(jù)的節(jié)點(diǎn);當(dāng)所述發(fā)送請(qǐng)求的節(jié)點(diǎn)向配置服務(wù)器發(fā)送退出請(qǐng)求或負(fù)載遷移請(qǐng)求時(shí),配置服務(wù)器為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn),即即將接管遷移數(shù)據(jù)的節(jié)點(diǎn);所述當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)為當(dāng)前能正常工作、未出現(xiàn)故障的節(jié)點(diǎn);
這里,如果配置服務(wù)器未能確定出所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)時(shí),可采用現(xiàn)有的技術(shù)為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);這里,當(dāng)數(shù)據(jù)版本信息為表示空的字符時(shí),配置服務(wù)器可采用現(xiàn)有的技術(shù)為所述節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)源節(jié)點(diǎn)是指需要遷出數(shù)據(jù)的節(jié)點(diǎn),數(shù)據(jù)目標(biāo)節(jié)點(diǎn)是指遷入數(shù)據(jù)的節(jié)點(diǎn);在依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息、及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)時(shí),配置服務(wù)器進(jìn)一步依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置等信息,最終確定為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。步驟202 :數(shù)據(jù)源節(jié)點(diǎn)將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn);所述數(shù)據(jù)版本信息是指數(shù)據(jù)源節(jié)點(diǎn)能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出增量數(shù)據(jù)的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;當(dāng)數(shù)據(jù)目標(biāo)節(jié)點(diǎn)沒有相關(guān)的數(shù)據(jù)版本信息時(shí),所述數(shù)據(jù)版本信息具體還可以是表示空的字符;所述增量數(shù)據(jù)是指數(shù)據(jù)源節(jié)點(diǎn)與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)不一致的數(shù)據(jù),具體可以是修改過(guò)的資源標(biāo)識(shí)下的全部數(shù)據(jù)、或特定資源數(shù)據(jù)段下的全部數(shù)據(jù)、或數(shù)據(jù)修改的日志信息等;在將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn)后,該方法進(jìn)一步包括數(shù)據(jù)源節(jié)點(diǎn)保存自身當(dāng)前版本的遷移數(shù)據(jù)。步驟203 :數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù);具體地,采用增量數(shù)據(jù)中的數(shù)據(jù)內(nèi)容,修改自身存儲(chǔ)的數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到最新版本的數(shù)據(jù);舉個(gè)例子來(lái)說(shuō),假設(shè)增量數(shù)據(jù)包含第100條數(shù)據(jù)的內(nèi)容為123456,則數(shù)據(jù)目標(biāo)節(jié)點(diǎn)將自身存儲(chǔ)的第100條數(shù)據(jù)的內(nèi)容修改為123456 ;再舉個(gè)例子來(lái)說(shuō),假設(shè)增量數(shù)據(jù)包含第100條數(shù)據(jù)修改為123456的日志信息,則數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)該日志信息,將自身存儲(chǔ)的第100條數(shù)據(jù)的內(nèi)容修改為123456,如此類推,從而恢復(fù)出最新版本的數(shù)據(jù)。
下面結(jié)合實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的描述。實(shí)施例一本實(shí)施例的應(yīng)用場(chǎng)景為節(jié)點(diǎn)加入過(guò)程,在以下的描述中,將請(qǐng)求加入的節(jié)點(diǎn)稱為加入節(jié)點(diǎn),將當(dāng)前正在負(fù)責(zé)存儲(chǔ)加入節(jié)點(diǎn)所需獲取數(shù)據(jù)的節(jié)點(diǎn)稱為接納節(jié)點(diǎn)。本實(shí)施例實(shí)現(xiàn)選擇數(shù)據(jù)遷移目標(biāo)節(jié)點(diǎn)及數(shù)據(jù)遷移的方法,如圖3所示,包括以下步驟步驟301 :加入節(jié)點(diǎn)希望加入P2P網(wǎng)絡(luò)中,首先向配置服務(wù)器發(fā)送加入請(qǐng)求;這里,所述加入請(qǐng)求包含加入節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)版本信息;所述數(shù)據(jù)版本信息是指配置服務(wù)器能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出合適的節(jié)點(diǎn)ID的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;當(dāng)節(jié)點(diǎn)沒有相關(guān)的數(shù)據(jù)版本信息時(shí),所述數(shù)據(jù)版本信息具體還可以是表示空的字符。 步驟302 :配置服務(wù)器收到加入節(jié)點(diǎn)的數(shù)據(jù)版本信息后,根據(jù)所述加入節(jié)點(diǎn)的數(shù)據(jù)版本信息、當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息、所述加入節(jié)點(diǎn)的能力信息、以及當(dāng)前活躍的節(jié)點(diǎn)的負(fù)載信息,為所述加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID ;具體地,配置服務(wù)器可以先根據(jù)所述加入節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息,從當(dāng)前活躍的節(jié)點(diǎn)中選擇適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn);之后,依據(jù)加入節(jié)點(diǎn)的能力信息,確定加入節(jié)點(diǎn)能遷移的最大數(shù)據(jù)量;最后,依據(jù)加入節(jié)點(diǎn)能遷移的最大數(shù)據(jù)量、以及所有適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn)的負(fù)載信息,確定為加入節(jié)點(diǎn)分配的節(jié)點(diǎn)ID ;具體地,可以選擇負(fù)載較重的節(jié)點(diǎn)ID作為分配給加入節(jié)點(diǎn)的節(jié)點(diǎn)ID ;其中,配置服務(wù)器已采用現(xiàn)有技術(shù)獲得加入節(jié)點(diǎn)的能力信息及當(dāng)前活躍的節(jié)點(diǎn)的負(fù)載信息;配置服務(wù)器可以通過(guò)向各個(gè)節(jié)點(diǎn)請(qǐng)求本地存儲(chǔ)的數(shù)據(jù)版本信息的方式,獲得當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息,或者,可以通過(guò)定期維護(hù)網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息的方式,獲得各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息,配置服務(wù)器預(yù)先已配置適合作為加入節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn)的數(shù)據(jù)版本信息的選擇規(guī)則,在選擇適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn)時(shí),配置服務(wù)器根據(jù)此選擇規(guī)則,確定適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn),其中,可以依據(jù)需要配置所述選擇規(guī)則;例如,優(yōu)先選擇與所述加入節(jié)點(diǎn)數(shù)據(jù)版本接近的候選數(shù)據(jù)源節(jié)點(diǎn);確定分配加入節(jié)點(diǎn)的節(jié)點(diǎn)ID即是確定數(shù)據(jù)源節(jié)點(diǎn),在確定加入節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn)時(shí),還可以是依據(jù)加入節(jié)點(diǎn)能遷移的最大數(shù)據(jù)量、所有適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn)的負(fù)載信息及地理位置等信息,確定為加入節(jié)點(diǎn)分配的節(jié)點(diǎn)ID ;加入節(jié)點(diǎn)根據(jù)分配的節(jié)點(diǎn)ID即可獲知自身的數(shù)據(jù)源節(jié)點(diǎn),即下面描述的接納節(jié)點(diǎn);在實(shí)際應(yīng)用時(shí),配置服務(wù)器還可以采用其它處理方式為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID,比如,首先依據(jù)加入節(jié)點(diǎn)的能力信息,確定加入節(jié)點(diǎn)能遷移的最大數(shù)據(jù)量,之后,依據(jù)加入節(jié)點(diǎn)能遷移的最大數(shù)據(jù)量、當(dāng)前活躍的節(jié)點(diǎn)的負(fù)載信息及地理位置信息,確定適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn),最后,依據(jù)加入節(jié)點(diǎn)的數(shù)據(jù)版本信息及所有適合作為加入節(jié)點(diǎn)的候選數(shù)據(jù)源節(jié)點(diǎn)的節(jié)點(diǎn)的數(shù)據(jù)版本信息,確定為加入節(jié)點(diǎn)分配的節(jié)點(diǎn)ID ;這里,如果配置服務(wù)器未能確定出加入節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn),可采用現(xiàn)有的技術(shù)為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID ;這里,當(dāng)數(shù)據(jù)版本信息為表示空的字符時(shí),配置服務(wù)器可采用現(xiàn)有的技術(shù)為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID ;
所述當(dāng)前活躍的節(jié)點(diǎn)為當(dāng)前能正常工作、未出現(xiàn)故障的節(jié)點(diǎn);本步驟中,配置服務(wù)器還可以采用指定數(shù)據(jù)路由表的方式為加入節(jié)點(diǎn)分配一個(gè)數(shù)據(jù)源節(jié)點(diǎn),加入節(jié)點(diǎn)可以根據(jù)指定數(shù)據(jù)路由表即可獲知自身的數(shù)據(jù)源節(jié)點(diǎn),即下面描述的接納節(jié)點(diǎn);下面以實(shí)際操作中的一種實(shí)施方法為例,描述配置服務(wù)器為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID的過(guò)程,假設(shè)加入節(jié)點(diǎn)在加入請(qǐng)求中通知配置服務(wù)器,加入節(jié)點(diǎn)擁有記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為I. 5,同時(shí)也有記錄編號(hào)為700 800之間的數(shù)據(jù),版本號(hào)為2.0 ;配置服務(wù)器獲得的當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息包括當(dāng)前活躍的節(jié)點(diǎn)A負(fù)責(zé)記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為4. 0,當(dāng)前活躍的節(jié)點(diǎn)B負(fù)責(zé)記錄編號(hào)為700 800之間的數(shù)據(jù),版本號(hào)為2. I。此時(shí),在同等條件下,配置服務(wù)器優(yōu)先選擇與加入節(jié)點(diǎn)版本號(hào)較為接近的節(jié)點(diǎn)B作為數(shù)據(jù)源節(jié)點(diǎn)。當(dāng)然,在選擇過(guò)程中還可以綜合考慮節(jié)點(diǎn)地理位置和節(jié)點(diǎn)負(fù)載情況。例如,如果節(jié)點(diǎn)A和加入節(jié)點(diǎn)在同一個(gè)網(wǎng)絡(luò)地理區(qū)域,且兩節(jié)點(diǎn)之間的網(wǎng)絡(luò)帶寬比較大,配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A作為數(shù)據(jù)源節(jié)點(diǎn);另一種情況是節(jié)點(diǎn)A的負(fù)載明顯大、于節(jié)點(diǎn)B的負(fù)載,此時(shí),配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A作為接納節(jié)點(diǎn)。步驟303 :加入節(jié)點(diǎn)收到分配的節(jié)點(diǎn)ID后,向引導(dǎo)節(jié)點(diǎn)發(fā)送接入請(qǐng)求,同引導(dǎo)節(jié)點(diǎn)建立連接。步驟304 :在引導(dǎo)節(jié)點(diǎn)的引導(dǎo)下,加入節(jié)點(diǎn)同接納節(jié)點(diǎn)建立連接。步驟305 :加入節(jié)點(diǎn)向接納節(jié)點(diǎn)發(fā)送加入請(qǐng)求,請(qǐng)求加入P2P網(wǎng)絡(luò),并且希望接管接納節(jié)點(diǎn)的部分資源標(biāo)識(shí)下的數(shù)據(jù);這里,加入節(jié)點(diǎn)利用現(xiàn)有技術(shù)可獲知應(yīng)接管接納節(jié)點(diǎn)的哪部分資源標(biāo)識(shí)下的數(shù)據(jù)。步驟306 :接納節(jié)點(diǎn)針對(duì)加入節(jié)點(diǎn)請(qǐng)求的資源標(biāo)識(shí),向加入節(jié)點(diǎn)請(qǐng)求對(duì)應(yīng)的本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟307 :加入節(jié)點(diǎn)將對(duì)應(yīng)的數(shù)據(jù)版本信息發(fā)送給接納節(jié)點(diǎn);這里,配置服務(wù)器為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID完成后,可以將加入節(jié)點(diǎn)的數(shù)據(jù)版本信息通知給接納節(jié)點(diǎn),此時(shí),則不需要執(zhí)行步驟306 307 ;所述數(shù)據(jù)版本信息為接納節(jié)點(diǎn)能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出增量數(shù)據(jù)的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)的版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;當(dāng)加入節(jié)點(diǎn)完全沒有所請(qǐng)求的資源標(biāo)識(shí)下的數(shù)據(jù)時(shí),所述數(shù)據(jù)版本信息具體還可以是表示空的字符。步驟308 :接納節(jié)點(diǎn)將自身存儲(chǔ)的數(shù)據(jù)版本信息與加入節(jié)點(diǎn)的數(shù)據(jù)版本信息進(jìn)行對(duì)比,確定需要提供給加入節(jié)點(diǎn)的增量數(shù)據(jù);這里,在步驟302中,如果配置服務(wù)器未能確定出加入節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn),而是采用現(xiàn)有的技術(shù)為加入節(jié)點(diǎn)確定數(shù)據(jù)源節(jié)點(diǎn),則說(shuō)明加入節(jié)點(diǎn)的數(shù)據(jù)版本信息過(guò)于陳舊或沒有數(shù)據(jù)版本信息,此時(shí),接納節(jié)點(diǎn)無(wú)法對(duì)比數(shù)據(jù)版本信息,所述增量數(shù)據(jù)為所請(qǐng)求的資源標(biāo)識(shí)下的所有數(shù)據(jù)加入節(jié)點(diǎn)。步驟309 :接納節(jié)點(diǎn)將增量數(shù)據(jù)發(fā)送給加入節(jié)點(diǎn);這里,當(dāng)增量數(shù)據(jù)的數(shù)據(jù)量比較大時(shí),可以分多次發(fā)送數(shù)據(jù),具體處理過(guò)程可采用現(xiàn)有的處理過(guò)程。
步驟310 :增量數(shù)據(jù)發(fā)送完畢后,加入節(jié)點(diǎn)根據(jù)本地存儲(chǔ)的數(shù)據(jù)和收到的增量數(shù)據(jù)恢復(fù)出最新版本的數(shù)據(jù),同時(shí),接納節(jié)點(diǎn)通知加入節(jié)點(diǎn)更新P2P網(wǎng)絡(luò)路由,加入節(jié)點(diǎn)正式負(fù)責(zé)所請(qǐng)求的資源標(biāo)識(shí)下的數(shù)據(jù)的存儲(chǔ)和處理;這里,接納節(jié)點(diǎn)將已遷出的當(dāng)前版本數(shù)據(jù)存儲(chǔ)在本地緩存中,以備后續(xù)使用,在存儲(chǔ)時(shí),接納節(jié)點(diǎn) 可以選擇部分?jǐn)?shù)據(jù)進(jìn)行存儲(chǔ),比如準(zhǔn)靜態(tài)數(shù)據(jù)等;其中,所述準(zhǔn)靜態(tài)數(shù)據(jù)是指在資源標(biāo)識(shí)下隨時(shí)間變化不大的數(shù)據(jù);另外,在存儲(chǔ)時(shí),接納節(jié)點(diǎn)還可以依據(jù)需要?jiǎng)h除部分陳舊的數(shù)據(jù),用當(dāng)前版本數(shù)據(jù)代替這些陳舊的數(shù)據(jù),比如依據(jù)數(shù)據(jù)的使用頻率等信息,刪除使用頻率相對(duì)較低的數(shù)據(jù),以節(jié)約本地緩存資源。步驟311 :加入節(jié)點(diǎn)向其它相關(guān)節(jié)點(diǎn)發(fā)送路由更新,通知已正式加入P2P網(wǎng)絡(luò)。在實(shí)際應(yīng)用時(shí),步驟301中,加入節(jié)點(diǎn)在發(fā)送請(qǐng)求時(shí),可以不攜帶本地存儲(chǔ)的數(shù)據(jù)版本信息,此時(shí),在步驟302中,配置服務(wù)器在為加入節(jié)點(diǎn)分配節(jié)點(diǎn)ID時(shí),可以在考慮當(dāng)前活躍的節(jié)點(diǎn)的負(fù)載信息后,再向加入節(jié)點(diǎn)咨詢加入節(jié)點(diǎn)的數(shù)據(jù)版本信息。實(shí)施例二 本實(shí)施例的應(yīng)用場(chǎng)景為節(jié)點(diǎn)退出過(guò)程,在以下的描述中,將請(qǐng)求退出的節(jié)點(diǎn)稱為退出節(jié)點(diǎn),將即將接管遷移數(shù)據(jù)的節(jié)點(diǎn)稱為新負(fù)責(zé)節(jié)點(diǎn)。本實(shí)施例實(shí)現(xiàn)數(shù)據(jù)遷移的方法,如圖4所示,包括以下步驟步驟401 :退出節(jié)點(diǎn)希望退出P2P網(wǎng)絡(luò),首先向配置服務(wù)器發(fā)送退出請(qǐng)求,請(qǐng)求配置服務(wù)器提供合適的新負(fù)責(zé)節(jié)點(diǎn);這里,所述退出請(qǐng)求包含退出節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟402 403 :配置服務(wù)器收到請(qǐng)求后,向P2P網(wǎng)絡(luò)中合適的節(jié)點(diǎn)請(qǐng)求本地存儲(chǔ)的數(shù)據(jù)版本信息;節(jié)點(diǎn)收到請(qǐng)求后,向配置服務(wù)器發(fā)送自身當(dāng)前的數(shù)據(jù)版本信息;這里,所述數(shù)據(jù)版本信息是指配置服務(wù)器能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出合適的新負(fù)責(zé)節(jié)點(diǎn)的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;所述合適的節(jié)點(diǎn)可以依據(jù)需要進(jìn)行選擇,比如P2P網(wǎng)絡(luò)中負(fù)載較輕的節(jié)點(diǎn)、或?yàn)樵诘乩砦恢蒙想x退出節(jié)點(diǎn)較近的節(jié)點(diǎn)等等;在步驟402 403中,配置服務(wù)器還可以采用定期維護(hù)網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息的方式,獲得各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息,此時(shí),步驟401中的退出請(qǐng)求不包含退出節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟404:配置服務(wù)器收到所有合適的節(jié)點(diǎn)的數(shù)據(jù)版本信息后,依據(jù)退出節(jié)點(diǎn)的數(shù)據(jù)版本信息、所有合適的節(jié)點(diǎn)的數(shù)據(jù)版本信息、以及相關(guān)信息,為所述退出節(jié)點(diǎn)分配新負(fù)責(zé)節(jié)點(diǎn),并將新負(fù)責(zé)節(jié)點(diǎn)的信息發(fā)送給退出節(jié)點(diǎn);這里,所述相關(guān)信息為現(xiàn)有技術(shù)中配置服務(wù)器在為退出節(jié)點(diǎn)分配新負(fù)責(zé)節(jié)點(diǎn)時(shí)考慮的信息;依據(jù)退出節(jié)點(diǎn)的數(shù)據(jù)版本信息、所有合適的節(jié)點(diǎn)的數(shù)據(jù)版本信息、以及相關(guān)信息,為所述退出節(jié)點(diǎn)分配新負(fù)責(zé)節(jié)點(diǎn),具體為配置服務(wù)器將退出節(jié)點(diǎn)的數(shù)據(jù)版本信息與所有合適的節(jié)點(diǎn)的數(shù)據(jù)版本信息分別進(jìn)行比較,確定適合作為候選新負(fù)責(zé)節(jié)點(diǎn)的節(jié)點(diǎn);之后,依據(jù)相關(guān)信息,從適合作為候選新負(fù)責(zé)節(jié)點(diǎn)的所有節(jié)點(diǎn)中,確定新負(fù)責(zé)節(jié)點(diǎn);或者,
配置服務(wù)器依據(jù)相關(guān)信息,確定適合作為候選新負(fù)責(zé)節(jié)點(diǎn)的節(jié)點(diǎn),之后,將退出節(jié)點(diǎn)的數(shù)據(jù)版本信息與所有適合作為候選新負(fù)責(zé)節(jié)點(diǎn)的節(jié)點(diǎn)的數(shù)據(jù)版本信息分別進(jìn)行比較,確定新負(fù)責(zé)節(jié)點(diǎn);其中,配置服務(wù)器預(yù)先已配置適合作為新負(fù)責(zé)節(jié)點(diǎn)的數(shù)據(jù)版本信息的選擇規(guī)則,在為退出節(jié)點(diǎn)分配新負(fù)責(zé)節(jié)點(diǎn),配置服務(wù)器根據(jù)此選擇規(guī)則,確定適合作為候選新負(fù)責(zé)節(jié)點(diǎn)的節(jié)點(diǎn),或者,依據(jù)此選擇規(guī)則,確定新負(fù)責(zé)節(jié)點(diǎn),其中,可以依據(jù)需要配置所述選擇規(guī)貝U,例如,優(yōu)先選擇與所述退出節(jié)點(diǎn)數(shù)據(jù)版本接近的候選新負(fù)責(zé)節(jié)點(diǎn);所述新負(fù)責(zé)節(jié)點(diǎn)的信息的內(nèi)容與現(xiàn)有技術(shù)中配置服務(wù)器發(fā)送給退出節(jié)點(diǎn)的新負(fù)責(zé)節(jié)點(diǎn)的信息的內(nèi)容相同;所述新負(fù)責(zé)節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上;
下面以實(shí)際操作中的一種實(shí)施方法為例,描述配置服務(wù)器為退出節(jié)點(diǎn)分配新負(fù)責(zé)節(jié)點(diǎn)的過(guò)程,假設(shè)退出節(jié)點(diǎn)在退出請(qǐng)求中通知配置服務(wù)器,退出節(jié)點(diǎn)負(fù)責(zé)記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為2. 0 ;配置服務(wù)器獲得的當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息包括當(dāng)前活躍的節(jié)點(diǎn)A緩存了記錄編號(hào)100 200之間的數(shù)據(jù),版本號(hào)為I. 2,當(dāng)前活躍的節(jié)點(diǎn)B也緩存了記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為I. 7。此時(shí),在同等條件下,配置服務(wù)器優(yōu)先選擇與退出節(jié)點(diǎn)版本號(hào)較為接近的節(jié)點(diǎn)B作為新負(fù)責(zé)節(jié)點(diǎn)。當(dāng)然,在選擇過(guò)程中還可以綜合考慮節(jié)點(diǎn)地理位置和節(jié)點(diǎn)負(fù)載情況。例如,如果節(jié)點(diǎn)A和加入節(jié)點(diǎn)在同一個(gè)網(wǎng)絡(luò)地理區(qū)域,且兩節(jié)點(diǎn)之間的網(wǎng)絡(luò)帶寬比較大,配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A ;另一種情況是節(jié)點(diǎn)A的負(fù)載明顯小于節(jié)點(diǎn)B的負(fù)載,此時(shí),配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A作為新負(fù)責(zé)節(jié)點(diǎn);本步驟中,配置服務(wù)器還可以為退出節(jié)點(diǎn)負(fù)責(zé)的數(shù)據(jù)選擇合適的備份節(jié)點(diǎn),即用于備份退出節(jié)點(diǎn)負(fù)責(zé)的數(shù)據(jù)的節(jié)點(diǎn)。步驟405 :之后配置服務(wù)器將節(jié)點(diǎn)ID或指定路由表信息發(fā)送給新負(fù)責(zé)節(jié)點(diǎn),通知新負(fù)責(zé)節(jié)點(diǎn)準(zhǔn)備接收退出節(jié)點(diǎn)的數(shù)據(jù);這里,新負(fù)責(zé)節(jié)點(diǎn)根據(jù)所述節(jié)點(diǎn)ID或指定路由表信息即可獲知該接收哪個(gè)節(jié)點(diǎn)的數(shù)據(jù)。步驟406 :退出節(jié)點(diǎn)向新負(fù)責(zé)節(jié)點(diǎn)發(fā)送退出請(qǐng)求,請(qǐng)求新負(fù)責(zé)節(jié)點(diǎn)接管部分資源標(biāo)識(shí)下的數(shù)據(jù),同時(shí)請(qǐng)求新負(fù)責(zé)節(jié)點(diǎn)對(duì)應(yīng)的本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟407 :新負(fù)責(zé)節(jié)點(diǎn)收到請(qǐng)求后,將對(duì)應(yīng)的本地存儲(chǔ)的數(shù)據(jù)版本信息發(fā)送給退出節(jié)點(diǎn)。步驟408 :退出節(jié)點(diǎn)收到新負(fù)責(zé)節(jié)點(diǎn)的數(shù)據(jù)版本信息后,將自身存儲(chǔ)的數(shù)據(jù)版本信息與新負(fù)責(zé)節(jié)點(diǎn)的數(shù)據(jù)版本信息進(jìn)行對(duì)比,確定需要提供給新負(fù)責(zé)節(jié)點(diǎn)的增量數(shù)據(jù)。步驟409 :退出節(jié)點(diǎn)將增量數(shù)據(jù)發(fā)送給新負(fù)責(zé)節(jié)點(diǎn);這里,當(dāng)增量數(shù)據(jù)的數(shù)據(jù)量比較大時(shí),可以分多次發(fā)送數(shù)據(jù),具體處理過(guò)程可采用現(xiàn)有的處理過(guò)程。步驟410 :增量數(shù)據(jù)發(fā)送完畢后,新負(fù)責(zé)節(jié)點(diǎn)根據(jù)本地存儲(chǔ)的數(shù)據(jù)和收到的增量數(shù)據(jù)恢復(fù)出最新版本的數(shù)據(jù),同時(shí),退出節(jié)點(diǎn)通知新負(fù)責(zé)節(jié)點(diǎn)更新P2P網(wǎng)絡(luò)路由,新負(fù)責(zé)節(jié)點(diǎn)正式負(fù)責(zé)退出節(jié)點(diǎn)的資源標(biāo)識(shí)下的數(shù)據(jù)的存儲(chǔ)和處理;這里,退出節(jié)點(diǎn)將已遷出的當(dāng)前版本數(shù)據(jù)存儲(chǔ)在本地緩存中,以備后續(xù)使用,在存儲(chǔ)時(shí),退出節(jié)點(diǎn)可以選擇部分?jǐn)?shù)據(jù)進(jìn)行存儲(chǔ),比如準(zhǔn)靜態(tài)數(shù)據(jù)等;其中,所述準(zhǔn)靜態(tài)數(shù)據(jù)是指在資源標(biāo)識(shí)下隨時(shí)間變化不大的數(shù)據(jù);另外,在存儲(chǔ)時(shí),退出節(jié)點(diǎn)還可以依據(jù)需要?jiǎng)h除部分陳舊的數(shù)據(jù),用當(dāng)前版本數(shù)據(jù)代替這些陳舊的數(shù)據(jù),比如依據(jù)數(shù)據(jù)的使用頻率等信息,刪除使用頻率相對(duì)較低的數(shù)據(jù),以節(jié)約本地緩存資源。步驟411 :新負(fù)責(zé)節(jié)點(diǎn)向其它相關(guān)節(jié)點(diǎn)發(fā)送路由更新,通知已正式加入P2P網(wǎng)絡(luò)。在實(shí)際應(yīng)用時(shí),可以不執(zhí)行步驟405,此時(shí),可以在步驟406中,由退出節(jié)點(diǎn)攜帶步驟405中的相關(guān)信息,發(fā)送給新負(fù)責(zé)節(jié)點(diǎn)。實(shí)施例三本實(shí)施例的應(yīng)用場(chǎng)景為節(jié)點(diǎn)過(guò)載過(guò)程,在以下的描述中,將負(fù)荷過(guò)載、請(qǐng)求負(fù)載遷移的節(jié)點(diǎn)稱為過(guò)載節(jié)點(diǎn),將即將接管遷移數(shù)據(jù)的節(jié)點(diǎn)稱為輕載節(jié)點(diǎn)。本實(shí)施例實(shí)現(xiàn)數(shù)據(jù)遷移的方法,如圖5所示,包括以下步驟 步驟501 :過(guò)載節(jié)點(diǎn)希望將部分?jǐn)?shù)據(jù)遷移到其它節(jié)點(diǎn),首先向配置服務(wù)器發(fā)送負(fù)載遷移退出請(qǐng)求,請(qǐng)求配置服務(wù)器提供合適的輕載節(jié)點(diǎn);這里,所述負(fù)載遷移請(qǐng)求包含過(guò)載節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟502 503 :配置服務(wù)器收到請(qǐng)求后,向P2P網(wǎng)絡(luò)中合適的輕載節(jié)點(diǎn)請(qǐng)求本地存儲(chǔ)的數(shù)據(jù)版本信息;輕載節(jié)點(diǎn)收到請(qǐng)求后,向配置服務(wù)器發(fā)送自身當(dāng)前的數(shù)據(jù)版本信息;這里,所述數(shù)據(jù)版本信息是指配置服務(wù)器能根據(jù)所述數(shù)據(jù)版本信息及自身的相關(guān)信息即可確定出合適的輕載節(jié)點(diǎn)的信息,所述數(shù)據(jù)版本信息具體可以是數(shù)據(jù)版本號(hào)、和/或修改時(shí)間戳、和/或數(shù)據(jù)的摘要信息等;所述合適的節(jié)點(diǎn)可以依據(jù)需要進(jìn)行選擇,比如P2P網(wǎng)絡(luò)中負(fù)載較輕的節(jié)點(diǎn)、或?yàn)樵诘乩砦恢蒙想x退出節(jié)點(diǎn)較近的節(jié)點(diǎn)等等;在步驟502 503中,配置服務(wù)器還可以采用定期維護(hù)網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息的方式,獲得各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本信息,此時(shí),步驟501中的退出請(qǐng)求不包含過(guò)載節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟504 :配置服務(wù)器收到所有合適的輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息后,依據(jù)過(guò)載節(jié)點(diǎn)的數(shù)據(jù)版本信息、所有合適的輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息、以及相關(guān)信息,為所述過(guò)載節(jié)點(diǎn)分配輕載節(jié)點(diǎn),并將輕載節(jié)點(diǎn)的信息發(fā)送給過(guò)載節(jié)點(diǎn);這里,所述相關(guān)信息為現(xiàn)有技術(shù)中配置服務(wù)器在為過(guò)載節(jié)點(diǎn)分配輕載節(jié)點(diǎn)時(shí)考慮的信息;依據(jù)過(guò)載節(jié)點(diǎn)的數(shù)據(jù)版本信息、所有合適的輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息、以及相關(guān)信息,為所述過(guò)載節(jié)點(diǎn)分配輕載節(jié)點(diǎn),具體為配置服務(wù)器將過(guò)載節(jié)點(diǎn)的數(shù)據(jù)版本信息與所有合適的輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息分別進(jìn)行比較,確定適合作為候選輕載節(jié)點(diǎn)的節(jié)點(diǎn);之后,依據(jù)相關(guān)信息,從適合作為候選輕載節(jié)點(diǎn)的所有節(jié)點(diǎn)中,確定輕載節(jié)點(diǎn);或者,配置服務(wù)器依據(jù)相關(guān)信息,確定適合作為候選輕載節(jié)點(diǎn)的節(jié)點(diǎn),之后,將過(guò)載節(jié)點(diǎn)的數(shù)據(jù)版本信息與所有適合作為候選輕載節(jié)點(diǎn)的節(jié)點(diǎn)的數(shù)據(jù)版本信息分別進(jìn)行比較,確定輕載節(jié)點(diǎn);其中,配置服務(wù)器預(yù)先已配置適合作為輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息的選擇規(guī)則,在為過(guò)載節(jié)點(diǎn)分配輕載節(jié)點(diǎn),配置服務(wù)器根據(jù)此選擇規(guī)則,確定適合作為候選輕載節(jié)點(diǎn)的節(jié)點(diǎn),或者,依據(jù)此選擇規(guī)則,確定輕載節(jié)點(diǎn),其中,可以依據(jù)需要配置所述選擇規(guī)則,例如,優(yōu)先選擇與所述過(guò)載節(jié)點(diǎn)數(shù)據(jù)版本接近的候選輕載節(jié)點(diǎn);所述輕載節(jié)點(diǎn)的信息的內(nèi)容與現(xiàn)有技術(shù)中配置服務(wù)器發(fā)送給過(guò)載節(jié)點(diǎn)的輕載節(jié)點(diǎn)的信息的內(nèi)容相同;所述輕載節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上;下面以實(shí)際操作中的一種實(shí)施方法為例,描述配置服務(wù)器為過(guò)載節(jié)點(diǎn)分配輕載節(jié)點(diǎn)的過(guò)程,假設(shè)過(guò)載節(jié)點(diǎn)在遷移請(qǐng)求中通知配置服務(wù)器,過(guò)載節(jié)點(diǎn)希望遷出記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為2. 0 ;配置服務(wù)器獲得的當(dāng)前活躍的節(jié)點(diǎn)的數(shù)據(jù)版本信息包括當(dāng)前活躍的節(jié)點(diǎn)A緩存了記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為I. 2,當(dāng)前活躍的節(jié)點(diǎn)B也緩存了記錄編號(hào)為100 200之間的數(shù)據(jù),版本號(hào)為1.7。此時(shí),當(dāng)節(jié)點(diǎn)A和B負(fù)載接近時(shí),配置服務(wù)器應(yīng)優(yōu)先選擇與過(guò)載節(jié)點(diǎn)版本號(hào)較為接近的節(jié)點(diǎn)B作為輕載節(jié)點(diǎn)。當(dāng)然,在選擇過(guò)程中還可以綜合考慮節(jié)點(diǎn)地理位置和節(jié)點(diǎn)負(fù)載情況。例如,如果節(jié)點(diǎn)A和過(guò) 載節(jié)點(diǎn)在同一個(gè)網(wǎng)絡(luò)地理區(qū)域,且兩節(jié)點(diǎn)之間的網(wǎng)絡(luò)帶寬比較大,配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A作為輕載節(jié)點(diǎn);另一種情況是節(jié)點(diǎn)A的負(fù)載明顯小于節(jié)點(diǎn)B的負(fù)載,此時(shí),配置服務(wù)器可以優(yōu)先選擇節(jié)點(diǎn)A作為輕載節(jié)點(diǎn)。步驟505 :之后配置服務(wù)器將節(jié)點(diǎn)ID或指定路由表信息發(fā)送給輕載節(jié)點(diǎn),通知輕載節(jié)點(diǎn)準(zhǔn)備接收過(guò)載節(jié)點(diǎn)的數(shù)據(jù);這里,輕載節(jié)點(diǎn)根據(jù)所述節(jié)點(diǎn)ID或指定路由表信息即可獲知該接收哪個(gè)節(jié)點(diǎn)的數(shù)據(jù)。步驟506 :過(guò)載節(jié)點(diǎn)向輕載節(jié)點(diǎn)發(fā)送數(shù)據(jù)遷移請(qǐng)求,請(qǐng)求輕載節(jié)點(diǎn)接管部分資源標(biāo)識(shí)下的數(shù)據(jù),同時(shí)請(qǐng)求輕載節(jié)點(diǎn)對(duì)應(yīng)的本地存儲(chǔ)的數(shù)據(jù)版本信息。步驟507 :輕載節(jié)點(diǎn)收到請(qǐng)求后,將對(duì)應(yīng)的本地存儲(chǔ)的數(shù)據(jù)版本信息發(fā)送給退出節(jié)點(diǎn)。步驟508 :過(guò)載節(jié)點(diǎn)收到輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息后,將自身存儲(chǔ)的數(shù)據(jù)版本信息與輕載節(jié)點(diǎn)的數(shù)據(jù)版本信息進(jìn)行對(duì)比,確定需要提供給輕載節(jié)點(diǎn)的增量數(shù)據(jù)。步驟509 :過(guò)載節(jié)點(diǎn)將增量數(shù)據(jù)發(fā)送給輕載節(jié)點(diǎn);這里,當(dāng)增量數(shù)據(jù)的數(shù)據(jù)量比較大時(shí),可以分多次發(fā)送數(shù)據(jù),具體處理過(guò)程可采用現(xiàn)有的處理過(guò)程。步驟510 :增量數(shù)據(jù)發(fā)送完畢后,輕載節(jié)點(diǎn)根據(jù)本地存儲(chǔ)的數(shù)據(jù)和收到的增量數(shù)據(jù)恢復(fù)出最新版本的數(shù)據(jù),同時(shí),過(guò)載節(jié)點(diǎn)通知輕載節(jié)點(diǎn)更新P2P網(wǎng)絡(luò)路由,輕載節(jié)點(diǎn)正式負(fù)責(zé)過(guò)載節(jié)點(diǎn)的資源標(biāo)識(shí)下的數(shù)據(jù)的存儲(chǔ)和處理;這里,過(guò)載節(jié)點(diǎn)將已遷出的當(dāng)前版本數(shù)據(jù)存儲(chǔ)在本地緩存中,以備后續(xù)使用,在存儲(chǔ)時(shí),過(guò)載節(jié)點(diǎn)可以選擇部分?jǐn)?shù)據(jù)進(jìn)行存儲(chǔ),比如準(zhǔn)靜態(tài)數(shù)據(jù)等;其中,所述準(zhǔn)靜態(tài)數(shù)據(jù)是指在資源標(biāo)識(shí)下隨時(shí)間變化不大的數(shù)據(jù);另外,在存儲(chǔ)時(shí),過(guò)載節(jié)點(diǎn)還可以依據(jù)需要?jiǎng)h除部分陳舊的數(shù)據(jù),用當(dāng)前版本數(shù)據(jù)代替這些陳舊的數(shù)據(jù),比如依據(jù)數(shù)據(jù)的使用頻率等信息,刪除使用頻率相對(duì)較低的數(shù)據(jù),以節(jié)約本地緩存資源。步驟511 :輕載節(jié)點(diǎn)向其它相關(guān)節(jié)點(diǎn)發(fā)送路由更新,通知已正式加入P2P網(wǎng)絡(luò)。在實(shí)際應(yīng)用時(shí),可以不執(zhí)行步驟505,此時(shí),可以在步驟506中,由過(guò)載節(jié)點(diǎn)攜帶步驟505中的相關(guān)信息,發(fā)送給輕載節(jié)點(diǎn)。實(shí)施例四本實(shí)施例的應(yīng)用場(chǎng)景為數(shù)據(jù)版本信息為數(shù)據(jù)版本號(hào),在以下的描述中,將需要遷出數(shù)據(jù)的節(jié)點(diǎn)稱為源節(jié)點(diǎn),將遷入數(shù)據(jù)的節(jié)點(diǎn)稱為目標(biāo)節(jié)點(diǎn),本實(shí)施例實(shí)現(xiàn)數(shù)據(jù)遷移的方法,如圖6所示,包括以下步驟步驟601 :需要進(jìn)行數(shù)據(jù)遷移時(shí),目標(biāo)節(jié)點(diǎn)向源節(jié)點(diǎn)發(fā)送本地存儲(chǔ)的數(shù)據(jù)版本號(hào);這里,所述數(shù)據(jù)版本號(hào)的格式可以是依序增加的整數(shù)、主版本號(hào)加此版本號(hào)的格式或時(shí)間戳等格式,舉個(gè)例子來(lái)說(shuō),如果數(shù)據(jù)版本號(hào)的格式為依序增加的整數(shù),則數(shù)據(jù)版本號(hào)可以是1、2、3等等,如果數(shù)據(jù)版本號(hào)的格式為主版本號(hào)加此版本號(hào)的格式,則數(shù)據(jù)版本
號(hào)可以是I. I>I- 2、1. 3等等。步驟602 :源節(jié)點(diǎn)收到目標(biāo)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)版本號(hào)后,將目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)版本號(hào)與自身當(dāng)前的數(shù)據(jù)版本號(hào)進(jìn)行比較,通過(guò)兩個(gè)版本之間的版本修改信息,確定需要提供給目標(biāo)節(jié)點(diǎn)的增量數(shù)據(jù);這里,源節(jié)點(diǎn)事先會(huì)在當(dāng)前數(shù)據(jù)版本號(hào)下記錄修改信息,所述修改信息具體可以是數(shù)據(jù)修改操作的記錄、或修改的資源標(biāo)識(shí)記錄等,源節(jié)點(diǎn)據(jù)此可以獲知源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的兩個(gè)版本之間的版本修改信息;所述版本修改信息可以是數(shù)據(jù)修改操作的記錄、或修改的資源標(biāo)識(shí)記錄等;在通過(guò)兩個(gè)版本之間的版本修改信息,確定需要提供給目標(biāo)節(jié)點(diǎn)的增量數(shù)據(jù)時(shí),舉個(gè)例子來(lái)說(shuō),如果版本修改信息中包含對(duì)第100條數(shù)據(jù)進(jìn)行數(shù)據(jù)修改的具體操作,則源節(jié)點(diǎn)根據(jù)這條信息,確定需要將第100條數(shù)據(jù)發(fā)送給目標(biāo)節(jié)點(diǎn),即第100條數(shù)據(jù)即為增量數(shù)據(jù)中的一條;在源節(jié)點(diǎn)將目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)版本號(hào)與自身當(dāng)前的數(shù)據(jù)版本號(hào)進(jìn)行比較時(shí),如果源節(jié)點(diǎn)發(fā)現(xiàn)目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)版本號(hào)過(guò)于陳舊,導(dǎo)致自身沒有兩個(gè)版本之間的版本修改信息時(shí),源節(jié)點(diǎn)可以將目標(biāo)節(jié)點(diǎn)所請(qǐng)求的全部數(shù)據(jù)作為增量數(shù)據(jù),發(fā)送給目標(biāo)節(jié)點(diǎn)。步驟603 :源節(jié)點(diǎn)將增量數(shù)據(jù)發(fā)送給目標(biāo)節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)收到增量數(shù)據(jù)后,根據(jù)本地存儲(chǔ)的數(shù)據(jù)和增量數(shù)據(jù)恢復(fù)出最新版本的數(shù)據(jù);這里,源節(jié)點(diǎn)可以將版本之間的版本修改信息一起發(fā)送給目標(biāo)節(jié)點(diǎn),以便目標(biāo)節(jié)點(diǎn)能更好地恢復(fù)出最新版本的數(shù)據(jù);對(duì)于上述例子,目標(biāo)節(jié)點(diǎn)收到增量數(shù)據(jù)后,將自身的第100條數(shù)據(jù)用增量數(shù)據(jù)中相應(yīng)的數(shù)據(jù)進(jìn)行修改,如此類推,從而恢復(fù)出最新版本的數(shù)據(jù)。步驟604:目標(biāo)節(jié)點(diǎn)增加相應(yīng)的數(shù)據(jù)版本號(hào),以描述自身和源節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)版本的區(qū)別;這里,修改數(shù)據(jù)版本號(hào)的操作還可以由源節(jié)點(diǎn)在步驟603中進(jìn)行,所述數(shù)據(jù)版本號(hào)的功能為區(qū)別目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn)的數(shù)據(jù)版本,以便后續(xù)進(jìn)行數(shù)據(jù)遷移時(shí)使用;在實(shí)際應(yīng)用時(shí),當(dāng)目標(biāo)節(jié)點(diǎn)或源節(jié)點(diǎn)的數(shù)據(jù)版本號(hào)過(guò)大時(shí),可以刪除部分舊數(shù)據(jù)版本的數(shù)據(jù),舉個(gè)例子來(lái)說(shuō),目標(biāo)節(jié)點(diǎn)或源節(jié)點(diǎn)當(dāng)前的數(shù)據(jù)版本號(hào)為3. 5,3. 5之前的數(shù)據(jù)版本號(hào)對(duì)應(yīng)的數(shù)據(jù)依然保存在硬盤當(dāng)中,此時(shí),可以將數(shù)據(jù)版本號(hào)為I之前的數(shù)據(jù)版本號(hào)對(duì)應(yīng)的所有數(shù)據(jù)均刪除,以節(jié)約硬盤。上述實(shí)施例中,描述的P2P網(wǎng)絡(luò)中數(shù)據(jù)組織方式均是將數(shù)據(jù)按資源組織,每個(gè)資源擁有自己唯一的資源標(biāo)識(shí),同類資源按照特定的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)相關(guān)數(shù)據(jù),特定的數(shù)據(jù)可通過(guò)資源標(biāo)識(shí)索引來(lái)進(jìn)行查找,每個(gè)節(jié)點(diǎn)可負(fù)責(zé)一部分資源標(biāo)識(shí)空間段,即負(fù)責(zé)該資源標(biāo)識(shí)段內(nèi)對(duì)應(yīng)的資源數(shù)據(jù)的存儲(chǔ)和處理,所述處理包括讀取數(shù)據(jù)、更新數(shù)據(jù)、以及刪除數(shù)據(jù)等操作。這里,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解本發(fā)明可以很容易地?cái)U(kuò)展到其它數(shù)據(jù)結(jié)構(gòu)組織方式。本發(fā)明提供的方案,尤其適用于節(jié)點(diǎn)需要進(jìn)行定時(shí)的負(fù)載調(diào)整的情況,比如每日定期進(jìn)行負(fù)載調(diào)整。在這種情況下,P2P網(wǎng)絡(luò)會(huì)定期如在每日清晨喚醒和加入一部分節(jié)點(diǎn)以應(yīng)付可預(yù)見的大量業(yè)務(wù),并定 期如在每日夜晚讓部分節(jié)點(diǎn)退出以節(jié)約能源。在這種情況下,通過(guò)合理配置節(jié)點(diǎn)ID,數(shù)據(jù)遷移中的數(shù)據(jù)目標(biāo)節(jié)點(diǎn)可重復(fù)負(fù)責(zé)某些數(shù)據(jù)段,只要在每次遷移時(shí)更新到最新的數(shù)據(jù)版本即可,如此,本地存儲(chǔ)的數(shù)據(jù)可以得到較好地利用。在實(shí)際應(yīng)用時(shí),配置服務(wù)器還可以完成節(jié)點(diǎn)鑒權(quán)、管理等多項(xiàng)功能。在部分情況下,配置服務(wù)器的功能可以分布式部署,例如在某些P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)可以自行選擇分配的節(jié)點(diǎn)ID和負(fù)責(zé)的數(shù)據(jù)段位置,此時(shí),配置服務(wù)器的功能即由節(jié)點(diǎn)完成,因此,采用這種方式實(shí)現(xiàn)遷移節(jié)點(diǎn)的選擇功能時(shí),也可以采用本發(fā)明的基本思想?;谏鲜龇椒?,本發(fā)明還提供了一種P2P網(wǎng)絡(luò)中數(shù)據(jù)遷移的系統(tǒng),如圖7所示,該系統(tǒng)包括配置服務(wù)器71、第一節(jié)點(diǎn)72、以及第二節(jié)點(diǎn)73 ;其中,配置服務(wù)器71,用于需要進(jìn)行數(shù)據(jù)遷移時(shí),依據(jù)第一節(jié)點(diǎn)72或第二節(jié)點(diǎn)73的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)點(diǎn);第一節(jié)點(diǎn)72,用于將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與第二節(jié)點(diǎn)73對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn)73 ;第二節(jié)點(diǎn)73,用于收到第一節(jié)點(diǎn)72發(fā)送的增量數(shù)據(jù)后,根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。這里,需要說(shuō)明的是所述第一節(jié)點(diǎn)72為向所述配置服務(wù)器71發(fā)送退出請(qǐng)求或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn);所述第二節(jié)點(diǎn)73為向所述配置服務(wù)器71發(fā)送加入請(qǐng)求的節(jié)點(diǎn);具體地,所述第一節(jié)點(diǎn)72可以是節(jié)點(diǎn)加入流程中的接納節(jié)點(diǎn)、或節(jié)點(diǎn)退出流程中的退出節(jié)點(diǎn)、或節(jié)點(diǎn)過(guò)載流程中的過(guò)載節(jié)點(diǎn),相應(yīng)的,所述第二節(jié)點(diǎn)可以是節(jié)點(diǎn)加入流程中的加入節(jié)點(diǎn)、或節(jié)點(diǎn)退出流程中的新負(fù)責(zé)節(jié)點(diǎn)、或節(jié)點(diǎn)過(guò)載流程中的輕載節(jié)點(diǎn);當(dāng)所述第二節(jié)點(diǎn)73向配置服務(wù)器71發(fā)送加入請(qǐng)求時(shí),配置服務(wù)器71為所述第二節(jié)點(diǎn)73分配的數(shù)據(jù)源節(jié)點(diǎn)為所述第一節(jié)點(diǎn)72 ;當(dāng)所述第一節(jié)點(diǎn)72向配置服務(wù)器71發(fā)送退出請(qǐng)求或負(fù)載遷移請(qǐng)求時(shí),配置服務(wù)器71為第一節(jié)點(diǎn)72分配的數(shù)據(jù)目標(biāo)節(jié)點(diǎn)為所述第二節(jié)點(diǎn)73 ;所述第二節(jié)點(diǎn)73的個(gè)數(shù)為一個(gè)以上。在依據(jù)第一節(jié)點(diǎn)72或第二節(jié)點(diǎn)73的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)點(diǎn)時(shí),所述配置服務(wù)器71,進(jìn)一步用于依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置等信息,最終確定為所述節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。所述第一節(jié)點(diǎn)72,還用于將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn)73后,保存當(dāng)前版本數(shù)據(jù)。所述第二節(jié)點(diǎn)73,具體用于采用增量數(shù)據(jù)中的數(shù)據(jù)內(nèi)容,修改自身存儲(chǔ)的數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù),得到最新版本的數(shù)據(jù)。
這里,本發(fā)明的所述系統(tǒng)中的配置服務(wù)器、及第一節(jié)點(diǎn)的具體處理過(guò)程已在上文中詳述,不再贅述。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種對(duì)等網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法,其特征在于,該方法包括 需要進(jìn)行數(shù)據(jù)遷移時(shí),配置服務(wù)器依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn); 數(shù)據(jù)源節(jié)點(diǎn)將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn); 數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn)后,該方法進(jìn)一步包括 數(shù)據(jù)源節(jié)點(diǎn)保存自身當(dāng)前版本的遷移數(shù)據(jù)。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,需要進(jìn)行數(shù)據(jù)遷移的時(shí)機(jī)為有節(jié)點(diǎn)加入對(duì)等網(wǎng)絡(luò)時(shí),或者,有節(jié)點(diǎn)退出對(duì)等網(wǎng)絡(luò)時(shí),或者,對(duì)等網(wǎng)絡(luò)中有節(jié)點(diǎn)負(fù)載超載,需要均衡負(fù)載時(shí),或者,由于管理原因需要均衡負(fù)載時(shí),或者,需要增加節(jié)點(diǎn)作為對(duì)等網(wǎng)絡(luò)中的節(jié)點(diǎn)的數(shù)據(jù)的備份時(shí)。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述數(shù)據(jù)版本信息為數(shù)據(jù)版本號(hào)、和/或?yàn)樾薷臅r(shí)間戳、和/或?yàn)閿?shù)據(jù)的摘要信息。
5.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù),為 數(shù)據(jù)目標(biāo)節(jié)點(diǎn)采用增量數(shù)據(jù)中的數(shù)據(jù)內(nèi)容,修改自身存儲(chǔ)的數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,得到最新版本的數(shù)據(jù)。
6.根據(jù)權(quán)利要求I、2或3所述的方法,其特征在于,所述為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)目標(biāo)節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上。
7.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,在依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)時(shí),配置服務(wù)器進(jìn)一步依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置,最終確定為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。
8.一種對(duì)等網(wǎng)絡(luò)中數(shù)據(jù)遷移的系統(tǒng),其特征在于,該系統(tǒng)包括配置服務(wù)器、第一節(jié)點(diǎn)、以及第二節(jié)點(diǎn);其中, 配置服務(wù)器,用于需要進(jìn)行數(shù)據(jù)遷移時(shí),依據(jù)第一節(jié)點(diǎn)或第二節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)點(diǎn); 第一節(jié)點(diǎn),用于將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與第二節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn); 第二節(jié)點(diǎn),用于收到第一節(jié)點(diǎn)發(fā)送的增量數(shù)據(jù)后,根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述第二節(jié)點(diǎn)的個(gè)數(shù)為一個(gè)以上。
10.根據(jù)權(quán)利要求8或9所述的系統(tǒng),其特征在于,所述第一節(jié)點(diǎn),還用于將增量數(shù)據(jù)發(fā)送給第二節(jié)點(diǎn)后,保存當(dāng)前版本數(shù)據(jù)。
11.根據(jù)權(quán)利要求8或9所述的系統(tǒng),其特征在于,在依據(jù)第一節(jié)點(diǎn)或第二節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述節(jié)點(diǎn)分配數(shù)據(jù)目標(biāo)節(jié)點(diǎn)或數(shù)據(jù)源節(jié)點(diǎn)時(shí),所述配置服務(wù)器,進(jìn)一步用于依據(jù)當(dāng)前網(wǎng)絡(luò)的負(fù)載情況、和/或當(dāng)前其它活躍的節(jié)點(diǎn)的地理位置,最終確定為所述節(jié)點(diǎn)分配的數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn)。全文摘要
本發(fā)明公開了一種對(duì)等網(wǎng)絡(luò)中數(shù)據(jù)遷移的方法及系統(tǒng),包括需要進(jìn)行數(shù)據(jù)遷移時(shí),配置服務(wù)器依據(jù)發(fā)送加入請(qǐng)求、或退出請(qǐng)求、或負(fù)載遷移請(qǐng)求的節(jié)點(diǎn)的數(shù)據(jù)版本信息及當(dāng)前網(wǎng)絡(luò)中其它活躍節(jié)點(diǎn)的數(shù)據(jù)版本信息為所述發(fā)送請(qǐng)求的節(jié)點(diǎn)分配數(shù)據(jù)源節(jié)點(diǎn)或數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)源節(jié)點(diǎn)將遷移數(shù)據(jù)當(dāng)前的數(shù)據(jù)版本信息與數(shù)據(jù)目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)版本信息進(jìn)行比較,確定增量數(shù)據(jù),并將增量數(shù)據(jù)發(fā)送給數(shù)據(jù)目標(biāo)節(jié)點(diǎn);數(shù)據(jù)目標(biāo)節(jié)點(diǎn)根據(jù)增量數(shù)據(jù)及自身存儲(chǔ)的數(shù)據(jù),恢復(fù)出最新版本的數(shù)據(jù)。采用本發(fā)明,能大大減少對(duì)等網(wǎng)絡(luò)中數(shù)據(jù)遷移的數(shù)據(jù)量,從而保證網(wǎng)絡(luò)的正常運(yùn)行。
文檔編號(hào)H04L29/08GK102739703SQ20111008425
公開日2012年10月17日 申請(qǐng)日期2011年4月2日 優(yōu)先權(quán)日2011年4月2日
發(fā)明者王煒, 胡學(xué)川 申請(qǐng)人:中興通訊股份有限公司