亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于p2p模式的psrd普適服務(wù)資源發(fā)現(xiàn)方法

文檔序號(hào):7757175閱讀:260來(lái)源:國(guó)知局

專(zhuān)利名稱(chēng)::一種基于p2p模式的psrd普適服務(wù)資源發(fā)現(xiàn)方法一種基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法
技術(shù)領(lǐng)域
:本發(fā)明屬于計(jì)算機(jī)應(yīng)用與移動(dòng)互聯(lián)網(wǎng)結(jié)合的
技術(shù)領(lǐng)域
。
背景技術(shù)
:隨著普適計(jì)算時(shí)代的到來(lái),各種支持普適計(jì)算環(huán)境的服務(wù)資源發(fā)現(xiàn)技術(shù)研究在如火如荼的進(jìn)行。服務(wù)發(fā)現(xiàn)技術(shù)的提出,是為了使網(wǎng)絡(luò)中的節(jié)點(diǎn)可以自動(dòng)搜索所需要的服務(wù)。這里的服務(wù)包括網(wǎng)絡(luò)中的任何節(jié)點(diǎn)所提供的能被其它節(jié)點(diǎn)利用的如掃描、打印、存儲(chǔ)和處理數(shù)據(jù)等任何邏輯功能。服務(wù)發(fā)現(xiàn)技術(shù)使得網(wǎng)絡(luò)節(jié)點(diǎn)能有效的從網(wǎng)絡(luò)中其它節(jié)點(diǎn)尋找和利用這些服務(wù)。隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,加入網(wǎng)絡(luò)的計(jì)算機(jī)迅速增多,而網(wǎng)絡(luò)上各節(jié)點(diǎn)對(duì)服務(wù)的需求和能提供的服務(wù)也越來(lái)越多樣化。所以,如何從眾多的網(wǎng)絡(luò)服務(wù)資源中高效率的尋找可用的服務(wù)是服務(wù)發(fā)現(xiàn)技術(shù)的關(guān)鍵。大部分的研究者主要的工作都集中在服務(wù)資源的搜索和存儲(chǔ)上,這使得對(duì)服務(wù)資源的發(fā)現(xiàn)算法的研究成為熱點(diǎn)??紤]到普適計(jì)算環(huán)境的高度自組織特性,P2P模式的服務(wù)資源查找算法為研究普適計(jì)算環(huán)境中的服務(wù)發(fā)現(xiàn)提供了優(yōu)秀的理論基礎(chǔ)。目前已有的服務(wù)資源發(fā)現(xiàn)算法主要有集中索引算法、結(jié)構(gòu)化算法、非結(jié)構(gòu)化算法以及混合發(fā)現(xiàn)算法。集中索引算法以Napster系統(tǒng)為代表,采用了集中式的目錄服務(wù)器機(jī)制,該算法存在單點(diǎn)失效的問(wèn)題,即目錄服務(wù)器將成為整個(gè)P2P系統(tǒng)的瓶頸,一旦中心服務(wù)器出現(xiàn)問(wèn)題,將導(dǎo)致整個(gè)系統(tǒng)崩潰。非結(jié)構(gòu)化算法代表系統(tǒng)為Gnutella,采用洪泛或類(lèi)洪泛算法,每一個(gè)用戶消息都將被廣播給與該用戶直接相連的若干其他用戶,這些用戶收到消息后,也同樣地將消息廣播給各自連接的用戶,依此類(lèi)推,直到請(qǐng)求被應(yīng)答或消息的TTL(TimeToLive)值減少為0,該算法可靠性差,對(duì)網(wǎng)絡(luò)的資源消耗大,安全性低,容易大量散播垃圾文件和病毒。結(jié)構(gòu)化算法典型代表包括Tapestry,Pastry,CAN和Chord等,它們都采用了一種分布式哈希表(DistributedHashingTable,DHT)的數(shù)據(jù)結(jié)構(gòu),并根據(jù)不同的算法決定網(wǎng)絡(luò)中節(jié)點(diǎn)維護(hù)哈希表的方式?;旌习l(fā)現(xiàn)算法則結(jié)合了集中索引和完全分布式兩種算法來(lái)構(gòu)建網(wǎng)絡(luò)拓?fù)洹Mㄟ^(guò)對(duì)國(guó)內(nèi)外的普適計(jì)算服務(wù)的研究現(xiàn)狀可以看出,現(xiàn)階段服務(wù)資源發(fā)現(xiàn)還有很多方面的不足。在集中索引算法中,采用的機(jī)制是基于目錄服務(wù)器的,各個(gè)結(jié)點(diǎn)的地址信息和所保存數(shù)據(jù)的信息集中存儲(chǔ)在目錄服務(wù)器中。這種算法存在單點(diǎn)失效的問(wèn)題,既目錄服務(wù)器將成為整個(gè)P2P系統(tǒng)的瓶頸,一旦目錄服務(wù)器出現(xiàn)問(wèn)題,將導(dǎo)致整個(gè)系統(tǒng)崩潰。非結(jié)構(gòu)化算法采用洪泛轉(zhuǎn)發(fā)的方式,可靠性差,對(duì)網(wǎng)絡(luò)的資源消耗大。隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,通過(guò)擴(kuò)散方式定位對(duì)等點(diǎn)及查詢信息的方法將造成網(wǎng)絡(luò)流量急劇增加,從而導(dǎo)致網(wǎng)絡(luò)擁塞。因此,網(wǎng)絡(luò)的可擴(kuò)展性不好,對(duì)于大型網(wǎng)絡(luò)也不適合。另外,其安全性也不高,易遭受惡意攻擊,如攻擊者發(fā)送垃圾查詢信息,會(huì)造成網(wǎng)絡(luò)擁塞等。
發(fā)明內(nèi)容本發(fā)明目的是解決提升基于P2P模式的普適服務(wù)資源發(fā)現(xiàn)過(guò)程中的發(fā)現(xiàn)效率和發(fā)現(xiàn)覆蓋率問(wèn)題,促進(jìn)普適計(jì)算技術(shù)的發(fā)展及應(yīng)用,提供一種基于P2P模式的普適服務(wù)資源發(fā)現(xiàn)(PervasiveServiceResourceDiscovery,PSRD)方法。最新的研究成果體現(xiàn)在采用分布式散列表(DHT)的完全分布式結(jié)構(gòu)化拓?fù)渚W(wǎng)絡(luò)。本發(fā)明針對(duì)現(xiàn)存研究方法的不足,基于分布式結(jié)構(gòu)化網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通過(guò)對(duì)傳統(tǒng)的指針表進(jìn)行分析,優(yōu)化指針表,并結(jié)合small-world理論,改進(jìn)傳統(tǒng)DHT資源發(fā)現(xiàn)算法,以提高服務(wù)資源發(fā)現(xiàn)效率和發(fā)現(xiàn)覆蓋率。本發(fā)明基于P2P模式,結(jié)合Small-World理論,提出了新的普適服務(wù)資源發(fā)現(xiàn)方法。傳統(tǒng)的DHT發(fā)現(xiàn)算法中,每個(gè)節(jié)點(diǎn)維護(hù)的指針表存儲(chǔ)的是臨近節(jié)點(diǎn)的節(jié)點(diǎn)信息。為了構(gòu)建Small-World模型,提出了添加遠(yuǎn)程節(jié)點(diǎn)信息的思想,每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)計(jì)算后刪除冗余信息,加入相應(yīng)的遠(yuǎn)程索引。與一些已經(jīng)提出的采用隨機(jī)選取遠(yuǎn)程連接節(jié)點(diǎn)的算法不同,將通過(guò)本地節(jié)點(diǎn)的計(jì)算來(lái)選取遠(yuǎn)程節(jié)點(diǎn),保證加入遠(yuǎn)程連接節(jié)點(diǎn)后既能使服務(wù)發(fā)現(xiàn)的范圍覆蓋整個(gè)網(wǎng)絡(luò),又不會(huì)增加指針表的長(zhǎng)度,并簡(jiǎn)化了指針表的計(jì)算和維護(hù)工作。本發(fā)明提供的基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法的具體步驟包括基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法,其特征在于該方法的具體步驟包括第1、通過(guò)哈希函數(shù)對(duì)目標(biāo)即節(jié)點(diǎn)信息或資源信息進(jìn)行運(yùn)算使用常規(guī)的哈希函數(shù)H(X)對(duì)目標(biāo)進(jìn)行哈希運(yùn)算,將目標(biāo)變換成固定長(zhǎng)度的輸出,對(duì)資源的名稱(chēng)或描述、節(jié)點(diǎn)的IP地址進(jìn)行哈希運(yùn)算HashO后,分別記為IDk=Hash(資源名稱(chēng)或描述),IDn=Hash(IP);第2、將每個(gè)加入raSD網(wǎng)絡(luò)中的節(jié)點(diǎn)及資源按照第1步的方法進(jìn)行哈希運(yùn)算,哈希運(yùn)算結(jié)果是一個(gè)m位的二進(jìn)制標(biāo)識(shí)符ID,為了保證兩個(gè)節(jié)點(diǎn)或關(guān)鍵字哈希值相同的概率小到可以忽略不計(jì),m必須足夠長(zhǎng),一般取100200位;節(jié)點(diǎn)η的ID用IDn表示,IDn的取值范圍為W,2m-1],將這些屬于0到2m-l的IDn按照從大到小的順序排列成一個(gè)圓圈,形成分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán);第3、按照第2步方法將分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)構(gòu)建出來(lái)之后,為實(shí)際加入分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)的每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)后繼結(jié)點(diǎn)即Successor的節(jié)點(diǎn)信息;每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)計(jì)算后刪除冗余信息,每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)增加遠(yuǎn)端節(jié)點(diǎn)的鏈接來(lái)構(gòu)建I3RSD中的small-world網(wǎng)絡(luò),加入相應(yīng)的遠(yuǎn)程索引;遠(yuǎn)端節(jié)點(diǎn)的鏈接信息存放在消除冗余后得到的多余指針表空間中;第4、對(duì)于給定的目標(biāo),從對(duì)等點(diǎn)的候選集中按二分法查找網(wǎng)絡(luò)中的某個(gè)所希望的對(duì)端點(diǎn),把目標(biāo)映射到該對(duì)等點(diǎn)。由于網(wǎng)絡(luò)中的節(jié)點(diǎn)在任何時(shí)刻都有可能加入和退出,因此需要能夠準(zhǔn)確的查找到每個(gè)資源。這要借助于對(duì)等點(diǎn)保存的<IDk,Value〉對(duì),IDk就是要查找資源的hash值,Value是要查找資源實(shí)際存儲(chǔ)的位置;第5、針對(duì)要查找的目標(biāo),直接在本機(jī)的指針表中進(jìn)行查詢,經(jīng)過(guò)指針表,可以直接跨越很多節(jié)點(diǎn)而到達(dá)目標(biāo)節(jié)點(diǎn)或是離目標(biāo)節(jié)點(diǎn)較近的節(jié)點(diǎn),直到找到時(shí)為止或作相應(yīng)的出錯(cuò)處理。第3步中所述的遠(yuǎn)端節(jié)點(diǎn)的選取方法是通過(guò)概率P來(lái)進(jìn)行判斷該節(jié)點(diǎn)是否符合構(gòu)建small-world的要求。在I3RSD網(wǎng)絡(luò)中,為了加入遠(yuǎn)程節(jié)點(diǎn),需要構(gòu)建兩張指針表近鄰指針表和遠(yuǎn)程指針表,其中近鄰指針表的構(gòu)建采用I3RSD算法的指針表構(gòu)建方式,指針表的數(shù)據(jù)按照公式(η+2θπι0(12m,(0^i^m)來(lái)進(jìn)行計(jì)算;構(gòu)建遠(yuǎn)程指針表時(shí),需要以概率P來(lái)選擇遠(yuǎn)程節(jié)點(diǎn),也就是說(shuō),那些不處于臨近指針表的節(jié)點(diǎn),將以概率P被選中作為某個(gè)節(jié)點(diǎn)的遠(yuǎn)程節(jié)點(diǎn)。本發(fā)明的優(yōu)點(diǎn)和積極效果本發(fā)明提供的基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法能有效降低平均查詢路徑長(zhǎng)度。降低查詢路徑長(zhǎng)度原因主要有1)增加了指針表后,節(jié)點(diǎn)在進(jìn)行資源查找的時(shí)候,直接在本機(jī)的finger表中進(jìn)行查詢,所用的時(shí)間要比在單純的沒(méi)有finger表的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)中進(jìn)行查找要小的多。經(jīng)過(guò)指針表,可以直接跨越很多節(jié)點(diǎn)而到達(dá)目標(biāo)節(jié)點(diǎn)或是離目標(biāo)節(jié)點(diǎn)較近的節(jié)點(diǎn)。2)我們改進(jìn)了finger表,DHT算法中的finger表只能覆蓋到全環(huán)的一半,改進(jìn)后,finger表去掉了冗余,增加了以前沒(méi)有覆蓋的那一半環(huán)上的節(jié)點(diǎn)信息。在查詢時(shí),本節(jié)點(diǎn)的計(jì)算量大了,但查詢時(shí)間卻縮短了。本發(fā)明利用刪除冗余的指針表項(xiàng)后,向空出來(lái)的指針表項(xiàng)添加遠(yuǎn)端節(jié)點(diǎn)的方法來(lái)使網(wǎng)絡(luò)具備small-world效應(yīng)。在添加了額外指針表的改進(jìn)算法中,遠(yuǎn)端節(jié)點(diǎn)的選取方法是通過(guò)概率P來(lái)進(jìn)行判斷該節(jié)點(diǎn)是否符合構(gòu)建small-world的要求,本發(fā)明考慮到選用這種方式所帶來(lái)的一系列問(wèn)題,提出了新的選取遠(yuǎn)端節(jié)點(diǎn)的策略。其優(yōu)點(diǎn)是在進(jìn)行服務(wù)發(fā)現(xiàn)時(shí),基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法所需節(jié)點(diǎn)跳轉(zhuǎn)次數(shù)較原來(lái)的DHT算法都減少了。圖1是一個(gè)DHT方法的m=3的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)。此環(huán)允許的最大節(jié)點(diǎn)數(shù)為23=g個(gè)。圖2是DHT方法的基本流程圖。圖3是DHT方法中節(jié)點(diǎn)8查找IDK=45的過(guò)程。圖4是一個(gè)基于P2P模式的PSRD方法所涉及的m=3的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)。圖5是PSRD方法中新節(jié)點(diǎn)加入流程圖。圖6是PSRD方法中的查找流程圖。圖7是PSRD方法所包含的查找過(guò)程。圖8是PSRD方法中節(jié)點(diǎn)8維護(hù)的指針表。圖9是優(yōu)化的PSRD方法中新節(jié)點(diǎn)加入的流程圖。圖10是優(yōu)化的PSRD方法中節(jié)點(diǎn)8維護(hù)的指針表。圖11是優(yōu)化的PSRD方法所包含的查找過(guò)程。具體實(shí)施方式實(shí)施例1本發(fā)明的具體技術(shù)方案如下第1、通過(guò)哈希函數(shù)對(duì)目標(biāo)即節(jié)點(diǎn)信息或資源信息進(jìn)行運(yùn)算DHT算法是基于DHT(分布式哈希表)的查找算法。在DHT算法中進(jìn)行網(wǎng)絡(luò)構(gòu)建、節(jié)點(diǎn)添加和資源查找時(shí),都要用到哈希函數(shù)對(duì)節(jié)點(diǎn)和資源信息進(jìn)行加工、運(yùn)算。通過(guò)哈希函5數(shù),可將目標(biāo)(節(jié)點(diǎn)信息、資源信息)變換成固定長(zhǎng)度的輸出。哈希函數(shù)H(X)具備以下性質(zhì)1)H(χ)可以作用于一個(gè)任意長(zhǎng)度的數(shù)據(jù)。2)H(χ)能產(chǎn)生一個(gè)固定長(zhǎng)度的輸出,如160位。3)易實(shí)現(xiàn)性對(duì)任何給定的x,H(x)計(jì)算相對(duì)容易,無(wú)論是用硬件或者軟件都能實(shí)現(xiàn)。4)單向性對(duì)任何給定的碼h,不可能找到χ滿足H(χ)=h。5)弱抗沖突(weakcollisionresistance)對(duì)任何給定的數(shù)據(jù)塊,尋找不等于χ的y,使得H(y)=H(X)在計(jì)算上是不可行的。6)強(qiáng)抗沖突(strongcollisionresistance)尋找任何的(x,y)對(duì)滿足H(x)=H(y)在計(jì)算上是不可行的?;谝陨系男再|(zhì)我們可以知道,哈希函數(shù)H(X)可以保證數(shù)據(jù)的唯一性。因此用于Hash節(jié)點(diǎn)信息和資源時(shí),可以避免重復(fù)值,保證查詢結(jié)果的正確性。我們對(duì)資源的名稱(chēng)或描述、節(jié)點(diǎn)的IP地址進(jìn)行Hash后,分別記為IDk=Hash(資源名稱(chēng)或描述),IDn=Hash(IP)。DHT算法是MIT提出的一個(gè)分布式資源發(fā)現(xiàn)服務(wù)的協(xié)議。它的資源查詢思想是給定一個(gè)將要查找的資源關(guān)鍵字,PRSD從對(duì)等點(diǎn)的候選集中按二分法查找網(wǎng)絡(luò)中的某個(gè)所希望的對(duì)端點(diǎn),把關(guān)鍵字映射到該對(duì)等點(diǎn)。該對(duì)等點(diǎn)保存了<IDk,Value〉對(duì),IDk就是要查找資源的hash值,Value是要查找資源實(shí)際存儲(chǔ)的位置。第2、將每個(gè)加入I5RSD網(wǎng)絡(luò)中的節(jié)點(diǎn)及資源按照第1步的方法進(jìn)行哈希運(yùn)算,哈希運(yùn)算結(jié)果是一個(gè)m位的二進(jìn)制標(biāo)識(shí)符ID。為了保證兩個(gè)節(jié)點(diǎn)或關(guān)鍵字哈希值相同的概率小到可以忽略不計(jì),m必須足夠長(zhǎng),一般取100200位。節(jié)點(diǎn)ID(用IDn表示)一般使用節(jié)點(diǎn)的IP地址哈希運(yùn)算得出,關(guān)鍵字ID(用IDk表示)通過(guò)哈希資源名稱(chēng)運(yùn)算。這樣,IDn的取值范圍為。將這些屬于0到2m-l的IDn按照從大到小的順序排列成一個(gè)圓圈,形成分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)。圖1是一個(gè)DHT方法的m=3的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)。此環(huán)允許的最大節(jié)點(diǎn)數(shù)為23=8個(gè)。構(gòu)造過(guò)程為首先,加入網(wǎng)絡(luò)的所有的節(jié)點(diǎn)按照該節(jié)點(diǎn)哈希后得到的關(guān)鍵字IDn按從小到大順時(shí)針排列起來(lái),這樣就構(gòu)成了一個(gè)地址空間為0-23-1的一個(gè)環(huán)。環(huán)中實(shí)心點(diǎn)表示有具體的節(jié)點(diǎn)對(duì)應(yīng)。在圖1中,加入該網(wǎng)絡(luò)的節(jié)點(diǎn)為0、1、3,資源的關(guān)鍵字為1、2、4、5。資源的關(guān)鍵字值IDk被指定到環(huán)中等于IDk的節(jié)點(diǎn)或順時(shí)針?lè)较虻谝粋€(gè)遇到的具體節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)被稱(chēng)為IDk的后繼結(jié)點(diǎn),可表示為Successor)。也就是說(shuō),Successor)就是在地址空間為0-23-1的環(huán)上從IDn等于或小于IDk的節(jié)點(diǎn)出發(fā),沿著順時(shí)針?lè)较蚺旁谠摴?jié)點(diǎn)后的第一個(gè)節(jié)點(diǎn)。如圖1所示,資源1、2、4、5的信息放在它的后繼結(jié)點(diǎn)Successor上。資源1的信息放在節(jié)點(diǎn)Successor(I)=1上,資源2的信息放在節(jié)點(diǎn)Successor(2)=3上,資源4和5的信息放在Successor(4)=Successor(5)=0上。第3、按照上文的方法將分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)構(gòu)建出來(lái)之后,為實(shí)際加入分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)的每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)后繼結(jié)點(diǎn)(Successor)的節(jié)點(diǎn)信息。如圖3中,m=6,所以該I5RSD網(wǎng)絡(luò)的規(guī)模是26=64,實(shí)際加入該網(wǎng)絡(luò)的節(jié)點(diǎn)是10個(gè),分別為圖中標(biāo)出的0,8,14.......這些節(jié)點(diǎn)都持有各自的后繼節(jié)點(diǎn)的信息,如節(jié)點(diǎn)8持有其后繼14的信息,節(jié)點(diǎn)14持有其后繼21的信息,以此類(lèi)推。在分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)構(gòu)建完成以及節(jié)點(diǎn)信息更新完成后,查找過(guò)程沿著各自節(jié)點(diǎn)及其后繼節(jié)點(diǎn)進(jìn)行。DHT基本的算法流程圖如圖2所示根據(jù)流程圖,用語(yǔ)言表述DHT方法的資源發(fā)現(xiàn)具體過(guò)程為當(dāng)節(jié)點(diǎn)η收到查詢某個(gè)資源IDk的請(qǐng)求后,先在本節(jié)點(diǎn)上查看IDk是否等于本節(jié)點(diǎn)的IDn值或?qū)儆?IDn,successor(η)),如果屬于則返回信息給發(fā)起查詢的節(jié)點(diǎn),否則將查詢消息轉(zhuǎn)發(fā)給successor(η),重復(fù)執(zhí)行此過(guò)程直到查找成功或查詢消息又發(fā)回給發(fā)起查詢的節(jié)點(diǎn)(查找失敗)。圖3中,顯示了節(jié)點(diǎn)8查找IDk=45的過(guò)程。當(dāng)節(jié)點(diǎn)8想要查找一個(gè)Hash(資源)=45的資源時(shí),首先看45是否屬于(8,Successor(8))=(8,14),不屬于則將查詢消息發(fā)送給Successor(8)=14,節(jié)點(diǎn)14進(jìn)行同樣的查找步驟,直到發(fā)現(xiàn)45屬于(42,48)時(shí),可以確定資源45的信息存儲(chǔ)在節(jié)點(diǎn)48上,并將查找結(jié)果返回給節(jié)點(diǎn)8,至此查找成功并結(jié)束??梢?jiàn),節(jié)點(diǎn)8想要查找IDk=45的資源時(shí),采用一步一步逼近successor(45)的方法,這個(gè)過(guò)程中,節(jié)點(diǎn)8到success0r(45)之間有多少個(gè)節(jié)點(diǎn),就要經(jīng)過(guò)多少跳,在圖3-3中,查找跳數(shù)是5,效率很低。上面的查找算法是原始I3RSD的簡(jiǎn)單查找算法,這種查找算法效率不高,要經(jīng)過(guò)很多次跳躍,才能找到目標(biāo)節(jié)點(diǎn),最差情況下是n-1次。研究者們對(duì)原始的DHT算法進(jìn)行修改后,提出了現(xiàn)在廣泛運(yùn)用的經(jīng)典的I3RSD發(fā)現(xiàn)算法,該算法為每個(gè)參與I3RSD網(wǎng)絡(luò)的節(jié)點(diǎn)增加了一張一定長(zhǎng)度的finger表用于路由,減少查詢跳數(shù)。在對(duì)DHT算法中的指針表進(jìn)行分析后,我們發(fā)現(xiàn)指針表存在冗余問(wèn)題,也就是說(shuō),消除冗余后得到的多余指針表空間可以利用起來(lái),以提高查詢效率。我們將通過(guò)在多余的指針表空間中增加遠(yuǎn)端節(jié)點(diǎn)的鏈接來(lái)構(gòu)建PRSD中的small-world網(wǎng)絡(luò),這樣既可以提高查詢效率,又不用增加額外的指針表。同時(shí),DHT發(fā)現(xiàn)算法中,每個(gè)節(jié)點(diǎn)維護(hù)的指針表存儲(chǔ)的是臨近節(jié)點(diǎn)的節(jié)點(diǎn)信息。本發(fā)明為了構(gòu)建Small-World模型,提出了添加遠(yuǎn)程節(jié)點(diǎn)信息的思想,每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)計(jì)算后刪除冗余信息,加入相應(yīng)的遠(yuǎn)程索引。與一些已經(jīng)提出的采用隨機(jī)選取遠(yuǎn)程連接節(jié)點(diǎn)的算法不同,將通過(guò)本地節(jié)點(diǎn)的計(jì)算來(lái)選取遠(yuǎn)程節(jié)點(diǎn),保證加入遠(yuǎn)程連接節(jié)點(diǎn)后既能使服務(wù)發(fā)現(xiàn)的范圍覆蓋整個(gè)網(wǎng)絡(luò),又不會(huì)增加指針表的長(zhǎng)度,并簡(jiǎn)化了指針表的計(jì)算和維護(hù)工作。首先給出I3RSD算法中用到的相關(guān)術(shù)語(yǔ)①I(mǎi)Dk資源信息的hash值;IDn節(jié)點(diǎn)信息(IP、端口)的hash值;②<IDk,Value>IDk是m位的資源Hash值,Value是要查找資源的實(shí)際存儲(chǔ)位置(IP地址);③successor(IDk)資源IDk的后繼節(jié)點(diǎn),IDn大于或等于關(guān)鍵字IDk的第一個(gè)節(jié)點(diǎn);④fingerTable指針表。是指存儲(chǔ)在每個(gè)節(jié)點(diǎn)之上的用于維護(hù)m條節(jié)點(diǎn)信息的指針表,詳細(xì)內(nèi)容在表1中進(jìn)行介紹;⑤Successor(IDk)(后繼節(jié)點(diǎn));⑥Predecessor(IDk)(前驅(qū)節(jié)點(diǎn))是指這個(gè)值的后繼節(jié)點(diǎn)在分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)中逆時(shí)針?lè)较蛏系牡谝粋€(gè)節(jié)點(diǎn),用于節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)指針表的更新;鑒于原始DHT算法在服務(wù)發(fā)現(xiàn)過(guò)程中效率較低的問(wèn)題,我們提出了每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)定長(zhǎng)finger表的I3RSD算法。在這種算法中,每個(gè)節(jié)點(diǎn)要維護(hù)一個(gè)m項(xiàng)的finger表。m為資源和節(jié)點(diǎn)標(biāo)識(shí)的位數(shù),第i個(gè)表項(xiàng)的內(nèi)容為Successor((I^i-I)mod2m)(η為節(jié)點(diǎn)標(biāo)識(shí)符),0<=i<m,我們用finger[i]表示。該指針表包含的內(nèi)容如表1所示表1指針表以一個(gè)基于P2P模式的PSRD方法所涉及的m=3的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)為例。如圖4所示,因?yàn)閙=3,所以各個(gè)節(jié)點(diǎn)的指針表維護(hù)的表項(xiàng)數(shù)為3。已經(jīng)與網(wǎng)絡(luò)連接的節(jié)點(diǎn)為0、1、3。節(jié)點(diǎn)0的指針表的表項(xiàng)分別指向標(biāo)識(shí)符(0+2°)mod23=1,(0+21)mod23=2,(0+22)mod23=4。假設(shè)節(jié)點(diǎn)3要查找關(guān)鍵字為1的服務(wù)。由于1屬于弦環(huán)區(qū)間[7,3),它屬于π3.Finger[3].interval,此弦環(huán)區(qū)間所在的指針表項(xiàng)存儲(chǔ)的后繼結(jié)點(diǎn)信息為節(jié)點(diǎn)0,因此節(jié)點(diǎn)3將要求0去尋找關(guān)鍵字1的后繼節(jié)點(diǎn)。以此類(lèi)推,節(jié)點(diǎn)0將查找它的指針表并發(fā)現(xiàn)1的后繼節(jié)點(diǎn)是1本身,于是節(jié)點(diǎn)0將告訴節(jié)點(diǎn)3,1是它要找的節(jié)點(diǎn)。第4、對(duì)于給定的目標(biāo),從對(duì)等點(diǎn)的候選集中按二分法查找網(wǎng)絡(luò)中的某個(gè)所希望的對(duì)端點(diǎn),把目標(biāo)映射到該對(duì)等點(diǎn)。由于網(wǎng)絡(luò)中的節(jié)點(diǎn)在任何時(shí)刻都有可能加入和退出,因此需要能夠準(zhǔn)確的查找到每個(gè)資源。這要借助于對(duì)等點(diǎn)保存的<IDk,Value〉對(duì),IDk就是要查找資源的hash值,Value是要查找資源實(shí)際存儲(chǔ)的位置。節(jié)點(diǎn)加入分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)時(shí)需要一個(gè)加入算法來(lái)設(shè)置每個(gè)節(jié)點(diǎn)保存的指針表。P2P網(wǎng)絡(luò)具有高度的動(dòng)態(tài)性,節(jié)點(diǎn)在任何時(shí)刻都有可能加入和退出,在這種高度變化的網(wǎng)絡(luò)環(huán)境中,仍然需要能夠準(zhǔn)確的查找到每個(gè)資源。這除了要求I3RSD網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的后繼始終是正確的,而且要求節(jié)點(diǎn)SUCCeSSor(IDk)中維護(hù)的信息始終是與IDk相關(guān)的。所以,當(dāng)某個(gè)節(jié)點(diǎn)加入I3RSD網(wǎng)絡(luò)時(shí),PRSD網(wǎng)絡(luò)必須完成以下3個(gè)任務(wù)1)對(duì)新加入的節(jié)點(diǎn)η的Predecessor和fingerTable進(jìn)行初始化。2)更新網(wǎng)絡(luò)其他節(jié)點(diǎn)的Predecessor禾口fingerTable。3)告訴節(jié)點(diǎn)η的后繼節(jié)點(diǎn),將應(yīng)該由η負(fù)責(zé)的IDk索引信息發(fā)送給η。PRSD節(jié)點(diǎn)η加入網(wǎng)絡(luò)的這3個(gè)步驟的算法流程如圖5所示若某個(gè)節(jié)點(diǎn)η想要加入I3RSD網(wǎng)絡(luò),首先通過(guò)廣播探測(cè)網(wǎng)絡(luò)中是否已經(jīng)存在引導(dǎo)節(jié)點(diǎn)η’,如果η’存在,則借用η’來(lái)初始化自己的指針表等信息,這個(gè)時(shí)候需要調(diào)用init_finger_table(n')函數(shù),至此完成了上述3個(gè)任務(wù)的任務(wù)1);在對(duì)自己的指針表進(jìn)行初始化完成后,調(diào)用update_others()函數(shù)更新網(wǎng)絡(luò)中其它節(jié)點(diǎn)的指針表,至此完成了上述3個(gè)任務(wù)的任務(wù)2);最后聯(lián)系η的后繼節(jié)點(diǎn)successor(η),將successor(η)中應(yīng)該由η負(fù)責(zé)的關(guān)鍵字資源交由η負(fù)責(zé)維護(hù),至此完成上述3個(gè)任務(wù)的任務(wù)3)。如果η是第一個(gè)加入網(wǎng)絡(luò)的節(jié)點(diǎn),那么它只需要將自己的指針表中的后繼(Successor)信息和前驅(qū)(predecessor)設(shè)置為自身艮阿。圖5中涉及到的初始化η的指針表算法,通過(guò)函數(shù)init_finger_table()完成,算法如下所示finger[1].succ=η,.find_successor(finger[1].start);//請(qǐng)求η,調(diào)用find_successor()函數(shù)找到finger[l]的后繼predecessor=successor,predecessor-J/設(shè)置η的前驅(qū)successor,predecessor=η;//更新η禾口η,的前驅(qū)fori=Itom_l//更新η的剩余指針表表項(xiàng)if(finger[i+1].starte[η,finger[i].succ))finger[i+1].succ=finger[i]·succ;elsefinger[i+1].succ=n,.find_successor(finger[i+1].start)在函數(shù)init_finger_table()中,節(jié)點(diǎn)η首先請(qǐng)求節(jié)點(diǎn)η,調(diào)用find_successor()函數(shù),為其查找finger[1]維護(hù)的后繼節(jié)點(diǎn),并更新自己的predecessor和η’的predecessor.然后重復(fù)地調(diào)用fincLsuccessor()函數(shù)更新指針表的第2條到最后一條。圖5中涉及的更新剩余節(jié)點(diǎn)的指針表算法,通過(guò)函數(shù)update_0ther()完成。在對(duì)其它節(jié)點(diǎn)(如節(jié)點(diǎn)P)進(jìn)行指針表更新時(shí),只需更新由于η的加入而受到影響的節(jié)點(diǎn),也即節(jié)點(diǎn)η是否會(huì)成為節(jié)點(diǎn)P的指針表中的第i項(xiàng)。判斷節(jié)點(diǎn)P的指針表的第i項(xiàng)是否用η替換的依據(jù)是1)節(jié)點(diǎn)P位于節(jié)點(diǎn)η之前至少2i-l,也就是說(shuō)節(jié)點(diǎn)ρ應(yīng)該是節(jié)點(diǎn)(IiIi-I)的前驅(qū);2)節(jié)點(diǎn)ρ的指針表中,第i項(xiàng)的信息在η之后。滿足這兩個(gè)條件的節(jié)點(diǎn)ρ通過(guò)調(diào)用函數(shù)update_finger_table(n,i)來(lái)更新自身指針表中第i條的信息。update_other()算法如下所示foritomρ=find_predecessor(nil);//節(jié)點(diǎn)P在節(jié)點(diǎn)η之前至少2^1p.update_finger_table(η,i);節(jié)點(diǎn)P調(diào)用update_finger_table(η,i)是一個(gè)遞歸的過(guò)程,它必須在I3RSD上逆時(shí)針的對(duì)各個(gè)需要更新finger表的節(jié)點(diǎn)運(yùn)行,也就是說(shuō),如果節(jié)點(diǎn)ρ更新了它的finger表第i項(xiàng),那么ρ的predecessor也需要更新。update_finger_table(n,i)的算法如下所示p.update_finger_table(η,i)//如果η是節(jié)點(diǎn)ρ的指針表第i項(xiàng),用η更新ρ的finger表if(ne[ρ,finger[i],succ))finger[i]·succ=η,ρ=predecessor;p.update_finger_table(η,i);帶有finger表的I3RSD查找算法如下所示n.find_successor(IDk)//節(jié)點(diǎn)查找與IDk匹配的后繼節(jié)點(diǎn)n,=find_predecessor(IDk);returnη'.successor;該函數(shù)需要調(diào)用fincLpredecessor(IDk)查找關(guān)鍵字IDk的前驅(qū)n,然后獲得節(jié)點(diǎn)η’的后繼,也就得到了IDk的后繼。n.find_predecessor(IDk)//節(jié)點(diǎn)查找與IDK匹配的前驅(qū)節(jié)點(diǎn)η,=η;while(IDke[η,,η,·successor])η,=closest.preceding_finger(IDk);returnη,;該函數(shù)通過(guò)調(diào)用closest.preceding_finger()函數(shù),在分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)上越來(lái)越逼近IDn=IDk的節(jié)點(diǎn),最終可以得到IDk的前驅(qū)節(jié)點(diǎn)predecessor(IDk)η.closest.preceding_finger(IDk)//返回指針表中與IDk最接近的節(jié)點(diǎn)fori=mdownto1if(finger[i],nodee(n,IDk])returnfinger[i]·node;returnη;函數(shù)closest.preceding_finger()在資源查找過(guò)程中被多次調(diào)用。在節(jié)點(diǎn)自己的指針表中,從第m-1項(xiàng)指針表開(kāi)始往前找,直到找到predecessor(IDk)而且與IDk最近的節(jié)點(diǎn),返回給調(diào)用它的fincLpredecessor(IDk)函數(shù)。第5、針對(duì)要查找的目標(biāo),直接在本機(jī)的指針表中進(jìn)行查詢,經(jīng)過(guò)指針表,可以直接跨越很多節(jié)點(diǎn)而到達(dá)目標(biāo)節(jié)點(diǎn)或是離目標(biāo)節(jié)點(diǎn)較近的節(jié)點(diǎn),直到找到時(shí)為止或作相應(yīng)的出錯(cuò)處理。通過(guò)以上3個(gè)主要函數(shù),PRSD算法所包含的查找過(guò)程如圖6所示如圖7是對(duì)圖3添加了指針表后的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)。節(jié)點(diǎn)8收到查詢資源IDk=45的請(qǐng)求后,先在自己的指針表中進(jìn)行查詢,找到與45最接近的節(jié)點(diǎn)是42,將查詢信息轉(zhuǎn)發(fā)給節(jié)點(diǎn)42;同樣的過(guò)程,節(jié)點(diǎn)42在其指針表中進(jìn)行查找,節(jié)點(diǎn)42發(fā)現(xiàn)目標(biāo)45屬于該指針表中的弦環(huán)區(qū)間[44,46),該條指針表的811(^.信息為節(jié)點(diǎn)48;由此可以斷定<45,Value)存儲(chǔ)在節(jié)點(diǎn)48上。表示查找成功,并發(fā)送請(qǐng)求給節(jié)點(diǎn)48。在圖3中的原始I3RSD網(wǎng)絡(luò)中查找IDk=45時(shí),需要經(jīng)過(guò)節(jié)點(diǎn)14、21、32、42,最終共需要5跳才能找到<45,ValUe>存儲(chǔ)的實(shí)際位置,在一個(gè)只有10個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中,這樣的查找時(shí)延證明了查找算法性能的低下。而在圖7中帶finger表的I3RSD中查找45,只需要經(jīng)過(guò)節(jié)點(diǎn)8、42就可以得到結(jié)果。顯然,I3RSD算法比DHT算法在查詢路徑和速度上提升了很多。I3RSD算法的特點(diǎn)是1)PRSD網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)的指針表保存著網(wǎng)絡(luò)中部分其他節(jié)點(diǎn)的信息,這些節(jié)點(diǎn)多是鄰近節(jié)點(diǎn);2)每個(gè)節(jié)點(diǎn)的指針表長(zhǎng)度為m(m可用來(lái)度量網(wǎng)絡(luò)的規(guī)模),所以一個(gè)節(jié)點(diǎn)通常沒(méi)有足夠的信息表項(xiàng)來(lái)存儲(chǔ)所有網(wǎng)絡(luò)的節(jié)點(diǎn)信息,導(dǎo)致經(jīng)常不能直接在本地節(jié)點(diǎn)找到資源<IDk,Value)對(duì)。根據(jù)I5RSD算法中finger表的構(gòu)造,finger表中存放<IDk,Value〉的原則是以公式successor((n+2k-l)mod2m)來(lái)計(jì)算的,所以每一次節(jié)點(diǎn)進(jìn)行查詢時(shí),發(fā)出查詢請(qǐng)求信息所需跳轉(zhuǎn)的節(jié)點(diǎn)距離基于2S由于finger表的長(zhǎng)度為m,所以節(jié)點(diǎn)維護(hù)的finger表只覆蓋了整個(gè)分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)的一半。如果目標(biāo)節(jié)點(diǎn)落在所持finger表的另外一半,則必須通過(guò)某個(gè)或多個(gè)中間節(jié)點(diǎn)才能找到。由于fingertable中記錄的是successor((n+2k_l)mod2m),IDk是以1,2,4,8,16遞增的,剛開(kāi)始時(shí)增幅較小,它們的后繼通常是同一個(gè)節(jié)點(diǎn)。圖8給出了在圖7中節(jié)點(diǎn)8維護(hù)的指針表。節(jié)點(diǎn)8遞增1、2、4后,它們的后繼都是節(jié)點(diǎn)14,使得表中有大量的表項(xiàng)浪費(fèi)。產(chǎn)生這種指針表項(xiàng)冗余的原因是節(jié)點(diǎn)的IDn是經(jīng)過(guò)相容散列函數(shù)計(jì)算以后得到的,在地址空間中基本是均勻分布的。地址空間是m位的二進(jìn)制,如果網(wǎng)絡(luò)中的實(shí)際節(jié)點(diǎn)有2n個(gè),地址空間就會(huì)被分成2"段,所以每?jī)蓚€(gè)相鄰的節(jié)點(diǎn)的IDk之間相差2"V2n=2m_n,即大約前m-n個(gè)表項(xiàng)都有相同的后繼。也就是說(shuō),整個(gè)指針表的重復(fù)率將大于(m-n)/m。由于為了避免在對(duì)節(jié)點(diǎn)或資源進(jìn)行哈希時(shí)產(chǎn)生碰撞,m的值通常比較大,那么,重復(fù)率(m-n)/m就會(huì)比較大。比如一個(gè)m=32,η=20的分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)中各節(jié)點(diǎn)的指針表重復(fù)率大概為0.625。如果實(shí)際加入網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量少的話,重復(fù)率會(huì)更大。所以我們可以考慮將重復(fù)的信息去掉,而添加一些有用的信息。這些有用信息的選定靈感,來(lái)源于small-world理論。在I5RSD中,節(jié)點(diǎn)的指針表維護(hù)的范圍最大達(dá)到半個(gè)分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán),指針表中維護(hù)的節(jié)點(diǎn)被看做近鄰節(jié)點(diǎn)。如果我們能從指針表沒(méi)有維護(hù)到的另一半分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)中選擇適當(dāng)?shù)墓?jié)點(diǎn)添加到指針表中,PRSD網(wǎng)絡(luò)將呈現(xiàn)small-world特性,從而降低搜索跳數(shù)。假設(shè)任意節(jié)點(diǎn)U與最近兩個(gè)節(jié)點(diǎn)存在連接,并與節(jié)點(diǎn)ν存在一個(gè)遠(yuǎn)程連接,u、v之D(u,v)-'間的最短距離為D(u,ν)。u與ν之間建立連接的概率等于zD(u,v)-i。則存在搜索算法使得搜索路徑的平均長(zhǎng)度為O(Iog2N)。對(duì)于一個(gè)K維網(wǎng)絡(luò),節(jié)點(diǎn)U以正比于[D(U,ν)Γ的概率與節(jié)點(diǎn)ν建立連接(其中,ν為任意非u節(jié)點(diǎn);D(u,ν)為U、ν的距離;r是一個(gè)常數(shù))。當(dāng)且僅當(dāng)r=k時(shí),存在一種P2P搜索算法,使搜索路徑長(zhǎng)度等于IogN的多項(xiàng)式規(guī)模。因?yàn)镮3RSD網(wǎng)絡(luò)是一個(gè)一維的網(wǎng)絡(luò),故U、V之間建立連接的概率為D(u,V)—1時(shí),搜索路徑長(zhǎng)度的期望值為IogN的多項(xiàng)式規(guī)模。目前構(gòu)造small-world網(wǎng)絡(luò)的方式主要是采取以概率P選擇遠(yuǎn)程節(jié)點(diǎn)連接的方式。例如在PRSD網(wǎng)絡(luò)中,為了加入遠(yuǎn)程節(jié)點(diǎn),需要構(gòu)建兩張指針表近鄰指針表和遠(yuǎn)程指針表。其中近鄰指針表的構(gòu)建采用PRSD算法的指針表構(gòu)建方式,指針表各項(xiàng)數(shù)據(jù)依然以表1的公式來(lái)進(jìn)行計(jì)算。構(gòu)建遠(yuǎn)程指針表時(shí),需要以概率P來(lái)選擇遠(yuǎn)程節(jié)點(diǎn),也就是說(shuō),那些不處于臨近指針表的節(jié)點(diǎn),將以概率P被選中作為某個(gè)節(jié)點(diǎn)的遠(yuǎn)程節(jié)點(diǎn)。關(guān)于第3步中所述的遠(yuǎn)端節(jié)點(diǎn)的選取方法這里做一闡明。11如果以概率P來(lái)選擇遠(yuǎn)程節(jié)點(diǎn)的話,我們必須解決以下問(wèn)題DP=。我們知道,P是介于0到1之間的值,當(dāng)P=0時(shí),網(wǎng)絡(luò)是一個(gè)具有規(guī)則拓?fù)涞慕Y(jié)構(gòu)化網(wǎng)絡(luò),而當(dāng)P=1時(shí),網(wǎng)絡(luò)呈現(xiàn)為完全的無(wú)規(guī)則狀態(tài)。那么,在01之間的這些取值中,我們選取哪一個(gè)將最適合構(gòu)建small-world網(wǎng)絡(luò)?2)P是一個(gè)固定值嗎?如果我們解決了問(wèn)題1),即找到了一個(gè)P值,以該值選取遠(yuǎn)程節(jié)點(diǎn)后,使得當(dāng)前I3RSD網(wǎng)絡(luò)成為一個(gè)small-world網(wǎng)絡(luò)。但是眾所周知,P2P網(wǎng)絡(luò)具有高度動(dòng)態(tài)性的特點(diǎn),節(jié)點(diǎn)在頻繁的加入和退出網(wǎng)絡(luò),那么此時(shí)的最優(yōu)P值并不能保證是下一刻的最優(yōu)P值。3)如果我們能得到一個(gè)計(jì)算公式,如采用上面提到的Kleinberg模型中提到的p(u,vr'Σο(ιιν)>。隨著節(jié)點(diǎn)的加入和退出來(lái)計(jì)算最優(yōu)P值,也就是說(shuō)P值是不斷變化的。那么可V關(guān)U想而知,在這種情況下,指針表的維護(hù)是復(fù)雜的。節(jié)點(diǎn)的計(jì)算任務(wù)將增加很多。指針表的更新也顯得比原來(lái)復(fù)雜。鑒于上面提到的P值選擇帶來(lái)的問(wèn)題,我們決定不再使用傳統(tǒng)的通過(guò)P值來(lái)選取遠(yuǎn)程節(jié)點(diǎn)去構(gòu)建small-world的方法,而是在對(duì)指針表進(jìn)行分析后,消除指針表冗余,依然利用指針表構(gòu)建公式在表尾添加遠(yuǎn)程節(jié)點(diǎn)。通過(guò)對(duì)finger表的觀察可以發(fā)現(xiàn),前幾項(xiàng)的節(jié)點(diǎn)的跳轉(zhuǎn)跨度不大,這樣就造成了冗余區(qū)間的存在,因此重復(fù)的表項(xiàng)幾乎都在finger表的前幾項(xiàng)中。我們考慮去掉重復(fù)的冗余表項(xiàng),在finger表的尾部填加新的表項(xiàng)。消去冗余的表項(xiàng)后,我們從finger表未覆蓋的另一半?yún)^(qū)域通過(guò)計(jì)算選取相應(yīng)表項(xiàng)添加到原finger表的尾部,這樣finger表便可以覆蓋整個(gè)分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán),提高了finger表的利用率,進(jìn)而提高搜索速度。而且從另一半?yún)^(qū)域選取的節(jié)點(diǎn),可以使網(wǎng)絡(luò)具有small-world特性。而為了消除指針表的冗余和構(gòu)建small-world網(wǎng)絡(luò),當(dāng)新節(jié)點(diǎn)η加入時(shí)I3RSD要完成一個(gè)新的任務(wù),就是檢查指針表項(xiàng)的冗余項(xiàng)并刪除,然后添加遠(yuǎn)程節(jié)點(diǎn)信息,添加時(shí)選擇策略如下1)由于重復(fù)信息只會(huì)出現(xiàn)在指針表的前幾項(xiàng),所以第一步是合并前幾項(xiàng)后繼節(jié)點(diǎn)相同的指針表項(xiàng)為一條;2)按照表1的計(jì)算方法來(lái)添加表項(xiàng),i重新計(jì)數(shù),添加的表項(xiàng)中,finger[i].start等于原指針表中最后一項(xiàng)的Succ0如圖7中,節(jié)點(diǎn)8維護(hù)的指針表在刪除冗余后,只剩下4條指針表項(xiàng),則需要對(duì)其添加第5條和第6條指針表項(xiàng)作為遠(yuǎn)程鏈接信息,按照添加策略,第5條指針表項(xiàng)內(nèi)容為:finger[5],start=42,finger[5+1],start=42+24=58,所以Int.=[42,58)??傊?,優(yōu)化后的PSRD方法的流程如圖9所示新的節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),PRSD網(wǎng)絡(luò)將完成以下5個(gè)任務(wù)1)對(duì)新加入的節(jié)點(diǎn)η的Predecessor和FingerTable進(jìn)行初始化。2)更新網(wǎng)絡(luò)其他節(jié)點(diǎn)的Predecessor禾口FingerTable。3)告訴節(jié)點(diǎn)η的后繼節(jié)點(diǎn),將應(yīng)該由η負(fù)責(zé)的IDk索引信息發(fā)送給η。4)消除本節(jié)點(diǎn)中冗余的指針表項(xiàng)125)在指針表末端添加m-logη條遠(yuǎn)程鏈接其中前三個(gè)任務(wù)與I3RSD中節(jié)點(diǎn)加入網(wǎng)絡(luò)的方式一樣,消除冗余和添加遠(yuǎn)程鏈接通過(guò)調(diào)用dele_Redundancy()和add_LF()完成。算法如下所示dele_Redundancy(η)//檢查并刪除冗余表項(xiàng)for(i=Otoi=m-logη){if(finger[i]·Succ.=finger[i+1]·Succ.)finger[i]·Int=[finger[i]·start,finger[i+2]·start)}add_LF(n)//添加遠(yuǎn)程節(jié)點(diǎn)信息for(i=m-logntom)init_finger_table(n');經(jīng)過(guò)該策略進(jìn)行指針表重新構(gòu)建后,圖8中指針表的冗余信息將被消除,并添加了相應(yīng)數(shù)量的遠(yuǎn)程節(jié)點(diǎn)信息,通過(guò)優(yōu)化后的算法得到的節(jié)點(diǎn)8的指針表如圖10所示優(yōu)化后的raSD信息如圖11所示節(jié)點(diǎn)8收到查詢IDk=45的請(qǐng)求,節(jié)點(diǎn)8在其finger表中直接找到了Successor(IDk45)=48,因此斷定45的存儲(chǔ)信息存儲(chǔ)在節(jié)點(diǎn)48上。查找成功。該查找過(guò)程在本機(jī)就完成了,可見(jiàn)查找效率較PRSD有所提高。本發(fā)明提高了基于P2P模式的普適服務(wù)資源發(fā)現(xiàn)過(guò)程中的發(fā)現(xiàn)效率和發(fā)現(xiàn)覆蓋率問(wèn)題,有效地支持了基于P2P模式的多種移動(dòng)應(yīng)用,促進(jìn)了普適計(jì)算技術(shù)的發(fā)展及應(yīng)用。具體應(yīng)用基于P2P模式的I5RSD普適服務(wù)資源發(fā)現(xiàn)方法以P2P方式運(yùn)行。本發(fā)明正在與中國(guó)移動(dòng)、中國(guó)聯(lián)通等單位進(jìn)行推廣應(yīng)用。該方法集成在移動(dòng)通信應(yīng)用系統(tǒng)中,可支持基于P2P模式的多種移動(dòng)服務(wù),可快速高效地發(fā)現(xiàn)位于House、Office、Coffeehouse、Park、StadiumAirport等不同場(chǎng)景下的處于固定狀態(tài)的PC、可攜帶任意移動(dòng)的PDA、筆記本電腦laptop等設(shè)備群之間的服務(wù)資源,并以C/S、B/S、P2P等方式無(wú)縫主動(dòng)地遷移移動(dòng)應(yīng)用任務(wù)。例如,1)多媒體任務(wù)無(wú)縫遷移。用戶的多媒體任務(wù)可以透明地隨時(shí)隨地在不同設(shè)備間進(jìn)行無(wú)縫遷移,典型的應(yīng)用包括移動(dòng)辦公(E-working)、移動(dòng)學(xué)習(xí)(Ε-learning)、移動(dòng)工作(E-working)、移動(dòng)商務(wù)(E-bussiness)、移動(dòng)政務(wù)(E-Office)、股票交易(E-Exchanging)、智能指揮(E-commanding)等?;赑2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法實(shí)施場(chǎng)景示例如House、Office、Coffeehouse、Park、StadiumAirport等各個(gè)對(duì)等點(diǎn)間以P2P模式相互遷移。2)交互式流媒體訪問(wèn)。用戶在任何需要的時(shí)候可以以各種可用設(shè)備選擇訪問(wèn)網(wǎng)上的流媒體數(shù)據(jù)并與之交互,典型的應(yīng)用包括視頻點(diǎn)播、網(wǎng)絡(luò)游戲、視覺(jué)安全監(jiān)控。這是用戶與系統(tǒng)之間的交互式應(yīng)用。等等。1權(quán)利要求一種基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法,其特征在于該方法的具體步驟包括第1、通過(guò)哈希函數(shù)對(duì)目標(biāo)即節(jié)點(diǎn)信息或資源信息進(jìn)行運(yùn)算使用常規(guī)的哈希函數(shù)H(x)對(duì)目標(biāo)進(jìn)行哈希運(yùn)算,將目標(biāo)變換成固定長(zhǎng)度的輸出,對(duì)資源的名稱(chēng)或描述、節(jié)點(diǎn)的IP地址進(jìn)行哈希運(yùn)算Hash()后,分別記為IDk=Hash(資源名稱(chēng)或描述),IDn=Hash(IP);第2、將每個(gè)加入PRSD網(wǎng)絡(luò)中的節(jié)點(diǎn)及資源按照第1步的方法進(jìn)行哈希運(yùn)算,哈希運(yùn)算結(jié)果是一個(gè)m位的二進(jìn)制標(biāo)識(shí)符ID,為了保證兩個(gè)節(jié)點(diǎn)或關(guān)鍵字哈希值相同的概率小到可以忽略不計(jì),m必須足夠長(zhǎng),一般取100~200位;節(jié)點(diǎn)n的ID用IDn表示,IDn的取值范圍為,將這些屬于0到2m1的IDn按照從大到小的順序排列成一個(gè)圓圈,形成分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán);第3、按照第2步方法將分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)構(gòu)建出來(lái)之后,為實(shí)際加入分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)的每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)后繼結(jié)點(diǎn)即Successor的節(jié)點(diǎn)信息;每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)計(jì)算后刪除冗余信息,每個(gè)節(jié)點(diǎn)維護(hù)的指針表通過(guò)增加遠(yuǎn)端節(jié)點(diǎn)的鏈接來(lái)構(gòu)建PRSD中的smallworld網(wǎng)絡(luò),加入相應(yīng)的遠(yuǎn)程索引;遠(yuǎn)端節(jié)點(diǎn)的鏈接信息存放在消除冗余后得到的多余指針表空間中;第4、對(duì)于給定的目標(biāo),從對(duì)等點(diǎn)的候選集中按二分法查找網(wǎng)絡(luò)中的某個(gè)所希望的對(duì)端點(diǎn),把目標(biāo)映射到該對(duì)等點(diǎn);由于網(wǎng)絡(luò)中的節(jié)點(diǎn)在任何時(shí)刻都有可能加入和退出,因此需要能夠準(zhǔn)確的查找到每個(gè)資源,這要借助于對(duì)等點(diǎn)保存的<IDk,Value>對(duì),IDk就是要查找資源的hash值,Value是要查找資源實(shí)際存儲(chǔ)的位置;第5、針對(duì)要查找的目標(biāo),直接在本機(jī)的指針表中進(jìn)行查詢,經(jīng)過(guò)指針表,可以直接跨越很多節(jié)點(diǎn)而到達(dá)目標(biāo)節(jié)點(diǎn)或是離目標(biāo)節(jié)點(diǎn)較近的節(jié)點(diǎn),直到找到時(shí)為止或作相應(yīng)的出錯(cuò)處理。2.根據(jù)權(quán)利要求1所述的方法,其特征在于第3步中所述的遠(yuǎn)端節(jié)點(diǎn)的選取方法是通過(guò)概率P來(lái)進(jìn)行判斷該節(jié)點(diǎn)是否符合構(gòu)建small-world的要求。在I3RSD網(wǎng)絡(luò)中,為了加入遠(yuǎn)程節(jié)點(diǎn),需要構(gòu)建兩張指針表近鄰指針表和遠(yuǎn)程指針表,其中近鄰指針表的構(gòu)建采用PRSD算法的指針表構(gòu)建方式,指針表的數(shù)據(jù)按照公式(n+Z^mod2m,(0≤i≤m)來(lái)進(jìn)行計(jì)算;構(gòu)建遠(yuǎn)程指針表時(shí),需要以概率P來(lái)選擇遠(yuǎn)程節(jié)點(diǎn),也就是說(shuō),那些不處于臨近指針表的節(jié)點(diǎn),將以概率P被選中作為某個(gè)節(jié)點(diǎn)的遠(yuǎn)程節(jié)點(diǎn)。全文摘要一種基于P2P模式的PSRD普適服務(wù)資源發(fā)現(xiàn)方法。該方法通過(guò)哈希函數(shù)對(duì)目標(biāo)(資源的名稱(chēng)或描述、節(jié)點(diǎn)的IP地址)進(jìn)行哈希運(yùn)算,哈希運(yùn)算結(jié)果是一個(gè)m位的二進(jìn)制標(biāo)識(shí)符ID,分別記為IDk=Hash(資源名稱(chēng)或描述),IDn=Hash(IP);IDn的取值范圍為,將這些屬于0到2m-1的IDn按照從大到小的順序排列成一個(gè)圓圈,形成分布式結(jié)構(gòu)化網(wǎng)絡(luò)節(jié)點(diǎn)環(huán);每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)后繼結(jié)點(diǎn),對(duì)于給定的目標(biāo),把目標(biāo)映射到網(wǎng)絡(luò)中的某個(gè)對(duì)等點(diǎn),該對(duì)等點(diǎn)保存了<IDk,Value>對(duì),IDk就是要查找資源的hash值,Value是要查找資源實(shí)際存儲(chǔ)的位置;在進(jìn)行資源查找時(shí),直接在本機(jī)的指針表中進(jìn)行查詢,可以直接跨越很多節(jié)點(diǎn)而到達(dá)目標(biāo)節(jié)點(diǎn)或是離目標(biāo)節(jié)點(diǎn)較近的節(jié)點(diǎn),直到找到時(shí)為止或作相應(yīng)的出錯(cuò)處理。文檔編號(hào)H04L29/08GK101917475SQ201010255789公開(kāi)日2010年12月15日申請(qǐng)日期2010年8月18日優(yōu)先權(quán)日2010年8月18日發(fā)明者張德干,王京輝,王曉曄,趙德新申請(qǐng)人:天津理工大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1