專利名稱:基于de Bruijn圖的大規(guī)模網(wǎng)絡(luò)資源搜索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)中的資源搜索方法,尤其是一種基于de Bruijn圖的資源 搜索方法。
背景技術(shù):
P2P(peer-to-peer)網(wǎng)絡(luò)是近年來(lái)興起的一種網(wǎng)絡(luò)。在P2P網(wǎng)絡(luò)中,各節(jié)點(diǎn)在邏 輯上是對(duì)等的,沒(méi)有客戶端和服務(wù)器之分,各個(gè)節(jié)點(diǎn)之間可以直接進(jìn)行通信和交互。目前, P2P網(wǎng)絡(luò)在科學(xué)研究、電子商務(wù)、電子政務(wù)和軍事應(yīng)用等重要領(lǐng)域都有著廣闊的應(yīng)用。為了 實(shí)現(xiàn)資源的有效共享和綜合利用,P2P網(wǎng)絡(luò)用戶需要對(duì)符合要求的資源進(jìn)行搜索,資源搜索 是P2P網(wǎng)絡(luò)的關(guān)鍵技術(shù)之一。根據(jù)資源組織模式,P2P網(wǎng)絡(luò)通常可分為兩種結(jié)構(gòu)化(Structured)P2P網(wǎng)絡(luò)和 非結(jié)構(gòu)化(Unstructured)P2P網(wǎng)絡(luò)。結(jié)構(gòu)化P2P網(wǎng)絡(luò)由于具有更加可靠的性能,目前在 Internet上得到了大量應(yīng)用。結(jié)構(gòu)化P2P網(wǎng)絡(luò)中的資源搜索問(wèn)題可以抽象為如何在大規(guī)模網(wǎng)絡(luò)上實(shí)現(xiàn)資源對(duì) 象的高效搜索,并且適應(yīng)結(jié)點(diǎn)的動(dòng)態(tài)變化。目前,結(jié)構(gòu)化P2P網(wǎng)絡(luò)中的資源搜索方法主要包括Chord、CAN、Pastry、Tapestry 等。在上述方法中,每個(gè)結(jié)點(diǎn)都有唯一的標(biāo)識(shí),并根據(jù)一定算法在結(jié)點(diǎn)間構(gòu)建網(wǎng)絡(luò)拓?fù)?。?個(gè)結(jié)點(diǎn)都維護(hù)一個(gè)“轉(zhuǎn)發(fā)表”,保存相關(guān)鄰居結(jié)點(diǎn)的信息。每個(gè)資源對(duì)象根據(jù)其關(guān)鍵字,通 過(guò)哈希函數(shù)得到資源對(duì)象標(biāo)識(shí)。資源對(duì)象的標(biāo)識(shí)和結(jié)點(diǎn)標(biāo)識(shí)通常屬于相同或相似的名字空 間,各結(jié)點(diǎn)都負(fù)責(zé)資源對(duì)象標(biāo)識(shí)空間的一部分。當(dāng)結(jié)點(diǎn)加入或退出時(shí),各相關(guān)結(jié)點(diǎn)需要修改 轉(zhuǎn)發(fā)表,并動(dòng)態(tài)調(diào)整其負(fù)責(zé)的標(biāo)識(shí)空間范圍,以維護(hù)分布哈希表的一致性。在資源搜索時(shí), 每個(gè)結(jié)點(diǎn)根據(jù)其“轉(zhuǎn)發(fā)表”將資源搜索消息轉(zhuǎn)發(fā)到相應(yīng)的鄰居結(jié)點(diǎn)上,直到最終到達(dá)目標(biāo)結(jié) 點(diǎn)完成搜索。評(píng)價(jià)大規(guī)模網(wǎng)絡(luò)資源搜索性能的重要參數(shù)包括結(jié)點(diǎn)度數(shù)和搜索延遲等。結(jié)點(diǎn) 度數(shù)是指各結(jié)點(diǎn)上維護(hù)的“路由表”的大??;搜索延遲是指一次資源搜索請(qǐng)求在系統(tǒng)中轉(zhuǎn)發(fā) 的邏輯跳步數(shù)。評(píng)價(jià)網(wǎng)絡(luò)搜索方法的標(biāo)準(zhǔn)主要包括結(jié)點(diǎn)度數(shù)和搜索延遲,高效的搜索方法 一方面應(yīng)具有較小的節(jié)點(diǎn)度數(shù),另一方面應(yīng)具有較低的搜索延遲。但是,現(xiàn)有搜索方法均沒(méi) 有實(shí)現(xiàn)結(jié)點(diǎn)度數(shù)和搜索延遲的較好的折中。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題針對(duì)大規(guī)模網(wǎng)絡(luò)搜索對(duì)結(jié)點(diǎn)度數(shù)小和搜索延遲低的 需求,提出一種基于de Bruijn圖的大規(guī)模網(wǎng)絡(luò)資源搜索方法,該方法既能夠具有較小的節(jié) 點(diǎn)度數(shù)(即較小的路由表),又具有較低的搜索延遲。為了解決上述問(wèn)題,本發(fā)明提出的技術(shù)方案為第一步,為資源對(duì)象命名對(duì)每個(gè)結(jié)點(diǎn)和資源對(duì)象,采用文獻(xiàn)“RFC 1321 :The MD5Message-Digest Algorithm" (http://www. ietf. org/rfc/rfcl321. txt, April 1992) 所述的MD5 (消息摘要5)算法進(jìn)行命名。
第二步,采用de Bruijn圖實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)鋎e Bruijn圖B(d,D)是一種有向圖, 其中d為各結(jié)點(diǎn)標(biāo)識(shí)的基(即結(jié)點(diǎn)標(biāo)識(shí)中每個(gè)字符的取值范圍為0到d-1)、D為各結(jié)點(diǎn)標(biāo) 識(shí)的長(zhǎng)度。每個(gè)點(diǎn)u = U1U2. . . uD有d條出邊對(duì)任意a G {0,1,2, L,d-1},點(diǎn)u有一條 至Ll點(diǎn) v = u2u3…uD a 的出邊。文獻(xiàn)"A Combinatorial Problem" (Proc. of Koninkli jke NederlundseAcademic van ffatenschappen, vol. A49, pp. 758-764,1946) i正明,de Bruijn 圖的最大延遲為logdN,結(jié)點(diǎn)度數(shù)為2d。傳統(tǒng)的de Bruijn圖的結(jié)點(diǎn)數(shù)為dD,不能容納任意數(shù)目的結(jié)點(diǎn)。例如,取d = 2,則 結(jié)點(diǎn)數(shù)只能為21 = 2、22 = 4、23 = 8、……。因此,我們采用文獻(xiàn)“Factoring and Scaling KautzDigraphs,,(Research Report 94-15,LIP ENSL,69364 Lyon,France,Apr. 1994)提出 的一股化的de Bruijn圖定義令GB(d,n)代表基為d和結(jié)點(diǎn)個(gè)數(shù)為n的一股化de Bruijn 圖,那么其點(diǎn)集V(GB(d,n))和邊集E(GB(d,n))分別為V(GB(d,n)) = {0,l,L,n-l}, (1)E(GB(d,n)) = {[i,(dXi+a )modn] |0 彡 a 彡 d-1}, (2)每個(gè)結(jié)點(diǎn)標(biāo)識(shí)有其對(duì)應(yīng)的二進(jìn)制表示。由于B(d,D) ^GB(d, dD),因此一股化 deBruijn圖是傳統(tǒng)de Bruijn圖的超集(即任意傳統(tǒng)de Bruijn圖都可以表示為一個(gè)一股 化deBruijn圖),并且一股化de Bruijn圖可以容納任意數(shù)目的結(jié)點(diǎn)。一股化de Bruijn 圖的點(diǎn)對(duì)應(yīng)網(wǎng)絡(luò)拓?fù)渲械慕Y(jié)點(diǎn),邊對(duì)應(yīng)網(wǎng)絡(luò)拓?fù)渲械慕Y(jié)點(diǎn)間連接,即可得到相應(yīng)的網(wǎng)絡(luò)拓 撲。為了簡(jiǎn)化設(shè)計(jì),以二進(jìn)制數(shù)表示一股化de Bruijn圖中的點(diǎn)的標(biāo)識(shí)。第三步,采用“標(biāo)識(shí)分裂合并法”處理結(jié)點(diǎn)的加入退出事件當(dāng)新結(jié)點(diǎn)P加入時(shí),首 先選取網(wǎng)絡(luò)中滿足下列條件的任一結(jié)點(diǎn)v:v的結(jié)點(diǎn)標(biāo)識(shí)長(zhǎng)度不大于其任一鄰居結(jié)點(diǎn);然后 結(jié)點(diǎn)V進(jìn)行分裂,設(shè)結(jié)點(diǎn)V標(biāo)識(shí)為V1V2. . . vk,則結(jié)點(diǎn)P加入后,V1V2. . . vk分裂為V1V2. . . vk0 和viv2. . . vkl,結(jié)點(diǎn)V的標(biāo)識(shí)變?yōu)閂1V2. . . vk0,新結(jié)點(diǎn)P的標(biāo)識(shí)設(shè)置為V1V2. . . . vkl。進(jìn)而根 據(jù)一股化de Bruijn圖更新P、V以及相關(guān)結(jié)點(diǎn)的路由表,即各結(jié)點(diǎn)的連接關(guān)系滿足式(2)。 結(jié)點(diǎn)退出是加入的逆過(guò)程。當(dāng)檢測(cè)到結(jié)點(diǎn)Q離開(kāi)時(shí),首先選取網(wǎng)絡(luò)中某一對(duì)滿足下列條件 的兄弟結(jié)點(diǎn)Y = yiy2. . . yp^O和X,= yiy2. . . y^l :Y和Y’的標(biāo)識(shí)長(zhǎng)度都不小于其各自的鄰 居;然后將結(jié)點(diǎn)y的標(biāo)識(shí)改為Q的標(biāo)識(shí),r的標(biāo)識(shí)改為yiy2... Vl (即Y和r合并);并根 據(jù)一股化de Bruijn圖更新相關(guān)結(jié)點(diǎn)的路由表。第四步,采用“逐位匹配”方式實(shí)現(xiàn)資源的搜索資源搜索通過(guò)結(jié)點(diǎn)間轉(zhuǎn)發(fā)搜索消 息來(lái)完成。首先定義“前后匹配值”對(duì)任意兩個(gè)字符串u = UlU2...…和V = VlV2. . . Vn, U 和V的前后匹配值(記為QH(u,v) = x)是指u的后X位與V的前X位相同,例如100旦和 11010的前后匹配值為2。各結(jié)點(diǎn)在接收到資源對(duì)象搜索消息后,計(jì)算自己和目標(biāo)資源對(duì)象 的前后匹配值X,然后在路由表中選擇與目標(biāo)資源對(duì)象的前后匹配值為X+1的鄰居進(jìn)行轉(zhuǎn) 發(fā)。第五步,采用“前后匹配”規(guī)則判斷是否完成搜索結(jié)點(diǎn)u = U1U2. . . uffl擁有資源s =S1S2...、,當(dāng)且僅當(dāng)QH(u,s) = 11|,或者昍(11,8) = u|-rui = sr。當(dāng)滿足前后匹配 規(guī)則時(shí),說(shuō)明完成資源的搜索,結(jié)束,否則轉(zhuǎn)第四步繼續(xù)進(jìn)行搜索。采用本發(fā)明可以達(dá)到以下技術(shù)效果1.在本發(fā)明中,各結(jié)點(diǎn)根據(jù)它們的標(biāo)識(shí)通過(guò)模擬一股化de Bruijn圖組織鄰居 關(guān)系,由文獻(xiàn)‘‘Factoring and Scaling Kautz Digraphs,,(Research Report 94-15,LIPENSL,69364Lyon, France, Apr. 1994),可知該網(wǎng)絡(luò)拓?fù)涞钠骄葦?shù)為4,最大搜索延遲僅為 logdN。2.在形成良好拓?fù)浣Y(jié)構(gòu)的基礎(chǔ)上,本發(fā)明使用前后匹配的方式轉(zhuǎn)發(fā)資源搜索消 息,能夠?qū)①Y源搜索消息準(zhǔn)確地轉(zhuǎn)發(fā)到離目標(biāo)結(jié)點(diǎn)近的鄰居結(jié)點(diǎn),提高大規(guī)模網(wǎng)絡(luò)的資源 搜索效率。
圖1是本發(fā)明總體流程圖;圖 2 是 de Bruijn 圖示例;圖3是結(jié)點(diǎn)加入處理過(guò)程示例。
具體實(shí)施例方式本發(fā)明主要包括五步(如圖1所示)①為資源對(duì)象命名;②采用de Bruijn圖實(shí) 現(xiàn)網(wǎng)絡(luò)拓?fù)洌虎鄄捎谩皹?biāo)識(shí)分裂合并法”處理結(jié)點(diǎn)的加入退出事件;④采用“逐位匹配”方式 實(shí)現(xiàn)資源的搜索;⑤采用“前后匹配”規(guī)則判斷是否完成搜索。在第二步中,本發(fā)明采用de Bruijn圖實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)?,圖2給出了兩個(gè)de Bruijn 圖的示例,左圖為B(2,2),右圖為B(2,3)。在第三步中,本發(fā)明采用“標(biāo)識(shí)分裂合并法”處理結(jié)點(diǎn)的加入退出事件,圖3給出 了一個(gè)結(jié)點(diǎn)加入處理的示例。新節(jié)點(diǎn)加入前,在左圖中V = 000 ;新節(jié)點(diǎn)加入后,V的標(biāo)識(shí)變 為0000,P的標(biāo)識(shí)為0001,聯(lián)結(jié)關(guān)系如右圖所示V = 0000的出邊鄰居為001、010,入邊鄰 居為010,100 ;P = 0001的出邊鄰居為100、101,入邊鄰居為010、100。
權(quán)利要求
一種基于de Bruijn圖的大規(guī)模網(wǎng)絡(luò)資源搜索方法,其特征在于包括以下步驟第一步,為資源對(duì)象命名對(duì)每個(gè)結(jié)點(diǎn)和資源對(duì)象,采用MD5算法進(jìn)行命名;第二步,采用de Bruijn圖實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)洳捎靡还苫膁e Bruijn圖定義令GB(d,n)代表基為d和結(jié)點(diǎn)個(gè)數(shù)為n的一股化de Bruijn圖,那么其點(diǎn)集V(GB(d,n))和邊集E(GB(d,n))分別為V(GB(d,n))={0,1,L,n-1}, (1)E(GB(d,n))={[i,(d×i+α)mod n]|0≤α≤d-1}, (2)一股化de Bruijn圖的點(diǎn)對(duì)應(yīng)網(wǎng)絡(luò)拓?fù)渲械慕Y(jié)點(diǎn),邊對(duì)應(yīng)網(wǎng)絡(luò)拓?fù)渲械慕Y(jié)點(diǎn)間連接,即得到相應(yīng)的網(wǎng)絡(luò)拓?fù)?;第三步,采用“?biāo)識(shí)分裂合并法”處理結(jié)點(diǎn)的加入退出事件當(dāng)新結(jié)點(diǎn)P加入時(shí),首先選取網(wǎng)絡(luò)中滿足下列條件的任一結(jié)點(diǎn)VV的結(jié)點(diǎn)標(biāo)識(shí)長(zhǎng)度不大于其任一鄰居結(jié)點(diǎn);然后結(jié)點(diǎn)V進(jìn)行分裂,設(shè)結(jié)點(diǎn)V標(biāo)識(shí)為vlv2...vk,則結(jié)點(diǎn)P加入后,vlv2...vk分裂為v1v2...vk0和v1v2...vk1,結(jié)點(diǎn)V的標(biāo)識(shí)變?yōu)関1v2...vk0,新結(jié)點(diǎn)P的標(biāo)識(shí)設(shè)置為v1v2...vk1;進(jìn)而根據(jù)一股化de Bruijn圖更新P、V以及相關(guān)結(jié)點(diǎn)的路由表,即各結(jié)點(diǎn)的連接關(guān)系滿足式(2);當(dāng)檢測(cè)到結(jié)點(diǎn)Q離開(kāi)時(shí),首先選取網(wǎng)絡(luò)中某一對(duì)滿足下列條件的兄弟結(jié)點(diǎn)Y=y(tǒng)ly2...yp-10和Y’=y(tǒng)ly2...yp-11Y和Y’的標(biāo)識(shí)長(zhǎng)度都不小于其各自的鄰居;然后將結(jié)點(diǎn)Y的標(biāo)識(shí)改為Q的標(biāo)識(shí),Y’的標(biāo)識(shí)改為yly2...yp-1;并根據(jù)一股化de Bruijn圖更新相關(guān)結(jié)點(diǎn)的路由表;第四步,采用“逐位匹配”方式實(shí)現(xiàn)資源的搜索資源搜索通過(guò)結(jié)點(diǎn)間轉(zhuǎn)發(fā)搜索消息來(lái)完成;首先定義“前后匹配值”對(duì)任意兩個(gè)字符串u=u1u2...um和v=v1v2...vn,u和v的前后匹配值,記為QH(u,v)=x,是指u的后x位與v的前x位相同,各結(jié)點(diǎn)在接收到資源對(duì)象搜索消息后,計(jì)算自己和目標(biāo)資源對(duì)象的前后匹配值x,然后在路由表中選擇與目標(biāo)資源對(duì)象的前后匹配值為x+1的鄰居進(jìn)行轉(zhuǎn)發(fā);第五步,采用“前后匹配”規(guī)則判斷是否完成搜索結(jié)點(diǎn)u=u1u2...um擁有資源s=s1s2...sr,當(dāng)且僅當(dāng)QH(u,s)=|u|,或者QH(u,s)=|u|-1∧u1=sr,當(dāng)滿足前后匹配規(guī)則時(shí),說(shuō)明完成資源的搜索,結(jié)束;否則轉(zhuǎn)第四步繼續(xù)進(jìn)行搜索。
2.如權(quán)利要求1所述的基于deBruijn圖的大規(guī)模網(wǎng)絡(luò)資源搜索方法,其特征在于一 股化de Bruijn圖中的點(diǎn)的標(biāo)識(shí)以二進(jìn)制數(shù)表示。
全文摘要
本發(fā)明公開(kāi)了一種基于de Bruijn圖的大規(guī)模網(wǎng)絡(luò)資源搜索方法,要解決的技術(shù)問(wèn)題是解決大規(guī)模網(wǎng)絡(luò)搜索對(duì)結(jié)點(diǎn)度數(shù)小和搜索延遲低的需求。技術(shù)方案是先為資源對(duì)象命名;然后采用一般化的de Bruijn圖實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)洌唤又捎谩皹?biāo)識(shí)分裂合并法”處理結(jié)點(diǎn)的加入退出事件;采用“逐位匹配”方式實(shí)現(xiàn)資源的搜索并采用“前后匹配”規(guī)則判斷是否完成搜索。采用本發(fā)明網(wǎng)絡(luò)拓?fù)涞钠骄葦?shù)為4,最大搜索延遲僅為logdN,能大幅度提高大規(guī)模網(wǎng)絡(luò)的資源搜索效率。
文檔編號(hào)G06F17/30GK101854383SQ20101015837
公開(kāi)日2010年10月6日 申請(qǐng)日期2010年4月28日 優(yōu)先權(quán)日2010年4月28日
發(fā)明者盧錫城, 張一鳴, 李東升 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)