專利名稱:一種p2p系統(tǒng)中的節(jié)點組織方法
技術領域:
本發(fā)明涉及計算機網(wǎng)絡領域,更具體地,本發(fā)明涉及一種P2P系統(tǒng)中的節(jié)點組 織方法。
背景技術:
近年來,隨著互聯(lián)網(wǎng)的迅猛發(fā)展和普及,對等網(wǎng)絡(Peer-to-Peer,簡稱P2P)技 術迅速成為計算機界關注的熱門話題,財富雜志更將P2P列為影響Internet未來的四 項科技之一。
與傳統(tǒng)的分布式系統(tǒng)相比,P2P技術具有無可比擬的優(yōu)勢。在P2P系統(tǒng)中,每 個節(jié)點的地位都是對等的,既是資源獲取者,也是資源提供者。通過充分利用用戶 節(jié)點提供的資源,P2P技術在可擴展性、容錯性、資源利用率等方面都具有巨大的優(yōu) 勢。同時,P2P技術也具有廣闊的應用前景,資源共享、分布式計算、協(xié)同工作、即 時通信等多個領域的P2P應用層出不窮。
在P2P系統(tǒng)中,所有節(jié)點以某種方法組織起來,共同構建了基于應用層的覆蓋 網(wǎng)。目前常見的節(jié)點組織方法可以分為兩類基于索引服務器的方式與基于DHT(分 布式哈希表)的方式。
在基于索引服務器的方式中,索引服務器保存了系統(tǒng)中所有節(jié)點的信息。當節(jié) 點加入時,索引服務器按照某種策略選擇并返回一些節(jié)點作為新加入節(jié)點的合作節(jié) 點。在系統(tǒng)規(guī)模較小的情況下,索引服務器能夠迅速地響應節(jié)點的請求;但是隨著 系統(tǒng)規(guī)模的擴大,索引服務器逐漸成為系統(tǒng)的瓶頸所在,響應時間變得無法忍受。 而且這種方式也存在著單點故障的缺陷如果索引服務器發(fā)生故障,將導致整個系 統(tǒng)無法正常工作。
在基于DHT的方式中,不需要特殊的服務器,每個節(jié)點按照一定規(guī)則存儲部分 節(jié)點的路由信息,從而能夠保證路由到系統(tǒng)中任意一個節(jié)點。基于DHT的方式能夠 避免單點故障的缺陷,在每個節(jié)點之間實現(xiàn)負載均衡;但是,無論是新節(jié)點加入系 統(tǒng),還是路由到指定的目標節(jié)點,平均需要logiV/2跳,而在應用層覆蓋網(wǎng)中,通過 邏輯鏈路相連的節(jié)點往往在物理網(wǎng)絡上相隔甚遠,這使得基于DHT的方式具有無法接受的延時。
發(fā)明內(nèi)容
為克服現(xiàn)有P2P系統(tǒng)中節(jié)點組織方法的種種缺陷,本發(fā)明提供一種結合索引服 務器與DHT技術的P2P系統(tǒng)中的節(jié)點組織方法。在該方法中,索引服務器有選擇地 保存系統(tǒng)中部分節(jié)點的信息,當新節(jié)點加入時,通過索引服務器實現(xiàn)并發(fā)加入,從 而提高節(jié)點的加入速度;路由到目標節(jié)點時,通過索引服務器實現(xiàn)就近路由,從而 提高節(jié)點的路由速度。而且,即使索引服務器發(fā)生故障,節(jié)點仍然能夠通過DHT的 方式找到合適的合作節(jié)點以獲取媒體數(shù)據(jù),從而可避免單點故障,提高系統(tǒng)的健壯 性。
為實現(xiàn)上述目的,本發(fā)明提出的P2P系統(tǒng)中的節(jié)點組織方法,包括以下步驟
1) 設定節(jié)點標識符
采用哈希算法,如SHA-1、 MD4、 MD5等,對節(jié)點的IP地址進行操作,將節(jié) 點映射到m位(m為預先設定的常數(shù),取值為64 160)的二進制標識符空間,從 而為每個節(jié)點分配唯一的附位的二進制標識符作為其節(jié)點標識符。
2) 節(jié)點間距離的計算
采用數(shù)學上的異或運算來計算系統(tǒng)中的節(jié)點間距離,對于節(jié)點p,, p2,其距離 Wa,a)-a十a(chǎn),即對應的二進制位相同時結果為O,不同時結果為l。
3) 節(jié)點的并發(fā)加入
a) 當節(jié)點加入系統(tǒng)時,首先向索引服務器發(fā)送"注冊"請求。收到"注冊"請 求后,索引服務器以一定概率(如0.05 0.1中的某個值)決定是否保存該節(jié)點的索 引信息,如果是,則保存其索引信息;
b) 接著,索引服務器從保存的索引信息中隨機選擇并返回若干個節(jié)點的索引信 息,作為新加入節(jié)點的初始鄰居節(jié)點,幫助其加入整個系統(tǒng);
c) 收到索引服務器返回的索引信息后,節(jié)點將這些初始鄰居節(jié)點加入路由表中, 并分別以這些節(jié)點為路由的起始節(jié)點,以本節(jié)點的標識符為目標,同時執(zhí)行多個DHT 協(xié)議提供的路由操作。在路由過程中,節(jié)點將按照由遠到近的順序收集到系統(tǒng)中許 多節(jié)點的信息,并將根據(jù)這些信息來填充與完善自己的路由表;與此同時,節(jié)點也 將自己的信息發(fā)布到路由路徑中的其它節(jié)點上,從而完成新節(jié)點的加入過程。
4) 節(jié)點的就近路由
a)當節(jié)點路由到目標節(jié)點時,首先向索引服務器發(fā)送"査詢"請求,b) 如果索引服務器中存放了目標節(jié)點的索引信息,則立即返回索引信息,路由 過程結束;否則,索引服務器從所保存的索引信息中選擇并返回與目標節(jié)點距離最 近的節(jié)點(設為節(jié)點a)的信息;
c) 路由請求發(fā)起節(jié)點以節(jié)點a為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的路由操 作,從而路由到最終的目標節(jié)點;
d) 如果索引服務器發(fā)生故障,節(jié)點路由仍然能夠順利進行節(jié)點將從路由表中 選擇與目標節(jié)點距離最近的節(jié)點,并以其為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的 路由操作,從而路由到最終的目標節(jié)點。
本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法的優(yōu)點在于通過本發(fā)明的應用,不但能 夠避免P2P系統(tǒng)中的單點故障,從而可提高系統(tǒng)的健壯性,而且通過借助索引服務 器的査詢功能,實現(xiàn)并發(fā)加入以提高節(jié)點的加入速度,實現(xiàn)就近路由以提高節(jié)點的 路由速度。
圖1為本發(fā)明的采用結合索引服務器與DHT技術的節(jié)點組織方法的P2P系統(tǒng)的 架構。
圖2為本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法中節(jié)點并發(fā)加入的流程圖。 圖3為本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法中節(jié)點就近路由的流程圖。 圖4為本發(fā)明的采用結合索引服務器與DHT技術的節(jié)點組織方法的P2P系統(tǒng)的 一具體應用場景。
具體實施例方式
下面,參照附圖對本發(fā)明提出的P2P系統(tǒng)中結合索引服務器與DHT技術的節(jié)點 組織方法進行詳細說明。
圖1為采用結合索引服務器與DHT技術的節(jié)點組織方法的P2P系統(tǒng)的架構。如 圖1所示,在系統(tǒng)中,所有節(jié)點以環(huán)狀的方式構成了基于DHT方式的應用層覆蓋網(wǎng), 系統(tǒng)中仍然存在中心式的索引服務器,并且索引服務器有選擇地保存了系統(tǒng)中部分 節(jié)點的索引信息。圖中實線箭頭表示系統(tǒng)中的數(shù)據(jù)流,虛線箭頭表示系統(tǒng)中的信令 流。在該系統(tǒng)中,索引服務器的功能描述如下有選擇地保存了系統(tǒng)中部分節(jié)點的 信息,并響應節(jié)點發(fā)送的"注冊"請求與"查詢"請求。本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法,結合索引服務器與DHT技術,當新節(jié)點 加入時,通過索引服務器實現(xiàn)并發(fā)加入,提高節(jié)點的加入速度;路由到目標節(jié)點時, 通過索引服務器實現(xiàn)就近路由,提高節(jié)點的路由速度。而且,即使索引服務器發(fā)生 故障,節(jié)點仍然能夠通過DHT的方式找到合適的合作節(jié)點以獲取媒體數(shù)據(jù),可避免 單點故障,提高系統(tǒng)的健壯性。具體包括如下步驟
1) 設定節(jié)點標識符
采用哈希算法,如SHA-1、 MD4、 MD5等,對節(jié)點的IP地址進行操作,將節(jié) 點映射到m位(m為預先設定的常數(shù),取值為64 160)的二進制標識符空間,從 而為每個節(jié)點分配唯一的/n位的二進制標識符作為其節(jié)點標識符。
這里,可以通過對節(jié)點的IP地址執(zhí)行SHA-1操作從而生成128位節(jié)點標識符。
2) 節(jié)點間距離的計算
采用數(shù)學上的異或運算來計算系統(tǒng)中的節(jié)點間距離,定義節(jié)點A, A的距離 "(A,A)-A十A,即對應的二進制位相同時結果為O,不同時結果為l。
3) 節(jié)點的并發(fā)加入
圖2是本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法中節(jié)點并發(fā)加入的流程圖。如圖2 所示,當新節(jié)點加入時,通過索引服務器實現(xiàn)并發(fā)加入,具體包括以下步驟
a) 當節(jié)點p加入系統(tǒng)時,首先向索引服務器發(fā)送"注冊"請求,索引服務器收 到"注冊"請求后,以一定概率(如0.05 (U中的某個值)決定是否保存該節(jié)點的 索引信息,如果是,則保存其索引信息;
b) 接著,索引服務器從保存的索引信息中隨機選擇并返回若干個節(jié)點的索引信 息,作為節(jié)點p的初始鄰居節(jié)點,幫助其加入整個系統(tǒng);c)收到索引服務器返回的 初始鄰居節(jié)點列表后,節(jié)點p將這些節(jié)點加入路由表中,并分別以這些節(jié)點為路由 的起始節(jié)點,以本節(jié)點的標識符為目標,同時執(zhí)行多個DHT協(xié)議提供的路由操作。 在路由過程中,節(jié)點p將按照由遠到近的順序收集到系統(tǒng)中許多節(jié)點的信息,并將 根據(jù)這些信息來填充與完善自己的路由表;與此同時,節(jié)點/ 也將自己的信息發(fā)布 到路由路徑中的其它節(jié)點上,從而完成新節(jié)點的加入過程。
4) 節(jié)點的就近路由
圖3是本發(fā)明的P2P系統(tǒng)中的節(jié)點組織方法中節(jié)點就近路由的流程圖。如圖3 所示,當節(jié)點路由到目標節(jié)點時,通過索引服務器實現(xiàn)就近路由,具體包括以下步 驟
a)當節(jié)點p路由到目標節(jié)點時,首先向索引服務器發(fā)送"査詢"請求;b) 如果索引服務器中存放了目標節(jié)點的索引信息,則立即返回索引信息,路由 過程結束;否則,索引服務器從所保存的索引信息中選擇并返回與目標節(jié)點距離最 近的節(jié)點(設為節(jié)點a)的信息;
c) 路由請求發(fā)起節(jié)點;;以節(jié)點a為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的路由 操作,從而路由到最終的目標節(jié)點;
d) 如果索引服務器發(fā)生故障,節(jié)點路由仍然能夠順利進行節(jié)點p從路由表中 選擇與目標節(jié)點距離最近的節(jié)點,并以其為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的 路由操作,從而路由到最終的目標節(jié)點。
實施例
下面通過一個具體例子,對本發(fā)明提供的P2P系統(tǒng)中的節(jié)點組織方法的步驟流 程作進一步闡述。
圖3為本發(fā)明的采用結合索引服務器與DHT技術的節(jié)點組織方法的P2P系統(tǒng)的 一具體應用場景。如圖3所示,本發(fā)明提供的方法的一個具體應用場景如下在本 場景中具有下列設備索引服務器、節(jié)點1 15。其中,索引服務器中保存了節(jié)點1,
鞞,2'雀00001 砂.2..茗0000
5, 9, 13的索引信息,而節(jié)點1-15的標識符分別為i地 、124位 、
卿.2'.茗00011 柳.2..求00100 卿.2..求00101 卿.?.求OOllO 鄉(xiāng).nOOlll
124位 、 124位 、 124位 、 124位 、 124位 、
柳'2"求01000 $,2"艱01001 $,2"求01010 ^'2"存01011 $,2"求0110()柳'2"艱01101
124位 、 124位 、 124位 、 124位 、 124位 、 124位 、
124位 、124位 。
假設此時節(jié)點12發(fā)起請求,希望路由到節(jié)點l。下面描述路由的過程步驟
(1) 節(jié)點12向索引服務器發(fā)送"查詢"請求,査詢節(jié)點1的索引信息;
(2) 索引服務器未保存節(jié)點l的索引信息,因此,選擇并返回與節(jié)點l距離最 近的節(jié)點,即節(jié)點2的索引信息,兩者距離為l;
(3) 節(jié)點12以節(jié)點2為路由的起始節(jié)點,以節(jié)點1的標識符,即124位 為目標,執(zhí)行DHT協(xié)議提供的路由操作,從而路由至節(jié)點l。
綜上所述,在P2P系統(tǒng)中結合索引服務器與DHT技術進行節(jié)點組織,不但能夠避免P2P系統(tǒng)中的單點故障,提高系統(tǒng)的健壯性,而且通過借助索引服務器的查詢 功能,實現(xiàn)并發(fā)加入以提高節(jié)點的加入速度,實現(xiàn)就近路由以提高節(jié)點的路由速度。
最后應說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非對其限制,并 且在應用上可以延伸到其他的修改、變化、應用和實施例,同時認為所有這樣的修 改、變化、應用、實施例都在本發(fā)明的精神和范圍內(nèi)。
權利要求
1、一種P2P系統(tǒng)中的節(jié)點組織方法,包括以下步驟1)設定節(jié)點標識符采用哈希算法對節(jié)點的IP地址進行操作,將節(jié)點映射到m位的二進制標識符空間,從而為每個節(jié)點分配唯一的m位的二進制標識符作為其節(jié)點標識符,其中,m為預先設定的常數(shù),取值為64~160;2)節(jié)點間距離的計算采用數(shù)學上的異或運算來計算系統(tǒng)中的節(jié)點間距離,對于節(jié)點p1,p2,其距離<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><mi>d</mi><mrow> <mo>(</mo> <msub><mi>p</mi><mn>1</mn> </msub> <mo>,</mo> <msub><mi>p</mi><mn>2</mn> </msub> <mo>)</mo></mrow><mo>=</mo><msub> <mi>p</mi> <mn>1</mn></msub><mo>⊕</mo><msub> <mi>p</mi> <mn>2</mn></msub> </mrow>]]></math> id="icf0001" file="A2009100835570002C1.tif" wi="32" he="6" top= "81" left = "23" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>,對應的二進制位相同時結果為0,不同時結果為1;3)節(jié)點的并發(fā)加入當新節(jié)點加入時,通過索引服務器實現(xiàn)并發(fā)加入,a)當節(jié)點加入系統(tǒng)時,首先向索引服務器發(fā)送注冊請求,收到注冊請求后,索引服務器根據(jù)某種策略,決定是否保存該節(jié)點的索引信息,如果判斷結果為是,則保存其索引信息;b)接著,索引服務器從保存的索引信息中隨機選擇并返回若干個節(jié)點的索引信息,作為新加入節(jié)點的初始鄰居節(jié)點,幫助其加入整個系統(tǒng);c)收到索引服務器返回的索引信息后,節(jié)點將這些初始鄰居節(jié)點加入路由表中,并分別以這些節(jié)點為路由的起始節(jié)點,以本節(jié)點的標識符為目標,同時執(zhí)行多個DHT協(xié)議提供的路由操作,在路由過程中,節(jié)點將按照由遠到近的順序收集到系統(tǒng)中許多節(jié)點的信息,并將根據(jù)這些信息來填充與完善自己的路由表;與此同時,節(jié)點也將自己的信息發(fā)布到路由路徑中的其它節(jié)點上,從而完成新節(jié)點的加入過程;4)節(jié)點的就近路由當節(jié)點路由到目標節(jié)點時,通過索引服務器實現(xiàn)就近路由,a)當節(jié)點路由到目標節(jié)點時,首先向索引服務器發(fā)送查詢請求;b)如果索引服務器中存放了目標節(jié)點的索引信息,則立即返回索引信息,路由過程結束,否則,索引服務器從所保存的索引信息中選擇并返回與目標節(jié)點距離最近的節(jié)點a的信息;c)路由請求發(fā)起節(jié)點以節(jié)點a為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的路由操作,從而路由到最終的目標節(jié)點;d)如果索引服務器發(fā)生故障,節(jié)點將從路由表中選擇與目標節(jié)點距離最近的節(jié)點,并以其為路由的起始節(jié)點,執(zhí)行DHT協(xié)議提供的路由操作,從而路由到最終的目標節(jié)點。
2、 如權利要求1所述的P2P系統(tǒng)中的節(jié)點組織方法,其特征在于,所述步驟1) 中,對節(jié)點的IP地址進行操作時所采用的哈希算法包括SHA-1、 MD4以及MD5。
3、如權利要求1所述的P2P系統(tǒng)中的節(jié)點組織方法,其特征在于,所述步驟3) 中,所述索引服務器以0.05 0.1范圍內(nèi)的任意一個概率保存節(jié)點的索引信息。
全文摘要
本發(fā)明提供一種P2P系統(tǒng)中的節(jié)點組織方法。該方法包括1)采用哈希算法對節(jié)點的IP地址進行操作,設定節(jié)點標識符;2)采用數(shù)學上的異或運算來計算節(jié)點間的距離;3)通過索引服務器實現(xiàn)新節(jié)點加入時的并發(fā)加入;4)通過索引服務器實現(xiàn)節(jié)點路由到目標節(jié)點時的就近路由。該方法結合索引服務器與DHT技術,索引服務器保存系統(tǒng)中部分節(jié)點的信息,當新節(jié)點加入時,通過索引服務器實現(xiàn)并發(fā)加入,從而提高節(jié)點的加入速度;路由到目標節(jié)點時,通過索引服務器實現(xiàn)就近路由,從而提高節(jié)點的路由速度。而且,即使索引服務器發(fā)生故障,節(jié)點仍然能夠通過DHT的方式找到合適的合作節(jié)點以獲取媒體數(shù)據(jù),從而可避免單點故障,提高系統(tǒng)的健壯性。
文檔編號H04L12/56GK101645831SQ20091008355
公開日2010年2月10日 申請日期2009年5月8日 優(yōu)先權日2009年5月8日
發(fā)明者浩 任, 馮偵探, 李曉林, 王勁林, 杭 蘇, 蘇少煒, 趙永勝, 魯逸峰 申請人:中國科學院聲學研究所