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