基于P2P网络的双层环状路由结构的网络服务搜索方法与流程

文档序号:11960444阅读:448来源:国知局
基于P2P网络的双层环状路由结构的网络服务搜索方法与流程

本发明涉及计算机网络服务检索领域,具体地说是一种基于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。服务的发布过程与发现过程类似,目标注册节点区间中的所有节点接到发布请求后将自身负载情况返回给请求节点,请求节点根据返回的信息选择负载最小的节点进行服务发布。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的一种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1