專利名稱::一種基于p2p的查找有關(guān)節(jié)點(diǎn)子集合的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種查找網(wǎng)絡(luò)節(jié)點(diǎn)的方法,特別涉及一種基于P2P的査找有關(guān)節(jié)點(diǎn)子集合的方法。
背景技術(shù):
:隨著越來越多的計(jì)算機(jī)連接到Internet上以及越來越多的Internet用戶,IP語音(VoIP)和即時(shí)消息(IM)得到普遍的應(yīng)用。這些通信系統(tǒng)可以采用SessionInitiationProtocol(SIP)協(xié)議建立用戶間的連接,SIP的關(guān)鍵在于將資源轉(zhuǎn)換為IP地址,傳統(tǒng)的SIP應(yīng)用都是基于集中代理服務(wù)器方法,此方法存在單點(diǎn)失敗和負(fù)載不均衡的缺點(diǎn)。目前,有許多方案采用P2P技術(shù)來解決以上問題,如基于DHTP2P技術(shù)的SOSIMPLE(Bryan,A.D.,Lowekamp,B.B.,Jennings,C.,2005,SOSIMPLE:AServerlessStandards-basedP2PSIPCommunicationSystem,In:FirstInternationalWorkshoponAdvancedArchitecturesandAlgorithmsforInternetDeliveryandApplications,AAA-IDEA2005,pp.42-49)。這些方案都屬于P2PSIP的范疇。為此,還建立了IETFP2PSIP工作組。目前,此工作組提出了RELOAD方案(Jennings,C.,Lowekamp,B.,Rescorla,E.,Baset,S"Schulzrinne,H.,2008,REsourceLOcationAndDiscovery(RELOAD)InternetDraftdraft_ietf_p2psip-reload_00.txt)。然而,這些方案都沒有解決查詢相關(guān)節(jié)點(diǎn)的子集合問題。
發(fā)明內(nèi)容5本發(fā)明所要解決的技術(shù)問題是提供一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,該方法采用綜合多倍的虛擬樹型結(jié)構(gòu)化網(wǎng)絡(luò)和隨機(jī)緩存的非結(jié)構(gòu)網(wǎng)絡(luò)來構(gòu)建P2P覆蓋網(wǎng)絡(luò),并以此為基礎(chǔ),采用類SQL語言査找相關(guān)的節(jié)點(diǎn)子集合。為了解決上述技術(shù)問題,本發(fā)明的方法采用以下技術(shù)方案一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,包括按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類的步驟、構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)的步驟、基于領(lǐng)域分類網(wǎng)絡(luò)查詢節(jié)點(diǎn)子集合的步驟,其特征在于領(lǐng)域分類網(wǎng)絡(luò)是基于領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),其具體構(gòu)建步驟包括1)網(wǎng)絡(luò)起始節(jié)點(diǎn)設(shè)置其路由表內(nèi)容,并建立虛擬組,路由表內(nèi)容主要包括節(jié)點(diǎn)實(shí)體信息,所述實(shí)體信息包含節(jié)點(diǎn)ID和IP地址,其中節(jié)點(diǎn)ID為用戶名@域名,域名由幾級(jí)組成,各分級(jí)之間由圓點(diǎn)"."隔開,各分級(jí)均是具有領(lǐng)域分類含義的文字及字符,虛擬組根據(jù)領(lǐng)域分類含義劃分為分級(jí)的域,2)節(jié)點(diǎn)加入P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)根據(jù)分級(jí)的域加入領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)加入步驟具體如下a)節(jié)點(diǎn)A按領(lǐng)域確定要加入的虛擬組,并找到已加入此虛擬組的一個(gè)節(jié)點(diǎn);b)節(jié)點(diǎn)A向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)A實(shí)體信息的加入消息,此節(jié)點(diǎn)向該虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該加入消息;c)虛擬組每個(gè)節(jié)點(diǎn)將節(jié)點(diǎn)A的實(shí)體信息增加到自己的路由表中,同時(shí)向節(jié)點(diǎn)A發(fā)送包含自身節(jié)點(diǎn)實(shí)體信息的確認(rèn)消息,節(jié)點(diǎn)A將虛擬組每個(gè)節(jié)點(diǎn)的實(shí)體信息增加到自己的路由表中;d)判斷是否是根虛擬組或虛擬組中已有N個(gè)節(jié)點(diǎn)加入上層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)A加入步驟結(jié)束,若判斷結(jié)果否,則找到上一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟b)d)。2)節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò)。其中節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò)的步驟具體如下2a)離開節(jié)點(diǎn)B尋找到自己加入的最頂層虛擬組的一個(gè)節(jié)點(diǎn);2b)離開節(jié)點(diǎn)B向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)B實(shí)體信息的離開消息;此節(jié)點(diǎn)向虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該離開消息;2c)虛擬組每個(gè)節(jié)點(diǎn)從自己的路由表中將節(jié)點(diǎn)B實(shí)體信息刪除,同時(shí)向離開節(jié)點(diǎn)B發(fā)送確認(rèn)消息;2d)判斷是否是最底層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)B離開步驟結(jié)束,若判斷結(jié)果否,則找到下一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟2b)2d)。其中查詢節(jié)點(diǎn)子集合的步驟具體如下3a)用戶根據(jù)要査詢的領(lǐng)域,用類SQL語言編寫查詢語句;3b)用戶節(jié)點(diǎn)將查詢語句解析為目標(biāo)節(jié)點(diǎn)的目標(biāo)虛擬組域名,和本地SQL語句,并將其放入查詢消息中;3c)用戶節(jié)點(diǎn)通過查找其路由表,轉(zhuǎn)發(fā)查詢消息到更接近目標(biāo)虛擬組域名的鄰近節(jié)點(diǎn);3d)鄰近的節(jié)點(diǎn)通過查找其路由表,轉(zhuǎn)發(fā)査詢消息到更接近目標(biāo)虛擬組域名的節(jié)點(diǎn);3e)判斷是否是目標(biāo)虛擬組,若判斷結(jié)果是,則執(zhí)行下一步驟,若判斷結(jié)果否,則重復(fù)步驟3d)3e);3f)目標(biāo)虛擬組一節(jié)點(diǎn)C對(duì)目標(biāo)虛擬組的所有節(jié)點(diǎn)廣播查詢消息;3g)目標(biāo)虛擬組所有節(jié)點(diǎn)利用本地SQL語句,査找符合查詢條件的信息,并將查找結(jié)果返回給查詢消息廣播節(jié)點(diǎn)C,查詢消息廣播節(jié)點(diǎn)C整合査找結(jié)果,并發(fā)送到用戶節(jié)點(diǎn)。其中用類SQL語言編寫的查詢語句為SELECT{*Iexpr[[AS]c—alias]{,expr[[AS]c—alias]...}}FROMdomainref[WHEREsearch_condition];其中expr為節(jié)點(diǎn)的查詢目標(biāo)屬性列表達(dá)式,*代表査找所有屬性,[AS]c_alias為expr的別名,domainref為虛擬組域名,search—condition為SQL語言查詢語句中的條件表達(dá)式。本發(fā)明與現(xiàn)有技術(shù)相比具有以下有益效果本發(fā)明的方法采用綜合多倍的虛擬樹型結(jié)構(gòu)化網(wǎng)絡(luò)和隨機(jī)緩存的非結(jié)構(gòu)網(wǎng)絡(luò)來構(gòu)建P2P覆蓋網(wǎng)絡(luò),并以此為基礎(chǔ),采用類SQL語言查找相關(guān)的節(jié)點(diǎn)子集合,具有按復(fù)雜條件査詢大規(guī)模網(wǎng)絡(luò)環(huán)境下節(jié)點(diǎn)的優(yōu)點(diǎn),克服了集中式SIP應(yīng)用的單點(diǎn)失敗和通信瓶頸問題,同時(shí)克服了其他P2PSIP應(yīng)用不能按復(fù)雜條件查詢的缺點(diǎn)。圖l為本發(fā)明的總流程框圖;圖2為本發(fā)明構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)的流程圖;圖3為本發(fā)明査詢節(jié)點(diǎn)子集合的流程圖。具體實(shí)施例方式相關(guān)術(shù)語節(jié)點(diǎn)節(jié)點(diǎn)為參與多個(gè)虛擬分層組的計(jì)算機(jī),它具有屬性數(shù)據(jù)庫Database(PDB)和路由表。節(jié)點(diǎn)ID(PeerID):為層次式域名表示,例如Alice@music.popular.Britney.節(jié)點(diǎn)實(shí)體(PNE):節(jié)點(diǎn)實(shí)體指明節(jié)點(diǎn)ID(PeerID),IP地址等。路由表由許多節(jié)點(diǎn)實(shí)體組成。網(wǎng)關(guān)角色具有路由角色的節(jié)點(diǎn)擔(dān)任幾個(gè)不同層次的虛擬組的網(wǎng)關(guān)功能。8網(wǎng)關(guān)最上層(GUL):網(wǎng)關(guān)角色中最上層虛擬組在虛擬樹中的位置。虛擬組由節(jié)點(diǎn)組成。上層虛擬組由具有網(wǎng)關(guān)角色的節(jié)點(diǎn)組成。N倍虛擬組樹由虛擬組形成的樹。高層虛擬組由低層具有網(wǎng)關(guān)角色的每組N個(gè)節(jié)點(diǎn)組成。重復(fù)此過程,以形成虛擬樹。加入消息加入節(jié)點(diǎn)發(fā)送的消息,必須包括加入節(jié)點(diǎn)的實(shí)體信息。離開消息離開節(jié)點(diǎn)發(fā)送的消息,必須包括離開節(jié)點(diǎn)的實(shí)體信息。査詢消息用戶査詢時(shí)發(fā)送的消息,必須包括類SQL語句。參見圖l,本發(fā)明是一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,包括按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類的步驟、構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)的步驟、基于領(lǐng)域分類網(wǎng)絡(luò)査詢節(jié)點(diǎn)子集合的步驟。按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類就是按用戶的興趣劃分不同的領(lǐng)域,例如將音樂分為流行音樂和經(jīng)典音樂,參見圖2,領(lǐng)域分類網(wǎng)絡(luò)是基于領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),具體構(gòu)建步驟包括一、網(wǎng)絡(luò)起始節(jié)點(diǎn)設(shè)置其路由表內(nèi)容,并建立虛擬組,路由表內(nèi)容主要包括節(jié)點(diǎn)實(shí)體信息,實(shí)體信息包含節(jié)點(diǎn)ID和IP地址,其中節(jié)點(diǎn)ID為用戶名敏或名,域名的格式與域名系統(tǒng)(DNS)的格式一致,域名由幾級(jí)組成,各級(jí)之間由圓點(diǎn)"."隔開,各級(jí)均是具有領(lǐng)域分類含義的文字及字符,虛擬組根據(jù)領(lǐng)域分類含義劃分為分級(jí)的域,二、節(jié)點(diǎn)加入P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)根據(jù)分級(jí)的域加入領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)加入步驟具體如下a)節(jié)點(diǎn)A按領(lǐng)域確定要加入的虛擬組,并找到己加入此虛擬組的一個(gè)節(jié)點(diǎn);b)節(jié)點(diǎn)A向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)A實(shí)體信息的加入消息,此節(jié)點(diǎn)向該虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該加入消息;c)虛擬組每個(gè)節(jié)點(diǎn)將節(jié)點(diǎn)A的實(shí)體信息增加到自己的路由表中,同時(shí)向節(jié)點(diǎn)A發(fā)送包含自身節(jié)點(diǎn)實(shí)體信息的確認(rèn)消息,節(jié)點(diǎn)A將虛擬組每個(gè)節(jié)點(diǎn)的實(shí)體信息增加到自己的路由表中;d)判斷是否是根虛擬組或虛擬組中已有N個(gè)節(jié)點(diǎn)加入上層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)A加入步驟結(jié)束,若判斷結(jié)果否,則找到上一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟b)d)。三、節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò),具體步驟如下2a)離開節(jié)點(diǎn)B尋找到自己加入的最頂層虛擬組的一個(gè)節(jié)點(diǎn);2b)離開節(jié)點(diǎn)B向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)B實(shí)體信息的離開消息;此節(jié)點(diǎn)向虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該離開消息;2c)虛擬組每個(gè)節(jié)點(diǎn)從自己的路由表中將節(jié)點(diǎn)B實(shí)體信息刪除,同時(shí)向離開節(jié)點(diǎn)B發(fā)送確認(rèn)消息;2d)判斷是否是最底層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)B離開步驟結(jié)束,若判斷結(jié)果否,則找到下一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟2b)2d)。四、查詢節(jié)點(diǎn)子集合的步驟具體如下3a)用戶根據(jù)要查詢的領(lǐng)域,用類SQL語言編寫查詢語句;3b)用戶節(jié)點(diǎn)將査詢語句解析為目標(biāo)節(jié)點(diǎn)的目標(biāo)虛擬組域名,和本地SQL語句,并將其放入查詢消息中;3c)用戶節(jié)點(diǎn)通過査找其路由表,轉(zhuǎn)發(fā)查詢消息到更接近目標(biāo)虛擬組域名的鄰近節(jié)點(diǎn);3d)鄰近的節(jié)點(diǎn)通過查找其路由表,轉(zhuǎn)發(fā)查詢消息到更接近目標(biāo)虛擬組域名的節(jié)點(diǎn);3e)判斷是否是目標(biāo)虛擬組,若判斷結(jié)果是,則執(zhí)行下一步驟,若判斷結(jié)果否,則重復(fù)步驟3d)3e);3f)目標(biāo)虛擬組一節(jié)點(diǎn)C對(duì)目標(biāo)虛擬組的所有節(jié)點(diǎn)廣播查詢消息;3g)目標(biāo)虛擬組所有節(jié)點(diǎn)利用本地SQL語句,査找符合査詢條件的信息,并將查找結(jié)果返回給査詢消息廣播節(jié)點(diǎn)C,査詢消息廣播節(jié)點(diǎn)C整合查找結(jié)果,并發(fā)送到用戶節(jié)點(diǎn)。用類SQL語言編寫的查詢語句為SELECT{*|expr[[AS]c—alias]{,expr[[AS]c—alias]...}}FROMdomainref[WHEREsearch—condition];其中expr為節(jié)點(diǎn)的查詢的目標(biāo)屬性列表達(dá)式,例如peerID(節(jié)點(diǎn)屬性,意義為節(jié)點(diǎn)ID)、AVG(musictime)(在線每次欣賞音樂的平均時(shí)間,musictime為節(jié)點(diǎn)屬性,意義為每次欣賞音樂的時(shí)間,AVG為平均函數(shù)),*代表査找節(jié)點(diǎn)的所有屬性,例如,若節(jié)點(diǎn)屬性包括peerID、IP(IP地址)、Types(類型)等屬性,結(jié)果應(yīng)同時(shí)包括peerID、IP、Types等屬性列,[AS]c_alias為expr的別名,例如peerIDas節(jié)點(diǎn)ID,IPasIP地址,Typesas節(jié)點(diǎn)類型等,domainref為虛擬組域名,例如Brittany,popular,music,search—condition為SQL語言查詢語句中的條件表達(dá)式,例如types=,fan'ANDsex=,female'ANDage<40;,類SQL語言的査詢語句與SQL語言不同在于SQL語言中的FROM后面table改為domainref。例如查找所有的布萊特妮的粉絲的節(jié)點(diǎn)ID,IP地址,其虛擬組域名Brittany,popular,music;其類SQL語言的查詢語句為SELECTPeerID,IPFROMBrittany,popular,musicwheretypes=〃fan〃;査找布萊特妮虛擬組中的Alice的在線每次欣賞音樂的平均時(shí)間其類SQL語言的查詢語句為SELECTAVG(musictime)FROMBrittany,popular,musicWHEREPeerID二'Alice鵬rittany.popular,music';查找所有的布萊特妮的年齡小于40歲的女性粉絲的所有屬性其類SQL語言的査詢語句為SELECT氺FROMBrittany,popular,musicWHEREtypes二'fWANDsex='female'ANDage<40;下面以實(shí)例詳細(xì)說明構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)和査詢節(jié)點(diǎn)子集合的過程實(shí)施例1構(gòu)建全球音樂網(wǎng)絡(luò)按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類,例如將音樂分為流行音樂和經(jīng)典音樂。域名格式為音樂家.音樂類別.音樂。如-LiuHuan.Popular.Music或劉歡.流行音樂.音樂。構(gòu)建領(lǐng)域分類網(wǎng)絡(luò),歌唱家,音樂相關(guān)公司,經(jīng)紀(jì)人,消費(fèi)者,粉絲等加入相關(guān)虛擬組。所有用戶計(jì)算機(jī)作為節(jié)點(diǎn)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。節(jié)點(diǎn)ID為用戶名(S域名,如小李@劉歡.流行音樂.音樂。假設(shè)有用戶小李為劉歡的粉絲,其節(jié)點(diǎn)ID為小李0劉歡.流行音樂.音樂。所用的電腦IP地址為10.20.2.26;老王為劉歡的經(jīng)紀(jì)人,其節(jié)點(diǎn)ID為老王@劉歡.流行音樂.音樂。12所用的電腦IP地址為10.88.5.15;老張為貝多芬的經(jīng)紀(jì)人,其節(jié)點(diǎn)0)為老張@貝多芬.經(jīng)典音樂.音樂。所用的電腦IP地址為200.10.121.150;小趙為布萊特妮的消費(fèi)者,其節(jié)點(diǎn)ID為小趙@布萊特妮.流行音樂.音樂。所用的電腦IP地址為150.100.69.112;未來音像公司為劉歡音樂產(chǎn)品公司,其節(jié)點(diǎn)ID為未來音像公司@劉歡.流行音樂.音樂。所用的電腦IP地址為26.109.12.123;假設(shè)老王為建立網(wǎng)絡(luò)的第一人。按圖2,老王電腦為網(wǎng)絡(luò)起始節(jié)點(diǎn),設(shè)置其路由表內(nèi)容為其節(jié)點(diǎn)實(shí)體(節(jié)點(diǎn)10:老王@劉歡.流行音樂.音樂,IP地址10.88.5.15);建立劉歡虛擬組,上層的流行音樂虛擬組和音樂根虛擬組。小李加入網(wǎng)絡(luò)。小李按領(lǐng)域確定要加入的虛擬組為劉歡.流行音樂.音樂,并找到已加入劉歡虛擬組的一個(gè)節(jié)點(diǎn)老王。小李節(jié)點(diǎn)向老王節(jié)點(diǎn)發(fā)送包含小李實(shí)體信息(節(jié)點(diǎn)ID:小李Q劉歡.流行音樂.音樂,IP地址l0.20.2.26)的加入消息;老王節(jié)點(diǎn)向劉歡虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該加入消息(因此時(shí)只有老王本身一個(gè)節(jié)點(diǎn),故不轉(zhuǎn)發(fā));劉歡虛擬組每個(gè)節(jié)點(diǎn)(此時(shí)只有老王一個(gè)節(jié)點(diǎn))將小李節(jié)點(diǎn)的實(shí)體信息(節(jié)點(diǎn)ID:小李@劉歡.流行音樂.音樂,IP地址10.20.2.26)增加到自己的路由表中,同時(shí)向小李節(jié)點(diǎn)發(fā)送確認(rèn)消息。小李節(jié)點(diǎn)將虛擬組每個(gè)節(jié)點(diǎn)實(shí)體信息(節(jié)點(diǎn)10:老王@劉歡.流行音樂.音樂,IP地址10.88.5.15)增加到自己的路由表中。假設(shè)N為1,因已有l(wèi)個(gè)節(jié)點(diǎn)加入上層虛擬組(老王節(jié)點(diǎn)),節(jié)點(diǎn)加入結(jié)束。老張加入網(wǎng)絡(luò)。老張按領(lǐng)域確定要加入的虛擬組為貝多芬.經(jīng)典音樂.音樂,此時(shí)網(wǎng)絡(luò)還不存在貝多芬虛擬組和上層經(jīng)典音樂虛擬組;所以找到最相近的音樂虛擬組的一個(gè)節(jié)點(diǎn)老王。老張節(jié)點(diǎn)向老王節(jié)點(diǎn)發(fā)送加入消息(包含老張的實(shí)體信息);老王節(jié)點(diǎn)向音樂虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)加入消息(因此時(shí)只有一個(gè)節(jié)點(diǎn),故不轉(zhuǎn)發(fā));音樂組每個(gè)節(jié)點(diǎn)(老王)將老張節(jié)點(diǎn)的實(shí)體信息(節(jié)點(diǎn)ID:老張@貝多芬.經(jīng)典音樂.音樂,IP地址200.10.121.150)增加到自己的路由表中,同時(shí)向老張節(jié)點(diǎn)發(fā)送確認(rèn)消息(包含自身的節(jié)點(diǎn)信息,在此時(shí)只有老王一個(gè)節(jié)點(diǎn)信息)。老張節(jié)點(diǎn)將虛擬組每個(gè)節(jié)點(diǎn)實(shí)體信息(節(jié)點(diǎn)10:老王@劉歡.流行音樂.音樂,IP地址10.88.5.15)增加到自己的路由表中。并建立下層貝多芬和.經(jīng)典音樂虛擬組,節(jié)點(diǎn)加入結(jié)束。小趙加入網(wǎng)絡(luò)。小趙按領(lǐng)域確定要加入的虛擬組為布萊特妮.流行音樂.音樂,此時(shí)網(wǎng)絡(luò)還不存在布萊特妮虛擬組;所以找到最相近的流行音樂虛擬組的一個(gè)節(jié)點(diǎn)老王。小趙節(jié)點(diǎn)向老王節(jié)點(diǎn)發(fā)送加入消息(包含小趙的實(shí)體信息);老王節(jié)點(diǎn)向流行音樂虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)加入消息(因此時(shí)只有一個(gè)節(jié)點(diǎn),故不轉(zhuǎn)發(fā));音樂組每個(gè)節(jié)點(diǎn)(老王)將小趙節(jié)點(diǎn)的實(shí)體信息(節(jié)點(diǎn)ID:小趙@布萊特妮.流行音樂.音樂,IP地址150.100.69.112)增加到自己的路由表中,同時(shí)向小趙節(jié)點(diǎn)發(fā)送確認(rèn)消息。小趙節(jié)點(diǎn)將虛擬組每個(gè)節(jié)點(diǎn)實(shí)體信息(節(jié)點(diǎn)10:老王@劉歡.流行音樂.音樂,IP地址10.88.5.15)增加到自己的路由表中。并建立下層布萊特妮虛擬組,假設(shè)N為1,結(jié)束。未來音像公司加入網(wǎng)絡(luò)。未來音像公司按領(lǐng)域確定要加入的虛擬組為劉歡.流行音樂.音樂,并找到已加入劉歡虛擬組的一個(gè)節(jié)點(diǎn)小李。未來音像公司向小李節(jié)點(diǎn)發(fā)送加入消息(包含未來音像公司的實(shí)14體信息);小李節(jié)點(diǎn)向劉歡虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)加入消息(此時(shí)向老王節(jié)點(diǎn)轉(zhuǎn)發(fā));虛擬劉歡組每個(gè)節(jié)點(diǎn)(小李和老王)將未來音像公司節(jié)點(diǎn)的實(shí)體信息(節(jié)點(diǎn)ID:未來音像公司@劉歡.流行音樂.音樂,IP地址26.109.12.123)增加到自己的路由表中,同時(shí)向未來音像公司節(jié)點(diǎn)發(fā)送確認(rèn)消息。未來音像公司節(jié)點(diǎn)將虛擬組每個(gè)節(jié)點(diǎn)實(shí)體信息(節(jié)點(diǎn)10:老王@劉歡.流行音樂.音樂,IP地址-.10.88.5.15和小李@劉歡.流行音樂.音樂,IP地址10.20.2.26)增加到自己的路由表中。假設(shè)N為l,結(jié)束。小趙離開網(wǎng)絡(luò)。A)小趙節(jié)點(diǎn)尋找到自己加入的最頂層虛擬組(此時(shí)為流行音樂)的一個(gè)節(jié)點(diǎn)(老王)。小趙節(jié)點(diǎn)向此(老王)節(jié)點(diǎn)發(fā)送離開消息(包含小趙的實(shí)體信息);B)此節(jié)點(diǎn)向虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)離開消息(此時(shí),無其他節(jié)點(diǎn),故不轉(zhuǎn)發(fā))。C)虛擬組每個(gè)節(jié)點(diǎn)(老王)從自己的路由表中將離開節(jié)點(diǎn)小趙實(shí)體信息(節(jié)點(diǎn)ID:為小趙@布萊特妮.流行音樂.音樂,IP地址150.100.69.112)刪除,同時(shí)向離開節(jié)點(diǎn)小趙發(fā)送確認(rèn)消息。由于不是最底層虛擬組,虛擬組指向下層虛擬組布萊特妮,轉(zhuǎn)向步驟B),循環(huán)一次后,是最底層虛擬組,結(jié)束。查詢節(jié)點(diǎn)子集合査詢示例老張為貝多芬的經(jīng)紀(jì)人,但目前對(duì)劉歡感興趣。想查找所有劉歡的粉絲的所有屬性。按圖3,老張根據(jù)要査詢的主題,用類SQL語言編寫査詢語句。Select*from劉X允流行音樂.音樂wheretype="粉絲";老張節(jié)點(diǎn)將查詢語句解析為目標(biāo)節(jié)點(diǎn)的虛擬組域名劉歡.流行音樂.音樂,和本地SQLi吾句,select*fromPDBTablewheretype="粉絲";并將其放入查詢消息中。老張節(jié)點(diǎn)通過査找其路由表,轉(zhuǎn)發(fā)查詢消息到更接近目標(biāo)虛擬組域名的鄰近節(jié)點(diǎn)老王。此時(shí),老王就是目標(biāo)虛擬組劉歡的一個(gè)節(jié)點(diǎn)。老王節(jié)點(diǎn)對(duì)目標(biāo)虛擬組所有節(jié)點(diǎn)(包括小李和未來音像公司)廣播查詢消息。目標(biāo)虛擬組所有節(jié)點(diǎn)(包括老王、小李和未來音像公司)利用本地SQL語句,查找符合的信息,(在此,只有小李的屬性數(shù)據(jù)庫PDBTable中的類型為粉絲),并將結(jié)果返回給老王節(jié)點(diǎn)。老王節(jié)點(diǎn)整合結(jié)果,并發(fā)送到老張節(jié)點(diǎn)。實(shí)施例2構(gòu)建全球醫(yī)療咨詢網(wǎng)絡(luò)將疾病分類,建立相關(guān)的域名。醫(yī)生、病人、醫(yī)院、藥品生產(chǎn)和銷售公司、醫(yī)療設(shè)備生產(chǎn)和銷售公司等加入相關(guān)虛擬組。所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。查詢示例査找所有治療偏頭痛的中醫(yī)醫(yī)生的所有屬性,其虛擬組域名ChineseMedicalDoctor.Doctor;類SQL語言的查詢語句為Select*fromChineseMedicalDoctor.Doctor.Medicalwhereexpert="偏頭痛";實(shí)施例3構(gòu)建全球電子商務(wù)網(wǎng)絡(luò)將電子商務(wù)業(yè)務(wù)進(jìn)行分類。商務(wù)提供者、消費(fèi)者等加入相關(guān)虛擬組。所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。查詢示例查找杭州所有的三星級(jí)賓館的所有屬性。其虛擬組域名Zhejiang.China.Hotel.eComence;類SQL語言的査詢語句為Select*fromZhejiang.China.Hotel.eComencewhereplace二"Hangzhou,,andquality二"3star,,;實(shí)施例4構(gòu)建全球新媒體網(wǎng)絡(luò)將媒體進(jìn)行分類。媒體提供者、消費(fèi)者等加入相關(guān)虛擬組。所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。査詢示例査找所有的關(guān)于北京奧運(yùn)會(huì)相關(guān)新聞的作者的所有屬性。其虛擬組域名sports.newMedia;類SQL語言的查詢語句為Select*fromsports.newMediawheretopic="^s2'力V7《61/,;ic,,andtype="arthor,,;實(shí)施例5構(gòu)建全球多媒體網(wǎng)絡(luò)將多媒體進(jìn)行分類。多媒體提供者、消費(fèi)者等加入相關(guān)虛擬組,所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。査詢示例查找所有對(duì)中央10臺(tái)感興趣的觀眾的所有屬性。其虛擬組域名.-TV.咖ltiMedia;類SQL語言的査詢語句為SELECT*FROMTV.multiMediawheretypes二〃fan〃andTVchannel="CCTV10";實(shí)施例6構(gòu)建全球即時(shí)消息網(wǎng)絡(luò)-將用戶進(jìn)行分類。所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。用戶間直接進(jìn)行査找與連接。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。查詢示例查找所有年齡在20到30歲,地點(diǎn)在杭州的用戶的所有屬性。其虛擬組域名Zhejiang.IM;類SQL語言的査詢語句為SELECT*FROMZhejiang.IMwhereplace=〃Hangzhou〃andagebetween20and30;實(shí)施例7構(gòu)建全球IP電話網(wǎng)絡(luò)。將用戶進(jìn)行分類。所有用戶計(jì)算機(jī)按用戶域名建立領(lǐng)域的覆蓋網(wǎng)絡(luò)。用戶間直接進(jìn)行查找與連接。節(jié)點(diǎn)加入和離開覆蓋網(wǎng)絡(luò)的步驟依照實(shí)施例1所示。査詢示例査找在NewYork的alice電話的所有屬性。其虛擬組域名USA.IPPhone;類SQL語言的查詢語句為SELECT*FROMUSA.IPPhonewhereuser="alice"place二〃NewYork〃。18權(quán)利要求1、一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,包括按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類的步驟、構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)的步驟、基于領(lǐng)域分類網(wǎng)絡(luò)查詢節(jié)點(diǎn)子集合的步驟,其特征在于領(lǐng)域分類網(wǎng)絡(luò)是基于領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),其具體構(gòu)建步驟包括1)網(wǎng)絡(luò)起始節(jié)點(diǎn)設(shè)置其路由表內(nèi)容,并建立虛擬組,路由表內(nèi)容主要包括節(jié)點(diǎn)實(shí)體信息,所述實(shí)體信息包含節(jié)點(diǎn)ID和IP地址,其中節(jié)點(diǎn)ID為用戶名@域名,域名由幾級(jí)組成,各分級(jí)之間由圓點(diǎn)“.”隔開,各分級(jí)均是具有領(lǐng)域分類含義的文字及字符,虛擬組根據(jù)領(lǐng)域分類含義劃分為分級(jí)的域;2)節(jié)點(diǎn)加入P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)根據(jù)分級(jí)的域加入領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)加入步驟具體如下a)節(jié)點(diǎn)A按領(lǐng)域確定要加入的虛擬組,并找到已加入此虛擬組的一個(gè)節(jié)點(diǎn);b)節(jié)點(diǎn)A向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)A實(shí)體信息的加入消息,此節(jié)點(diǎn)向該虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該加入消息;c)虛擬組每個(gè)節(jié)點(diǎn)將節(jié)點(diǎn)A的實(shí)體信息增加到自己的路由表中,同時(shí)向節(jié)點(diǎn)A發(fā)送包含自身節(jié)點(diǎn)實(shí)體信息的確認(rèn)消息,節(jié)點(diǎn)A將虛擬組每個(gè)節(jié)點(diǎn)的實(shí)體信息增加到自己的路由表中;d)判斷是否是根虛擬組或虛擬組中已有N個(gè)節(jié)點(diǎn)加入上層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)A加入步驟結(jié)束,若判斷結(jié)果否,則找到上一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟b)~d)。2)節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò)。2、如權(quán)利要求1所述的一種基于P2P的査找有關(guān)節(jié)點(diǎn)子集合的方法,其特征在于其中節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò)的步驟具體如下2a)離開節(jié)點(diǎn)B尋找到自己加入的最頂層虛擬組的一個(gè)節(jié)點(diǎn);2b)離開節(jié)點(diǎn)B向此節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)B實(shí)體信息的離開消息;此節(jié)點(diǎn)向虛擬組所有其他節(jié)點(diǎn)轉(zhuǎn)發(fā)該離開消息;2c)虛擬組每個(gè)節(jié)點(diǎn)從自己的路由表中將節(jié)點(diǎn)B實(shí)體信息刪除,同時(shí)向離開節(jié)點(diǎn)B發(fā)送確認(rèn)消息;2d)判斷是否是最底層虛擬組,若判斷結(jié)果是,則節(jié)點(diǎn)B離開步驟結(jié)束,若判斷結(jié)果否,則找到下一層虛擬組的一個(gè)節(jié)點(diǎn),并重復(fù)步驟2b)2d)。3、如權(quán)利要求1或2所述的一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,其特征在于其中査詢節(jié)點(diǎn)子集合的步驟具體如下3a)用戶根據(jù)要査詢的領(lǐng)域,用類SQL語言編寫査詢語句;3b)用戶節(jié)點(diǎn)將査詢語句解析為目標(biāo)節(jié)點(diǎn)的目標(biāo)虛擬組域名,和本地SQL語句,并將其放入査詢消息中;3c)用戶節(jié)點(diǎn)通過查找其路由表,轉(zhuǎn)發(fā)査詢消息到更接近目標(biāo)虛擬組域名的鄰近節(jié)點(diǎn);3d)鄰近的節(jié)點(diǎn)通過查找其路由表,轉(zhuǎn)發(fā)査詢消息到更接近目標(biāo)虛擬組域名的節(jié)點(diǎn);3e)判斷是否是目標(biāo)虛擬組,若判斷結(jié)果是,則執(zhí)行下一步驟,若判斷結(jié)果否,則重復(fù)步驟3d)3e);3f)目標(biāo)虛擬組一節(jié)點(diǎn)C對(duì)目標(biāo)虛擬組的所有節(jié)點(diǎn)廣播查詢消息;3g)目標(biāo)虛擬組所有節(jié)點(diǎn)利用本地SQL語句,査找符合査詢條件的信息,并將査找結(jié)果返回給查詢消息廣播節(jié)點(diǎn)C,查詢消息廣播節(jié)點(diǎn)C整合査找結(jié)果,并發(fā)送到用戶節(jié)點(diǎn)。4、如權(quán)利要求3所述的一種基于P2P的査找有關(guān)節(jié)點(diǎn)子集合的方法,其特征在于其中用類SQL語言編寫的查詢語句為SELECT{*Iexpr[[AS]c—alias]{,expr[[AS]c—alias]...}}FROMdomainref[WHEREsearch_condition];其中expr為節(jié)點(diǎn)的查詢目標(biāo)屬性列表達(dá)式,*代表查找所有屬性,[AS]c—alias為expr的別名,domainref為虛擬組域名,search—condition為SQL語言査詢語句中的條件表達(dá)式。全文摘要本發(fā)明涉及一種基于P2P的查找有關(guān)節(jié)點(diǎn)子集合的方法,包括按用戶需求的主題領(lǐng)域建立網(wǎng)絡(luò)領(lǐng)域分類的步驟、構(gòu)建領(lǐng)域分類網(wǎng)絡(luò)的步驟、基于領(lǐng)域分類網(wǎng)絡(luò)查詢節(jié)點(diǎn)子集合的步驟,其特征在于領(lǐng)域分類網(wǎng)絡(luò)是基于領(lǐng)域的P2P覆蓋網(wǎng)絡(luò),其具體構(gòu)建步驟包括1)網(wǎng)絡(luò)起始節(jié)點(diǎn)設(shè)置其路由表內(nèi)容,并建立虛擬組,2)節(jié)點(diǎn)加入P2P覆蓋網(wǎng)絡(luò),3)節(jié)點(diǎn)離開P2P覆蓋網(wǎng)絡(luò)。本發(fā)明有益效果本發(fā)明的方法采用綜合多倍的虛擬樹型結(jié)構(gòu)化網(wǎng)絡(luò)和隨機(jī)緩存的非結(jié)構(gòu)網(wǎng)絡(luò)來構(gòu)建P2P覆蓋網(wǎng)絡(luò),并以此為基礎(chǔ),采用類SQL語言查找相關(guān)的節(jié)點(diǎn)子集合,具有按復(fù)雜條件查詢大規(guī)模網(wǎng)絡(luò)環(huán)境下節(jié)點(diǎn)的優(yōu)點(diǎn),克服了集中式SIP應(yīng)用的單點(diǎn)失敗和通信瓶頸問題,同時(shí)克服了其他P2PSIP應(yīng)用不能按復(fù)雜條件查詢的缺點(diǎn)。文檔編號(hào)H04L12/44GK101505272SQ20091009624公開日2009年8月12日申請(qǐng)日期2009年3月2日優(yōu)先權(quán)日2009年3月2日發(fā)明者黃理燦申請(qǐng)人:浙江理工大學(xué)