本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)檢索領(lǐng)域,具體地說是一種基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法。
背景技術(shù):
網(wǎng)絡(luò)服務(wù)搜索主要功能是檢索網(wǎng)絡(luò)提供的一些功能性服務(wù)。傳統(tǒng)的網(wǎng)絡(luò)搜索方式是采用集中式架構(gòu)UDDI注冊(cè)模型進(jìn)行服務(wù)搜索,隨著網(wǎng)絡(luò)服務(wù)數(shù)目迅速增加、不斷提高的實(shí)時(shí)性需求和服務(wù)搜索描述缺乏必需的語(yǔ)義信息,導(dǎo)致很難在查找和匹配過程中使用服務(wù)功能作為搜索元素,這導(dǎo)致了傳統(tǒng)搜索方式只能局限于關(guān)鍵字匹配,大大降低了網(wǎng)絡(luò)服務(wù)搜索效率和準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足,提供一種基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法,來解決傳統(tǒng)搜索方式只能局限于關(guān)鍵字匹配,大大降低網(wǎng)絡(luò)服務(wù)搜索的效率和準(zhǔn)確性的問題。
本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法,該方法是基于雙層環(huán)路由結(jié)構(gòu)的P2P網(wǎng)絡(luò)組織網(wǎng)絡(luò)服務(wù)的注冊(cè)節(jié)點(diǎn),綜合實(shí)際網(wǎng)絡(luò)中節(jié)點(diǎn)能力的差異,充分利用 P2P網(wǎng)絡(luò)中搜索和定位節(jié)點(diǎn)的動(dòng)態(tài)機(jī)制,用服務(wù)領(lǐng)域本體概念映射區(qū)間對(duì)注冊(cè)節(jié)點(diǎn)按其提供服務(wù)的類型進(jìn)行聚類,使特定領(lǐng)域的網(wǎng)絡(luò)服務(wù)的注冊(cè)與發(fā)現(xiàn)集中于雙層環(huán)結(jié)構(gòu)中外環(huán)少量的連續(xù)節(jié)點(diǎn)上,以顯著提高查詢效率。
作為優(yōu)選,所述雙層環(huán)路由結(jié)構(gòu)在由N個(gè)節(jié)點(diǎn)組成的單環(huán)結(jié)構(gòu)的Chord系統(tǒng)中,每個(gè)節(jié)點(diǎn)維護(hù)其他O(1ogN)個(gè)節(jié)點(diǎn)的信息,每次查找O(1ogN)條信息,保證在 O(1ogN)跳數(shù)內(nèi)定位對(duì)象,其跳數(shù)是邏輯跳數(shù)。
作為優(yōu)選,所述Chord系統(tǒng)采用均勻散列函數(shù)為每個(gè)節(jié)點(diǎn)和數(shù)據(jù)對(duì)象分配m位的全局惟一標(biāo)識(shí)符ID ,所有節(jié)點(diǎn)按節(jié)點(diǎn)從小到大順時(shí)針排列在一個(gè)大小為2m的環(huán)上,數(shù)據(jù)對(duì)象k被分配到環(huán)上順時(shí)針方向緊隨 k且包括與k相等的第一個(gè)節(jié)點(diǎn),其中,k是數(shù)據(jù)對(duì)象ID,該節(jié)點(diǎn)也稱為對(duì)象k的后繼,記做successor(k),其中,k是數(shù)據(jù)對(duì)象ID;每個(gè)Chord節(jié)點(diǎn)維護(hù)一個(gè)前驅(qū)節(jié)點(diǎn)指針predecessor和一個(gè)后繼節(jié)點(diǎn)successor指針及一個(gè)有m個(gè)表項(xiàng)的稱為指針表即finger表的路由表;節(jié)點(diǎn)n的finger表中第 i項(xiàng)指向節(jié)點(diǎn)s,s=successor(n+2i-1 ),1≤i≤m,因此,節(jié)點(diǎn)S是環(huán)上順時(shí)針方向到節(jié)點(diǎn)n的距離至少為2i-1的第一個(gè)節(jié)點(diǎn),記為n.finger[i],而n.finger[1]則是節(jié)點(diǎn)n的后繼節(jié)點(diǎn)n.successor;finger表中每一項(xiàng)既包含相關(guān)節(jié)點(diǎn)標(biāo)識(shí)符,又包含該節(jié)點(diǎn)的IP地址和端口號(hào)。
作為優(yōu)選,該方法還采取結(jié)合 One-hop路由與Chord路由的方法,引入超級(jí)節(jié)點(diǎn)來提高路由效率,構(gòu)造雙層環(huán)路由結(jié)構(gòu),并設(shè)計(jì)相應(yīng)的區(qū)間查詢定位和消息廣播算法,其中,雙層路由結(jié)構(gòu)包括雙層環(huán)的拓?fù)浣Y(jié)構(gòu)、雙層環(huán)路由表和雙層環(huán)路由的查找策略。
作為優(yōu)選,所述雙層環(huán)的拓?fù)浣Y(jié)構(gòu)是采用均勻散列函數(shù)為每個(gè)節(jié)點(diǎn)分配m位的全局惟一標(biāo)識(shí)符 ID,所有節(jié)點(diǎn)按節(jié)點(diǎn)ID從小到大順時(shí)針排列在外環(huán)上,將外環(huán)上所有超級(jí)節(jié)點(diǎn)相連接形成一個(gè)內(nèi)環(huán)。
作為優(yōu)選,所述雙層環(huán)路由表的構(gòu)造為:將節(jié)點(diǎn)分為普通節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn);普通節(jié)點(diǎn)在路由信息的處理上 ,繼承了Chord系統(tǒng)對(duì)路由信息的劃分,保留了Chord路由表的全部信息,只對(duì)路由表增加一項(xiàng)supernode指針,用來保存所屬超級(jí)節(jié)點(diǎn)的信息即節(jié)點(diǎn) ID以及IP地址;超級(jí)節(jié)點(diǎn)除了要構(gòu)建普通節(jié)點(diǎn)的路由表外,還要維護(hù)超級(jí)節(jié)點(diǎn)表super和成員表member,超級(jí)節(jié)點(diǎn)表 super用來保存所有超級(jí)節(jié)點(diǎn)的信息,成員表member用來保存當(dāng)前超級(jí)節(jié)點(diǎn)與它的前一相鄰超級(jí)節(jié)點(diǎn)間的所有普通節(jié)點(diǎn)信息。
作為優(yōu)選,所述雙層環(huán)路由的查找策略:節(jié)點(diǎn)P得到一個(gè)查詢請(qǐng)求 Q(key)時(shí),其中,key是對(duì)象 ID,若在它的finger表中未能找到相應(yīng)節(jié)點(diǎn),則將查詢請(qǐng)求Q轉(zhuǎn)發(fā)給它所在的超級(jí)節(jié)點(diǎn)Ns,Ns將在finger和member表中查詢;若超級(jí)節(jié)點(diǎn)Ns找到相應(yīng)目標(biāo)節(jié)點(diǎn),則將查詢結(jié)果返回;否則,它將查詢請(qǐng)求轉(zhuǎn)發(fā)給super表中大于key且距key最近的那個(gè)超級(jí)節(jié)點(diǎn)Nm;若超級(jí)節(jié)點(diǎn)Nm查詢失敗,則按照Chord系統(tǒng)基本路由協(xié)議進(jìn)行查詢 。
作為優(yōu)選,所述區(qū)間查詢定位算法如下:
對(duì)任意節(jié)點(diǎn)提交一個(gè)查詢定位請(qǐng)求Q(T),T是服務(wù)請(qǐng)求Q對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn)區(qū)間,將 Q(T)快速轉(zhuǎn)發(fā)定位到節(jié)點(diǎn)ID屬于T且節(jié)點(diǎn)ID最小的目標(biāo)注冊(cè)節(jié)點(diǎn)上;目標(biāo)節(jié)點(diǎn)區(qū)間T為[a,b],任意節(jié)點(diǎn)P對(duì)服務(wù)請(qǐng)求查詢定位操作為 Location(P,Q(T)),其轉(zhuǎn)發(fā)規(guī)則如下 :
(1)、若節(jié)點(diǎn)P是普通節(jié)點(diǎn),則當(dāng)節(jié)點(diǎn)P接收到查詢定位操作時(shí),分下面三種情況處理:
①、若 P=a,則將P作為結(jié)果返回,查詢定位操作結(jié)束;
②、若 P<a,且 P.successor≥a,則將 P.successor作為結(jié)果返回,查詢定位操作結(jié)束;
③、若 P> a,向P.supernode轉(zhuǎn)發(fā)查詢定位操作Location(P,Q(T)),如果超級(jí)節(jié)點(diǎn)查詢失敗,則P查詢finger表,向 finger表中小于a且距離a最近的節(jié)點(diǎn)轉(zhuǎn)發(fā)查淘定位操作 Location(P,Q(T));
(2)、若S為超級(jí)節(jié)點(diǎn),則當(dāng)節(jié)點(diǎn)S接收到查詢定位操作時(shí),分下面兩種情況處理:
①、若 S=a,則將P作為結(jié)果返回,查詢定位操作結(jié)束;
②、若 S≠a,則首先判斷a是否是S所屬成員,若是則查找 member表,找出第一個(gè)大于等于a的節(jié)點(diǎn)作為結(jié)果返回,查詢定位操作結(jié)束;若不是則查找super表,找出第一個(gè)大于等于a的超級(jí)節(jié)點(diǎn)S’,向S’轉(zhuǎn)發(fā)查詢定位請(qǐng)求;如果超級(jí)節(jié)點(diǎn)S’查詢失敗,則查找finger表,向 finger表中小于a且距離a最近的節(jié)點(diǎn)轉(zhuǎn)發(fā)查詢定位操作 Location(S’,Q(T))。
作為優(yōu)選,所述消息廣播算法如下:
從注冊(cè)節(jié)點(diǎn)所在目標(biāo)節(jié)點(diǎn)區(qū)間中最小ID的節(jié)點(diǎn)出發(fā)沿雙層環(huán)路由結(jié)構(gòu)的外環(huán)順時(shí)針方向給目標(biāo)節(jié)點(diǎn)區(qū)間中其他所有節(jié)點(diǎn)轉(zhuǎn)發(fā)消息的方法稱為區(qū)間消息廣播算法;設(shè)一個(gè)目標(biāo)節(jié)點(diǎn)區(qū)間T為[a,b ],P為區(qū)間內(nèi)最小節(jié)點(diǎn),區(qū)間消息廣播算法的規(guī)則如下 :
(1)、消息頭部包含信息源節(jié)點(diǎn)S的節(jié)點(diǎn)ID;
(2)、節(jié)點(diǎn)P接收到消息后,遍歷finger表,若a≤P.finger[i]≤b,則將P.finger[i]放入轉(zhuǎn)發(fā)候選節(jié)點(diǎn)集M中,1≤i≤m;
(3)、P向轉(zhuǎn)發(fā)候選節(jié)點(diǎn)集M中的所有節(jié)點(diǎn)轉(zhuǎn)發(fā)消息,設(shè)候選節(jié)點(diǎn)集M={M1,M2,…,Mk},當(dāng)1≤i≤k一1時(shí),P向Mi轉(zhuǎn)發(fā)查詢Q[Mi,min(Mi+l,b)];當(dāng)i=k時(shí),P向Mi轉(zhuǎn)發(fā)查詢 Q[Mi,min(Mi+l,b)];
(4)、若區(qū)間 T=[a,b]內(nèi)某個(gè)節(jié)點(diǎn)R接收到某個(gè)查詢Q[a1,b1](a≤a1,b1≤b)后遍歷finger表所得候選節(jié)點(diǎn)集M為空,則不再繼續(xù)往后繼節(jié)點(diǎn)轉(zhuǎn)發(fā)查詢。
本發(fā)明的基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法具有以下優(yōu)點(diǎn):
1、本發(fā)明與傳統(tǒng)服務(wù)搜索方法相比,能夠考慮實(shí)際網(wǎng)絡(luò)中節(jié)點(diǎn)能力的差異,充分利用 P2P網(wǎng)絡(luò)中搜索和定位節(jié)點(diǎn)的動(dòng)態(tài)機(jī)制,用服務(wù)領(lǐng)域本體概念映射區(qū)間對(duì)注冊(cè)節(jié)點(diǎn)按其提供服務(wù)的類型進(jìn)行聚類,使特定領(lǐng)域的網(wǎng)絡(luò)服務(wù)的注冊(cè)與發(fā)現(xiàn)集中于雙層環(huán)結(jié)構(gòu)中外環(huán)少量的連續(xù)節(jié)點(diǎn)上,以顯著提高查詢效率;
2、本發(fā)明采用的P2P(對(duì)等網(wǎng)絡(luò),即對(duì)等計(jì)算機(jī)網(wǎng)絡(luò))是一種在對(duì)等者(Peer)之間分配任務(wù)和工作負(fù)載的分布式應(yīng)用架構(gòu),是對(duì)等計(jì)算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式;P2P網(wǎng)絡(luò)模型具有對(duì)等性、分散性、獨(dú)立性,具有客戶端、服務(wù)器的角色,其與網(wǎng)絡(luò)服務(wù)的結(jié)合有效地解決傳統(tǒng)網(wǎng)絡(luò)服務(wù)的瓶頸和單點(diǎn)失效的問題P2P系統(tǒng)性能的主要決定因素是系統(tǒng)的網(wǎng)絡(luò)拓?fù)浜吐酚蓞f(xié)議;分布式哈希表(DHT)具有擴(kuò)展性和容錯(cuò)性,采用分布式哈希表技術(shù)進(jìn)行資源組織、管理 與服務(wù)發(fā)現(xiàn)成為結(jié)構(gòu)化P2P網(wǎng)絡(luò) (如 Chord、CAN、Pastry、Tapestry系統(tǒng))的主流方法;本發(fā)明在基于 P2P環(huán)境和語(yǔ)義的網(wǎng)絡(luò)服務(wù)發(fā)現(xiàn)基礎(chǔ)上,以獲得高性能的網(wǎng)絡(luò)服務(wù)發(fā)現(xiàn)為目標(biāo),引入超級(jí)節(jié)點(diǎn),結(jié)合One—hop路由和Chord路由機(jī)制,構(gòu)造了一種雙層環(huán)結(jié)路由結(jié)構(gòu) ,并設(shè)計(jì)相應(yīng)的區(qū)間查詢定位和消息廣播算法,大大提高了網(wǎng)絡(luò)服務(wù)效率和準(zhǔn)確性。
本發(fā)明具有設(shè)計(jì)合理、結(jié)構(gòu)簡(jiǎn)單、使用方便、一物多用等特點(diǎn),因而,具有很好的推廣使用價(jià)值。
附圖說明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說明。
附圖1為雙層環(huán)網(wǎng)絡(luò)拓?fù)涫疽鈭D;
附圖2為節(jié)點(diǎn)路由表;
附圖3為外環(huán)映射關(guān)系示意圖。
具體實(shí)施方式
參照說明書附圖和具體實(shí)施例對(duì)本發(fā)明的基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法作以下詳細(xì)地說明。
實(shí)施例1:
本發(fā)明的基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法, 基于P2P網(wǎng)絡(luò)的雙層環(huán)狀路由結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)搜索方法,該方法是基于雙層環(huán)路由結(jié)構(gòu)的P2P網(wǎng)絡(luò)組織網(wǎng)絡(luò)服務(wù)的注冊(cè)節(jié)點(diǎn),綜合實(shí)際網(wǎng)絡(luò)中節(jié)點(diǎn)能力的差異,充分利用 P2P網(wǎng)絡(luò)中搜索和定位節(jié)點(diǎn)的動(dòng)態(tài)機(jī)制,用服務(wù)領(lǐng)域本體概念映射區(qū)間對(duì)注冊(cè)節(jié)點(diǎn)按其提供服務(wù)的類型進(jìn)行聚類,使特定領(lǐng)域的網(wǎng)絡(luò)服務(wù)的注冊(cè)與發(fā)現(xiàn)集中于雙層環(huán)結(jié)構(gòu)中外環(huán)少量的連續(xù)節(jié)點(diǎn)上,以顯著提高查詢效率。雙層環(huán)路由結(jié)構(gòu)在由N個(gè)節(jié)點(diǎn)組成的單環(huán)結(jié)構(gòu)的Chord系統(tǒng)中,每個(gè)節(jié)點(diǎn)維護(hù)其他O(1ogN)個(gè)節(jié)點(diǎn)的信息,每次查找O(1ogN)條信息,保證在 O(1ogN)跳數(shù)內(nèi)定位對(duì)象,其跳數(shù)是邏輯跳數(shù)。Chord系統(tǒng)采用均勻散列函數(shù)為每個(gè)節(jié)點(diǎn)和數(shù)據(jù)對(duì)象分配m位的全局惟一標(biāo)識(shí)符ID ,所有節(jié)點(diǎn)按節(jié)點(diǎn)從小到大順時(shí)針排列在一個(gè)大小為2m的環(huán)上,數(shù)據(jù)對(duì)象k被分配到環(huán)上順時(shí)針方向緊隨 k且包括與k相等的第一個(gè)節(jié)點(diǎn),其中,k是數(shù)據(jù)對(duì)象ID,該節(jié)點(diǎn)也稱為對(duì)象k的后繼,記做successor(k),其中,k是數(shù)據(jù)對(duì)象ID;每個(gè)Chord節(jié)點(diǎn)維護(hù)一個(gè)前驅(qū)節(jié)點(diǎn)指針predecessor和一個(gè)后繼節(jié)點(diǎn)successor指針及一個(gè)有m個(gè)表項(xiàng)的稱為指針表即finger表的路由表;節(jié)點(diǎn)n的finger表中第 i項(xiàng)指向節(jié)點(diǎn)s,s=successor(n+2i-1 ),1≤i≤m,因此,節(jié)點(diǎn)S是環(huán)上順時(shí)針方向到節(jié)點(diǎn)n的距離至少為2i-1的第一個(gè)節(jié)點(diǎn),記為n.finger[i],而n.finger[1]則是節(jié)點(diǎn)n的后繼節(jié)點(diǎn)n.successor;finger表中每一項(xiàng)既包含相關(guān)節(jié)點(diǎn)標(biāo)識(shí)符,又包含該節(jié)點(diǎn)的IP地址和端口號(hào)。
本發(fā)明Chord系統(tǒng)對(duì)節(jié)點(diǎn)加入、退出(失效)頻繁的網(wǎng)絡(luò)能以相對(duì)較小的代價(jià)得到高的查詢效率,但是對(duì)節(jié)點(diǎn)狀態(tài)相對(duì)穩(wěn)定的網(wǎng)絡(luò)來說本發(fā)明的查詢代價(jià)過大。通過引入超級(jí)節(jié)點(diǎn),構(gòu)造一種雙層環(huán)路由算法來自動(dòng)適應(yīng)不同的網(wǎng)絡(luò)波動(dòng)以提高查詢效率。此外,由于本發(fā)明沒有考慮實(shí)際網(wǎng)絡(luò)中節(jié)點(diǎn)傳輸帶寬、存儲(chǔ)容量和對(duì)等節(jié)點(diǎn)的計(jì)算能力及在線時(shí)間,導(dǎo)致網(wǎng)絡(luò)中相對(duì)穩(wěn)定且能力較強(qiáng)的節(jié)點(diǎn)(稱為超級(jí)節(jié)點(diǎn))未能有效發(fā)揮作用。另一方面,每個(gè)節(jié)點(diǎn)維護(hù)有限的成員關(guān)系信息,它雖然不必維護(hù)所有節(jié)點(diǎn)的路由就能有效地解決節(jié)點(diǎn)加入、退出頻繁時(shí)節(jié)點(diǎn)路由表維護(hù)代價(jià)過大的問題,但它是以增加延時(shí)為代價(jià)的。考慮實(shí)際網(wǎng)絡(luò)中節(jié)點(diǎn)能力的差異,超級(jí)節(jié)點(diǎn)具有更高的可靠性和更低的延時(shí),如果讓超級(jí)節(jié)點(diǎn)分擔(dān)較多的負(fù)擔(dān),采用一定的策略,在節(jié)點(diǎn)加人、退出頻繁程度不斷變化的網(wǎng)絡(luò)下,既能保持查找率又能使延時(shí)盡量少。
該方法還采取結(jié)合 One-hop路由與Chord路由的方法,引入超級(jí)節(jié)點(diǎn)來提高路由效率,構(gòu)造雙層環(huán)路由結(jié)構(gòu),并設(shè)計(jì)相應(yīng)的區(qū)間查詢定位和消息廣播算法,其中,雙層路由結(jié)構(gòu)包括雙層環(huán)的拓?fù)浣Y(jié)構(gòu)、雙層環(huán)路由表和雙層環(huán)路由的查找策略。
如附圖1所示,雙層環(huán)的拓?fù)浣Y(jié)構(gòu):以2m為模,是采用均勻散列函數(shù)為每個(gè)節(jié)點(diǎn)分配m位的全局惟一標(biāo)識(shí)符 ID,所有節(jié)點(diǎn)按節(jié)點(diǎn)ID從小到大順時(shí)針排列在一個(gè)大小為2m的環(huán)(稱為外環(huán))上,將外環(huán)上所有超級(jí)節(jié)點(diǎn)相連接形成一個(gè)內(nèi)環(huán)。
如附圖2所示,雙層環(huán)路由表的構(gòu)造為:將節(jié)點(diǎn)分為普通節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn);普通節(jié)點(diǎn)在路由信息的處理上 ,繼承了Chord系統(tǒng)對(duì)路由信息的劃分,保留了Chord路由表的全部信息,只對(duì)路由表增加一項(xiàng)supernode指針,用來保存所屬超級(jí)節(jié)點(diǎn)的信息即節(jié)點(diǎn) ID以及IP地址;超級(jí)節(jié)點(diǎn)除了要構(gòu)建普通節(jié)點(diǎn)的路由表外,還要維護(hù)超級(jí)節(jié)點(diǎn)表super和成員表member,超級(jí)節(jié)點(diǎn)表 super用來保存所有超級(jí)節(jié)點(diǎn)的信息,成員表member用來保存當(dāng)前超級(jí)節(jié)點(diǎn)與它的前一相鄰超級(jí)節(jié)點(diǎn)間的所有普通節(jié)點(diǎn)信息。
雙層環(huán)路由的查找策略:節(jié)點(diǎn)P得到一個(gè)查詢請(qǐng)求 Q(key)時(shí),其中,key是對(duì)象 ID,若在它的finger表中未能找到相應(yīng)節(jié)點(diǎn),則將查詢請(qǐng)求Q轉(zhuǎn)發(fā)給它所在的超級(jí)節(jié)點(diǎn)Ns,Ns將在finger和member表中查詢;若超級(jí)節(jié)點(diǎn)Ns找到相應(yīng)目標(biāo)節(jié)點(diǎn),則將查詢結(jié)果返回;否則,它將查詢請(qǐng)求轉(zhuǎn)發(fā)給super表中大于key且距key最近的那個(gè)超級(jí)節(jié)點(diǎn)Nm;若超級(jí)節(jié)點(diǎn)Nm查詢失敗,則按照Chord系統(tǒng)基本路由協(xié)議進(jìn)行查詢 。
網(wǎng)絡(luò)服務(wù)搜索方法的設(shè)計(jì)思想是:讓雙層環(huán)網(wǎng)絡(luò)中每個(gè)注冊(cè)節(jié)點(diǎn)僅負(fù)責(zé)某個(gè)服務(wù)類別的網(wǎng)絡(luò)服務(wù)注冊(cè)與發(fā)現(xiàn),將提供同類型服務(wù)的注冊(cè)節(jié)點(diǎn)進(jìn)行聚類,使提供相同類型服務(wù)的注冊(cè)節(jié)點(diǎn)鄰接相連分布在雙層環(huán)外環(huán)某段弧上,在進(jìn)行網(wǎng)絡(luò)服務(wù)發(fā)現(xiàn)時(shí),根據(jù)所需服務(wù)的類型在相應(yīng)弧上的注冊(cè)節(jié)點(diǎn)中進(jìn)行查詢。引入本體來描述服務(wù)領(lǐng)域(本體是用于描述或表達(dá)某一領(lǐng)域知識(shí)的一組概念或術(shù)語(yǔ),它給出了領(lǐng)域?qū)嶓w概念及相互關(guān)系、領(lǐng)域活動(dòng)以及該領(lǐng)域所具有的特性和規(guī)律的一種形式化描述,為語(yǔ)義網(wǎng)絡(luò)提供了相關(guān)領(lǐng)域的共同理解和統(tǒng)一的語(yǔ)義規(guī)范)。本體中每個(gè)概念描述一個(gè)服務(wù)領(lǐng)域,表示一類實(shí)例的集合,它的子類概念分別表示某個(gè)具體的服務(wù)概念,是它所涵蓋實(shí)例集合的子集。將服務(wù)領(lǐng)域本體的所有概念映射到數(shù)軸上,每個(gè)概念被映射到一個(gè)整數(shù)區(qū)間 ,它的子類概念被映射到它的一個(gè)子區(qū)間。同一個(gè)概念的所有子類概念對(duì)應(yīng)的區(qū)間是互不相交的且它們的并集等于這個(gè)概念對(duì)應(yīng)區(qū)間。注冊(cè)節(jié)點(diǎn)的連接采用模為2的雙層環(huán)結(jié)構(gòu)實(shí)現(xiàn),所有概念對(duì)應(yīng)的區(qū)間的并集等于[0,2m-1]。某個(gè)概念C對(duì)應(yīng)的區(qū)間T為[a,b],稱T為概念C的目標(biāo)節(jié)點(diǎn)區(qū)間。若節(jié)點(diǎn)n滿足a≤n≤b,則稱節(jié)點(diǎn)是概念C的一個(gè)注冊(cè)節(jié)點(diǎn) ,概念C的所有注冊(cè)節(jié)點(diǎn)共同提供該概念對(duì)應(yīng)領(lǐng)域的服務(wù)發(fā)布和檢索。如附圖3所示,概念“Sell”映射到整數(shù)區(qū)間[19,24],該分類區(qū)間的服務(wù)發(fā)布和檢索由節(jié)點(diǎn)N20和N22提供。
區(qū)間查詢定位算法如下:對(duì)任意節(jié)點(diǎn)提交一個(gè)查詢定位請(qǐng)求Q(T),T是服務(wù)請(qǐng)求Q對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn)區(qū)間,將 Q(T)快速轉(zhuǎn)發(fā)定位到節(jié)點(diǎn)ID屬于T且節(jié)點(diǎn)ID最小的目標(biāo)注冊(cè)節(jié)點(diǎn)上;目標(biāo)節(jié)點(diǎn)區(qū)間T為[a,b],任意節(jié)點(diǎn)P對(duì)服務(wù)請(qǐng)求查詢定位操作為 Location(P,Q(T)),其轉(zhuǎn)發(fā)規(guī)則如下 :
(1)、若節(jié)點(diǎn)P是普通節(jié)點(diǎn),則當(dāng)節(jié)點(diǎn)P接收到查詢定位操作時(shí),分下面三種情況處理:
①、若 P=a,則將P作為結(jié)果返回,查詢定位操作結(jié)束;
②、若 P<a,且 P.successor≥a,則將 P.successor作為結(jié)果返回,查詢定位操作結(jié)束;
③、若 P> a,向P.supernode轉(zhuǎn)發(fā)查詢定位操作Location(P,Q(T)),如果超級(jí)節(jié)點(diǎn)查詢失敗,則P查詢finger表,向 finger表中小于a且距離a最近的節(jié)點(diǎn)轉(zhuǎn)發(fā)查淘定位操作 Location(P,Q(T));
(2)、若S為超級(jí)節(jié)點(diǎn),則當(dāng)節(jié)點(diǎn)S接收到查詢定位操作時(shí),分下面兩種情況處理:
①、若 S=a,則將P作為結(jié)果返回,查詢定位操作結(jié)束;
②、若 S≠ a,則首先判斷a是否是S所屬成員,若是則查找 member表,找出第一個(gè)大于等于a的節(jié)點(diǎn)作為結(jié)果返回,查詢定位操作結(jié)束;若不是則查找super表,找出第一個(gè)大于等于a的超級(jí)節(jié)點(diǎn)S’,向S’轉(zhuǎn)發(fā)查詢定位請(qǐng)求;如果超級(jí)節(jié)點(diǎn)S’查詢失敗,則查找finger表,向 finger表中小于a且距離a最近的節(jié)點(diǎn)轉(zhuǎn)發(fā)查詢定位操作 Location(S’,Q(T))。
消息廣播算法如下:從注冊(cè)節(jié)點(diǎn)所在目標(biāo)節(jié)點(diǎn)區(qū)間中最小ID的節(jié)點(diǎn)出發(fā)沿雙層環(huán)路由結(jié)構(gòu)的外環(huán)順時(shí)針方向給目標(biāo)節(jié)點(diǎn)區(qū)間中其他所有節(jié)點(diǎn)轉(zhuǎn)發(fā)消息的方法稱為區(qū)間消息廣播算法;設(shè)一個(gè)目標(biāo)節(jié)點(diǎn)區(qū)間T為[a,b ],P為區(qū)間內(nèi)最小節(jié)點(diǎn),區(qū)間消息廣播算法的規(guī)則如下 :
(1)、消息頭部包含信息源節(jié)點(diǎn)S的節(jié)點(diǎn)ID;
(2)、節(jié)點(diǎn)P接收到消息后,遍歷finger表,若a≤P.finger[i]≤b,則將P.finger[i]放入轉(zhuǎn)發(fā)候選節(jié)點(diǎn)集M中,1≤i≤m;
(3)、P向轉(zhuǎn)發(fā)候選節(jié)點(diǎn)集M中的所有節(jié)點(diǎn)轉(zhuǎn)發(fā)消息,設(shè)候選節(jié)點(diǎn)集M={M1,M2,…,Mk},當(dāng)1≤i≤k一1時(shí),P向Mi轉(zhuǎn)發(fā)查詢Q[Mi,min(Mi+l,b)];當(dāng)i=k時(shí),P向Mi轉(zhuǎn)發(fā)查詢 Q[Mi,min(Mi+l,b)];
(4)、若區(qū)間 T=[a,b]內(nèi)某個(gè)節(jié)點(diǎn)R接收到某個(gè)查詢Q[a1,b1](a≤a1,b1≤b)后遍歷finger表所得候選節(jié)點(diǎn)集M為空,則不再繼續(xù)往后繼節(jié)點(diǎn)轉(zhuǎn)發(fā)查詢。如附圖3所示的是區(qū)間[0,23]內(nèi)消息廣播的過程,整個(gè)消息在分類區(qū)間節(jié)點(diǎn)中的傳播過程呈樹狀結(jié)構(gòu)。
節(jié)點(diǎn)進(jìn)行服務(wù)查詢時(shí),必須提供所需服務(wù)的類型信息。當(dāng)一個(gè)服務(wù)查詢請(qǐng)求Q提交到任意注冊(cè)節(jié)點(diǎn)P時(shí),節(jié)點(diǎn)P首先將查詢請(qǐng)求類型信息映射到對(duì)應(yīng)的服務(wù)領(lǐng)域本體的概念,取得相應(yīng)的目標(biāo)節(jié)點(diǎn)區(qū)間T發(fā)出查詢定位操作Location(P,Q(T)),使用查詢區(qū)間定位算法將查詢請(qǐng)求轉(zhuǎn)發(fā)給T中節(jié)點(diǎn)最小的注冊(cè)節(jié)點(diǎn)U,節(jié)點(diǎn) U再通過區(qū)間消息廣播算法,將查詢請(qǐng)求轉(zhuǎn)發(fā)到T中的所有節(jié)點(diǎn)。所有接收到查詢請(qǐng)求的節(jié)點(diǎn),在本地進(jìn)行服務(wù)匹配并將結(jié)果沿查詢請(qǐng)求轉(zhuǎn)發(fā)路徑返回給P。服務(wù)的發(fā)布過程與發(fā)現(xiàn)過程類似,目標(biāo)注冊(cè)節(jié)點(diǎn)區(qū)間中的所有節(jié)點(diǎn)接到發(fā)布請(qǐng)求后將自身負(fù)載情況返回給請(qǐng)求節(jié)點(diǎn),請(qǐng)求節(jié)點(diǎn)根據(jù)返回的信息選擇負(fù)載最小的節(jié)點(diǎn)進(jìn)行服務(wù)發(fā)布。
通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的一種具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。