CN100591028C - 一种基于集中服务的分布式对等网络的实现方法及系统 - Google Patents
一种基于集中服务的分布式对等网络的实现方法及系统 Download PDFInfo
- Publication number
- CN100591028C CN100591028C CN200710175874A CN200710175874A CN100591028C CN 100591028 C CN100591028 C CN 100591028C CN 200710175874 A CN200710175874 A CN 200710175874A CN 200710175874 A CN200710175874 A CN 200710175874A CN 100591028 C CN100591028 C CN 100591028C
- Authority
- CN
- China
- Prior art keywords
- node
- peer
- neighbor
- immediate neighbor
- immediate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种基于集中服务的分布式对等网络及构造方法,该方法包括:(1)为对等网络配置一个集中服务器,该服务器用来为新节点加入对等网络以及对等网络中的节点退出提供服务,并为服务器定义B+树的数据结构用于存储动态变化节点的信息;(2)新节点经集中服务器查找其直接邻居或从对等节点出发在虚链路中查找其直接邻居,加入对等网络;(3)边界节点(其前驱或后继直接邻居退出的对等节点)经集中服务器查找其直接前驱或后继邻居,或从该节点出发在虚链路中查找其直接前驱或后继邻居,使得对等节点之间准持环状拓扑。本发明将集中服务融合在分布式对等网络中,明显降低了因节点的频繁加入和退出造成的网络波动,显著提高了对等网络的工作效率。
Description
技术领域
本发明属于网络与通信技术领域,具体涉及一种基于集中服务的分布式对等网络的实现方法及系统。
背景技术
随着网络规模的不断扩大,网络用户数量的迅速增长,传统的客户端/服务器模式面临着过量存储负载、单点失效、网络带宽限制等一些难以解决的问题。为了解决这些问题,分布式对等网络技术得到了快速发展。对等网络(P2P-Peer-to-Peer)是一种点对点的分布式网络系统,共享资源分布在各个对等节点中,资源共享在各对等节点之间直接进行。
在对等网络中,对等节点之间的组织方式在很大程度上决定着对等网络的性能,对等节点之间的组织方式按照提出的先后分别为:(1)采用集中式的组织方式,资源的发现依赖于目录服务器,以著名的MP3共享软件Napster为代表;(2)采用随机图的组织方式,对等节点之间结构松散,资源的发现以泛洪方式进行,以Gnutella模型为代表;(3)采用某种特定结构的组织方式,如采用Torus结构的CAN系统,采用Plaxton Tree结构的Tapestry和Pastry系统,以及采用Ring结构的Chord系统,资源的发现借助于分布式Hash表(DHT)。采用特定结构的组织方式使得对等网络的性能大幅度提升,同时也带来了新的亟待解决的问题:为了维护对等节点之间的某种特定结构使得维护开销相当可观,特别是在大规模和节点加入退出频繁的网络环境下,会造成严重的网络波动问题。
本发明提出一种基于集中服务的分布式对等网络的构造方法,在对等网络中引入集中服务器,对等网络采用轮状结构组织方式,对等节点之间采用环状结构组织方式。集中服务器为节点的加入、退出对等网络提供集中服务,对等节点可以通过集中服务器查找自己的邻居节点,这样降低了对等节点之间维护邻居关系的开销,使网络波动得到有效控制,避免了对等节点孤岛的出现。对等节点之间维护适当数量的邻居关系,这样既减轻了集中服务器的负担,又能够在一定程度上解决服务器单点失效问题。
发明内容
本发明的目的在于提供一种基于集中服务的分布式对等网络及构造方法,以解决节点频繁加入、退出对等网络造成的网络波动问题,特别适用于大规模对等网络,提高对等网络工作效率。
步骤1,为所述对等网络配置一个集中服务器,为服务器定义B+树数据结构用于存储动态变化的对等节点的信息,节点的信息至少包括节点的唯一身份标识ID,节点的通信地址IP和建立通信连接的端口Port,节点上次通告集中服务器存活信息的时间Time,以及节点的存活状态标志Flag。
步骤2,新节点加入对等网络执行以下步骤:
2.1新节点向集中服务器发送加入对等网络请求,如果集中服务器不能提供集中服务,执行2.2,否则,执行以下步骤:
2.1.1集中服务器在自身维护的B+树结构中查找新节点ID在B+树中的插入位置,找到后存储新节点信息,并将新节点的ID和存储新节点信息的指针插入到该位置;
2.1.2集中服务器在自身维护的B+树结构中查找新节点的直接邻居的信息,找到后将直接邻居的信息返回给新节点;
2.1.3执行2.3,即新节点与其直接邻居建立邻居关系加入对等网络。
2.2新节点获取当前已加入对等网络的任一对等节点,如果未能获得对等节点,新节点加入失败返回,否则,执行以下步骤:
2.2.1执行步骤3,即从对等节点出发在虚链路中查找新节点的直接邻居;
2.2.2如果找到新节点的直接邻居,执行2.3,即新节点与其直接邻居建立邻居关系加入对等网络,否则,新节点加入失败返回。
2.3新节点与其直接邻居建立邻居关系加入对等网络,具体步骤如下:
2.3.1新节点根据已获得的直接邻居的信息请求与之建立直接邻居关系;
2.3.2直接邻居接收到新节点发出的请求建立直接邻居关系信息后,验证新节点是否为其直接邻居,如果通过验证,修改邻居信息表中直接邻居的信息条目,返回建立直接邻居关系成功信息给新节点,否则,新节点加入失败返回;
2.3.3新节点接收到建立直接邻居关系成功信息后,修改自己邻居信息表中相应的直接邻居信息条目;
2.3.4重复2.3.1-2.3.3步骤,直到新节点与其直接前驱邻居和直接后继邻居都建立直接邻居关系;
2.3.5新节点负责向集中服务器通告加入对等网络成功信息。
步骤3,在不提供集中服务的情况下,从对等节点出发在虚链路中查找新节点的直接邻居,具体步骤如下:
3.1将查找出发的对等节点作为当前节点,在当前节点维护的主邻居列表中查找新节点的直接邻居,如果找到新节点的直接邻居,将新节点的直接邻居的信息返回给新节点,查找结束返回,否则,继续执行;
3.2执行3.4,即在当前节点的次邻居列表中查找距离新节点最近的已加入对等网络的对等节点,如果找到,将其作为新的查找出发节点,转到执行3.1,否则,置当前节点的主邻居列表中距离新节点最近的对等节点为新的查找出发节点,转到执行3.1;
3.3直到查找跳数(Hops)溢出为止。
3.4在当前节点的次邻居列表中查找距离新节点最近的已加入对等网络的对等节点,具体步骤如下:
3.4.1在当前节点维护的次邻居列表中除去在主邻居列表范围内的节点,余留节点列表为查找范围;
3.4.2如果新节点ID在查找范围内最小ID和最大ID之间,执行以下步骤:
(1)依折半查找方法查找新节点ID在查找范围的插入位置;
(2)从新节点插入位置的前后两个节点起按照距离新节点由小至大的顺序逐个进行连接检测,查找当前已加入对等网络的对等节点;
3.4.3否则,从查找范围的ID最小节点和ID最大节点起由按照距离新节点由小至大的顺序逐个进行连接检测,查找当前已加入对等网络的对等节点。
步骤4,对等网络内单个节点退出或连续多个节点并发退出,执行以下步骤:
4.1对等网络内退出节点分别向集中服务器和自己维护的邻居信息表的主邻居列表中的直接邻居发送退出对等网络信息;
4.2收到节点退出信息的集中服务器,如果正常运行,在自己维护的B+树结构中根据退出节点ID查找到退出节点,并在节点信息中置退出标志;
4.3将收到节点退出信息的对等节点作为边界节点,边界节点在其维护的主邻居列表的退出节点所在前驱或后继区域中依从上到下的顺序逐个连接检测节点的存活状态,如果边界节点在其主邻居列表的退出节点所在区域中检测到存活节点,此节点为边界节点的直接邻居,执行步骤6,即边界节点与其直接邻居建立直接邻居关系,否则,继续执行;
4.4如果集中服务器不能提供集中服务,执行4.5,否则,执行以下步骤:
4.4.1边界节点向集中服务器请求查询其直接邻居;
4.4.2集中服务器在自己维护的B+树结构中查找边界节点的直接邻居,并将直接邻居信息返回给边界节点;
4.4.3执行步骤6,即边界节点与其直接邻居建立直接邻居关系。
4.5执行步骤7,即在不提供集中服务的情况下,边界节点从自身出发在虚链路中查找其直接前驱或后继邻居,如果找到其直接邻居,执行步骤6,即边界节点与其直接邻居建立直接邻居关系,否则,网络环状拓扑断裂返回。
步骤5,对等网络内单个节点失效或连续多个节点并发失效,被动退出对等网络,执行以下步骤:
5.1集中服务器连接检测哪些在时间阈值内没有向其通告存活信息的对等节点,对于失效节点服务器在自己维护的B+树结构中根据失效节点ID查找到失效节点,并在节点信息中置失效标志;
5.2对等网络内每个节点周期性连接检测其直接邻居的存活状态,当检测发现其直接邻居失效,边界节点在其维护的主邻居列表的失效节点所在前驱或后继区域中依从上到下的顺序逐个连接检测节点的存活状态,如果在主邻居列表的失效节点所在区域中检测到存活节点,此节点为边界节点的直接邻居,执行步骤6,即边界节点与其直接邻居建立直接邻居关系,否则,继续执行;
5.3如果集中服务器不能提供集中服务,执行5.4,否则,执行以下步骤:
5.3.1边界节点向集中服务器请求查询其直接邻居;
5.3.2集中服务器在自己维护的B+树结构中查询边界节点的直接邻居,并将直接邻居信息返回给边界节点;
5.3.3执行步骤6,即边界节点与其直接邻居建立直接邻居关系。
5.4执行步骤7,即在不提供集中服务的情况下,边界节点从自身出发在虚链路中查找其直接前驱或后继邻居,如果找到其直接邻居,执行步骤6,即边界节点与其直接邻居建立直接邻居关系,否则,网络环状拓扑断裂返回。
步骤6边界节点与其直接邻居(边界节点)建立直接邻居关系,执行以下步骤:
6.1边界节点根据已获得的直接邻居的信息请求与之建立直接邻居关系;
6.2直接邻居接收到边界节点发出的请求建立直接邻居关系信息后,修改邻居信息表中相应的直接邻居信息条目,返回建立直接邻居关系成功信息给边界节点;
6.3边界节点接收到建立直接邻居关系成功信息后,修改自己邻居信息表中相应的直接邻居信息条目;
6.4边界节点与其直接邻居的主邻居列表的退出节点所在区域中的其余邻居信息条目从对方学习获得;
6.5边界节点与其直接邻居向自己维护的主邻居列表的无退出节点区域中的其余邻居节点通告更新的信息条目,这些节点对自己维护的主邻居列表进行相应修改。
步骤7,在不提供集中服务的情况下,边界节点从自身出发在虚链路中查找其直接前驱邻居或直接后继邻居,执行以下步骤:
7.1边界节点根据连接检测的结果确定查找其直接后继邻居还是直接前驱邻居,如果查找其直接后继邻居,边界节点从自己出发循逆时针方向查找顺时针距离自己最近的对等节点,否则,边界节点从自己出发循顺时针方向查找逆时针距离自己最近的对等节点;
7.2直到找到边界节点的直接邻居或查找跳数(Hops)溢出为止。
一种基于集中服务的分布式对等网络,包括一个集中服务器,集中服务器用于存储对等节点的信息,对等节点可以通过集中服务器查找自己的邻居节点。
一种基于集中服务的分布式对等网络,还包括为集中服务器定义B+树数据结构用于存储动态变化的对等节点的信息,实时记录对等节点当前的存活状态。
一种基于集中服务的分布式对等网络,还包括对等节点的唯一身份标识ID为节点的通信地址IP和通信连接端口Port经哈希函数运算得到的值,即对等节点ID=Hash(IP,Port)。
一种基于集中服务的分布式对等网络,还包括对等网络采用轮状结构组织方式,对等节点之间采用环状结构组织方式,对等节点之间依照节点ID大小组成环状结构。
一种基于集中服务的分布式对等网络,还包括每个对等节点都维护一张邻居信息表,邻居信息表由集中服务器信息项、主邻居列表和次邻居列表三部分组成,其中,(1)主邻居列表包括距离该节点最近的对等节点的信息条目,推荐值是距离自己最近的3个前驱和3个后继,周期检测确保这些节点存活;(2)次邻居列表包括由节点的加入和退出导致从主邻居列表中调整过来的节点信息条目,无须检测这些节点存活与否。
本发明的优点在于:(1)在对等网络中引入集中服务器,集中服务器为节点的加入和退出对等网络提供集中服务,对等节点可以通过集中服务器查找自己的邻居节点,这样降低了对等节点之间维护邻居关系的开销,使网络波动得到有效控制,避免了对等节点孤岛的出现;(2)为服务器定义B+树数据结构,B+树是动态的多路平衡查找树,非常适合用于存储动态变化节点的信息;(3)对等节点之间维护适当数量的邻居关系,这样既减轻了集中服务器的负担,又能够在一定程度上解决服务器单点失效问题。
附图说明
图1是本发明中对等网络维护的轮(Wheel)状拓扑结构的示意图;
图2是本发明中为集中服务器所定义的用来存储对等节点信息的B+树数据结构的示意图;
图3是本发明中对等节点维护的邻居信息表的示意图;
图4是本发明中对等节点维护的邻居信息表的具体示例图;
图5是本发明中新节点加入对等网络的流程图;
图6是本发明中新节点与其直接邻居建立直接邻居关系的流程图;
图7是本发明中对等节点主动退出对等网络的流程图;
图8是本发明中从对等节点出发在虚链路中查找新节点直接邻居的流程图;
图9是本发明中两个边界节点建立直接邻居关系的流程图;
图10是本发明中边界节点从自身出发在虚链路中查找其直接前驱或后继邻居的流程图;
图11是本发明中对等节点失效被动退出对等网络的流程图。
具体实施方式
有关本发明的技术内容及详细说明,现配合附图说明如下:
图1为本发明的对等网络系统的轮状拓扑结构图。本发明的一种基于集中服务的分布式对等网络系统包含对等节点和集中服务器。为降低新节点频繁加入和对等节点频繁退出对等网络造成的网络波动,进一步提高对等网络工作效率,本发明所述对等网络采用轮状拓扑结构。集中服务器位于轮状拓扑中心,为节点的加入和退出提供集中服务。对等节点之间按照节点ID组成环状拓扑结构,该结构有自组织能力,可独立完成节点的加入和退出工作。为服务器定义B+树数据结构用于存储动态变化的对等节点的信息,节点的信息至少包括节点的唯一身份标识ID,节点的通信地址IP和建立通信连接的端口Port,节点上次通告集中服务器存活信息的时间,以及节点的存活状态标志。
在所述对等网络中节点的唯一身份标识ID为节点的通信地址IP和通信连接端口经哈希函数(如SHA,MD5等)运算得到的值,即节点ID=Hash(IP,Port)。
图2为本发明的集中服务器用来存储对等节点信息的B+树数据结构图。数据结构B+树是动态的多路平衡查找树,非常适合用于存储动态变化节点的信息。一棵m阶B+树,或为空树,或为满足下列特征的m叉树:
(1)树中每一个非叶结点最多有m棵子树;
(2)如果根结点不是叶结点,则根结点至少有2棵子树;
(3)除根结点外的所有非叶结点至少有棵子树;
(4)所有的非叶结点中包含下列信息数据(n,A0,K1,A1,K2,A2,...,Kn,An),其中:Ki(i=1,2,...,n)为关键字,且Ki<Ki+1(i=1,2,...,n-1),Ai(i=0,1,...,n)为指向子树根结点的指针,且指针Ai-1所指子树中所有的关键字均小于Ki(i=1,2,...,n),An所指子树中所有结点的关键字均大于Kn,n为关键字的个数;
(5)所有的叶结点都处于同一层次上,包含了全部关键字及指向相应数据对象存放地址的指针,且叶结点本身依关键字从小到大顺序链接。
B+树中查找关键字方法:在B+树中有两个入口指针,分别是指向B+树的根结点的指针和指向关键字最小的叶结点的指针,查找关键字可以从指向关键字最小的叶结点的指针开始循叶结点链顺序查找,也可以从指向B+树的根结点的指针开始,自顶向下,直至叶结点。
B+树中结点的插入方法:首先在B+树中查找待插入关键字的插入位置,然后从B+的叶结点开始进行插入,每插入一个关键字-指针索引项后要判断结点中的子树棵数是否超出范围,若子树棵数超出范围,需要将结点分裂为两个结点,并且它们的双亲结点中应同时包含这两个结点的最小关键字和结点地址,此后,继续向上重复此过程,直到结点的子树棵数未超出范围。
B+树中结点的删除方法:首先在B+树中查找待删除关键字所在的叶结点,然后从B+的叶结点开始进行删除,每删除一个关键字-指针索引项后要判断结点中的子树棵数是否小于下限,若子树棵数小于下限,需要将结点进行调整或合并,此后,继续向上重复此过程,直到结点的子树棵数不小于下限。
在本发明中,集中服务器随新节点加入和对等节点退出对等网络而动态维护B+树数据结构。在集中服务器维护的B+树结构中,关键字--指针索引项分别为对等节点ID--指向相应对等节点信息存放地址的指针。
B+树的阶数m和每个叶结点可容纳关键字--指针索引的最大容量可视对等网络的规模等因素确定,在本具体实施例中均为28。
集中服务器为了在B+树中快速检索到某一节点的直接邻居,在本发明中,叶结点本身依关键字从小到大顺序链接成环,并且依关键字从大到小顺序链接成环,这样叶结点构成双向循环链接。
当新节点加入对等网络,集中服务器在自己维护的B+树结构中查找新节点ID的插入位置,将新节点ID和指向新节点信息存放地址的指针插入到该位置;当对等节点退出对等网络,集中服务器在自己维护的B+树结构中查找退出节点ID的所在位置,修改退出节点信息结构的存活状态标志值或从B+树结构中删除退出节点;当查找对等节点的直接邻居,集中服务器在自己维护的B+树结构中查找该节点ID的所在位置,从所在位置起在叶节点内或叶结点之间查找该节点的直接邻居。为集中服务器所定义的B+树数据结构可以高效地处理动态变化的对等节点信息,为新节点加入对等网络和对等节点退出提供集中服务。
图3为本发明对等节点维护的邻居信息表的结构。在本发明中,加入对等网络中的每个节点都会维护一张邻居信息表,邻居信息表中存储邻居节点信息,节点信息主要包括节点的唯一身份标识ID,节点的通信地址IP和建立通信连接的端口,节点上次通告集中服务器存活信息的时间,以及节点的存活状态标志。邻居信息表由集中服务器信息项、主邻居列表和次邻居列表三部分组成,其中,(1)主邻居列表是指当前必须维护的该节点的第1、2、3个前驱和第1、2、3个后继节点信息条目,共计六条,节点周期检测主邻居列表中节点的存活状态,确保这些节点存活;(2)次邻居列表是指由节点的加入和退出导致从主邻居列表中调整过来的节点信息条目。
图4为本发明实施例的对等节点维护的邻居信息表结构示例图。节点的主邻居列表分为前驱邻居列表和后继邻居列表,前驱邻居列表中节点信息按照从下至上节点ID顺时针有序排列,后继邻居列表中节点信息按照从上至下节点ID顺时针有序排列。
图5为本发明的新节点加入对等网络的流程图。首先,新节点向集中服务器发送加入对等网络请求(步骤S101),集中服务器判断是否能够提供集中服务(步骤S102),如果集中服务器能够提供集中服务,则集中服务器在自身维护的B+树结构中查找新节点ID在B+树中的插入位置,找到后存储新节点信息,并将新节点的ID和存储新节点信息的指针插入到该位置(步骤S103);然后,集中服务器在自身维护的B+树结构中查找新节点的直接邻居信息,找到后将直接邻居的信息返回给新节点(步骤S104)。
如果集中服务器不能提供集中服务,则判断新节点是否能获取当前已加入对等网络的任一对等节点(步骤S105),如果能够获得对等节点,则从对等节点出发在对等网络中通过虚链路在限定跳数内查询新节点的直接邻居节点,找到后将直接邻居的信息返回给新节点(步骤S106),如果没有找到直接邻居节点或步骤105的判断结果为不能获取当前已加入对等网络的任一对等节点,则新节点加入对等网络失败(步骤S107)。
在步骤104及106将直接邻居的信息返回给新节点后,新节点与其直接邻居建立直接邻居关系,新节点加入对等网络成功(步骤S108)。
新节点加入对等网络有两种可选方式:一是新节点通过集中服务器查找获得其直接邻居信息,与其直接邻居建立直接邻居关系加入对等网络;另一种是新节点从对等网络内任一对等节点出发,通过虚链路在限定跳数内查询获得其直接邻居信息,与直接邻居建立直接邻居关系加入对等网络,并通告集中服务器加入成功信息。
如果集中服务器正常运行并且连接不繁忙,新节点首选通过集中服务器查找获得其直接邻居加入对等网络,否则,新节点从对等网络内任一对等节点出发查询获得其直接邻居加入对等网络。
新节点获取当前已加入对等网络的任一对等节点的方法有:(1)通过用户配置获得当前已加入对等网络的对等节点;(2)新节点在自身维护的以前记录的邻居列表中按照距离自己由近及远的顺序对节点逐个进行连接检测,获得当前已加入对等网络的对等节点。
在新节点加入对等网络的两种方式中,通过集中服务器加入对等网络造成的网络波动很小,缺点是增加了集中服务器的负担,而通过对等节点在虚链路中查询其直接邻居加入对等网络会造成一定网络波动,优点是减轻了集中服务器的负担,在本发明中,新节点加入对等网络的两种方式融合在一起,既降低了新节点加入对等网络造成的网络波动又减轻了集中服务器的负担。
图6为本发明中新节点与其直接邻居建立直接邻居关系的流程图。步骤S108进一步包含:首先,新节点根据已获得的直接邻居的信息向直接邻居节点发出与之建立直接邻居关系的请求(步骤S201)。直接邻居节点接收到请求后,验证新节点是否为其直接邻居(步骤S202),如果通过验证,修改邻居信息表中直接邻居的信息条目,并返回建立直接邻居关系成功信息给新节点(步骤S203);否则,返回建立直接邻居关系失败信息给新节点(步骤S204)。然后,判断新节点与其直接前驱邻居和直接后继邻居是否都建立了直接邻居关系(步骤S205),如果没有,则返回步骤201;如果已经都建立的直接邻居关系,则新节点负责向集中服务器通告加入对等网络成功信息(步骤S206)。
在新节点与其直接邻居建立直接邻居关系步骤中,直接邻居需要验证新节点是否为其直接邻居,在此给出检测算法来验证节点ID x是否为节点ID a和b的顺时针直接邻居,算法详细介绍如下:
设有n个对等节点,对等节点之间拓扑关系为<a,b>,其中,b=(a+k)%n,a=0,1,...,n-1,k=Min{y|y=1,...,n&节点(x+y)%n是存活的}。
检测直接邻居算法(a,b,x)
如果a小于b
如果x大于a并且x小于b,返回x是节点a和b的直接邻居
否则,返回x非节点a和b的直接邻居
如果a大于b
如果x大于b并且x小于a,返回x非节点a和b的直接邻居
否则,返回x是节点a和b的直接邻居
图8为本发明中从对等节点出发在虚链路中查找新节点的直接邻居节点的流程图。步骤S106进一步包含:首先,将查找出的对等节点作为当前节点,在当前节点维护的主邻居列表中查找新节点的直接邻居节点(步骤S301),如果找到新节点的直接邻居节点,将新节点的直接邻居的信息返回给新节点,查找结束返回(步骤S302);否则,在当前节点的次邻居列表中查找距离新节点最近的已加入对等网络的对等节点(步骤S303),如果找到,将其作为新的查找出发节点,否则,置当前节点的主邻居列表中距离新节点最近的对等节点为新的查找出发节点。然后,判断查找跳数(hops)是否溢出,如果没有溢出,返回步骤301,否则,返回查找新节点的直接邻居失败。
在步骤S301中,需要在对等节点的主邻居列表中查找新节点的直接邻居,可调用上述“检测直接邻居算法(a,b,x)”完成,将节点ID a和b代换为对等节点主邻居列表中顺时针有序的两个节点ID,x代换为新节点ID。
步骤S303进一步包含:首先,在当前节点维护的次邻居列表中除去在主邻居列表范围内的节点,余留节点列表为查找范围(步骤S303A);然后,如果新节点ID在查找范围内最小ID和最大ID之间,依折半查找方法查找新节点ID在查找范围的插入位置,接着从新节点插入位置的前后两个节点起按照距离新节点由小至大的顺序逐个进行连接检测,查找当前已加入对等网络的对等节点(步骤S303B),否则,从查找范围的ID最小节点和ID最大节点起由按照距离新节点由小至大的顺序逐个进行连接检测,查找当前已加入对等网络的对等节点(步骤S303C)。
在步骤S303B和步骤S303C中需要计算两个对等节点之间的最短距离,在此给出有n个节点的对等网中,计算对等节点i和j之间的最短距离算法,详细介绍如下:
计算两个节点间最短距离算法(i,j,n)
i到j的顺时针距离为d1=(j-i+n)%n
i到j的逆时针距离为d2=(i-j+n)%n
i到j的最短距离为d=min(d1,d2)
图7给出了本发明中对等节点主动退出对等网络的流程图。首先,对等网络内退出节点分别向集中服务器和自己维护的邻居信息表的主邻居列表中的直接邻居发送退出对等网络信息(步骤S401)。其次,收到节点退出信息的集中服务器,如果正常运行,在自己维护的B+树结构中根据退出节点ID查找到退出节点,并在节点信息中置退出标志(步骤S402)。最后,边界节点(收到直接邻居节点退出信息的对等节点)在其维护的主邻居列表的退出节点所在前驱或后继区域中依从上到下的顺序逐个连接检测节点的存活状态(步骤S403),如果边界节点在其主邻居列表的退出节点所在区域中检测到存活节点(此节点为边界节点的直接邻居),边界节点与其直接邻居建立直接邻居关系(步骤S404);否则,如果集中服务器能提供集中服务,通过集中服务器查找边界节点的直接邻居(步骤S405),边界节点执行步骤S404,否则,边界节点从自身出发在虚链路中查找其直接前驱或后继邻居(步骤S406),如果找到,边界节点执行步骤S404,否则,网络环状拓扑断裂返回。
步骤S405进一步包含:边界节点向集中服务器请求查询其直接邻居(步骤S405A)。集中服务器在自己维护的B+树结构中查找边界节点的直接邻居,并将直接邻居信息返回给边界节点(步骤S405B)。
图9是本发明中两个边界节点建立直接邻居关系的流程图。步骤S404进一步包含:首先,边界节点Q在获得边界节点R的信息后,请求与R建立直接邻居关系(步骤S501)。其次,R接收到Q发出的请求建立直接邻居关系信息后,修改自己邻居信息表中相应的直接邻居信息条目,并将建立直接邻居关系成功信息发送给Q(步骤S502)。最后,Q接收到建立直接邻居关系成功信息后,修改自己邻居信息表中相应的直接邻居信息条目(步骤S503)。
图10是本发明中边界节点从自身出发在虚链路中查找其直接前驱或后继邻居的流程图。步骤S406进一步包含:边界节点根据连接检测的结果确定查找其直接后继邻居还是直接前驱邻居(步骤S601),如果查找其直接后继邻居,边界节点从自己出发循逆时针方向查找其直接后继邻居(步骤S602),否则,边界节点从自己出发循顺时针方向查找其直接前驱邻居(步骤S603)。
步骤S602进一步细化为:首先,边界节点从自己出发循逆时针方向查找顺时针距离自己最近的对等节点(步骤S602A)。然后,将查找到的对等节点作为当前节点(步骤S602B)。最后,如果当前节点是边界节点的直接后继,查找成功返回(步骤S602C),否则,判断是否在查找限定跳数(hops)内,如果在查找限定跳数(hops)内,从当前节点出发,循逆时针方向查找顺时针距离边界节点最近的对等节点(步骤S602D),返回步骤S602B,否则,查找失败。
步骤S603进一步细化为:首先,边界节点从自己出发循顺时针方向查找逆时针距离自己最近的对等节点(步骤S603A)。然后,将查找到的对等节点作为当前节点(步骤S603B)。最后,如果当前节点是边界节点的直接前驱,查找成功返回(步骤S603C),否则,判断是否在查找限定跳数(hops)内,如果在查找限定跳数(hops)内,从当前节点出发,循顺时针方向查找逆时针距离边界节点最近的对等节点(步骤S603D),返回步骤S603B,否则,查找失败。
图11是本发明中对等节点失效被动退出对等网络的主要流程。对等节点周期性连接检测邻居节点的存活状态(步骤S701),当检测发现其邻居节点失效,边界节点在其维护的主邻居列表的失效节点所在前驱或后继区域中依从上到下的顺序逐个连接检测节点的存活状态(步骤S702),如果在主邻居列表的失效节点所在区域中检测到存活节点,此节点为边界节点的直接邻居,边界节点与其直接邻居建立直接邻居关系(步骤S404);否则,如果集中服务器能提供集中服务,通过集中服务器查找边界节点的直接邻居(步骤S405),边界节点执行步骤S404,否则,边界节点从自身出发在虚链路中查找其直接前驱或后继邻居(步骤S406),如果找到,边界节点执行步骤S404,否则,网络环状拓扑断裂返回。
以上对本发明的技术方案和有益效果作了进一步详细说明。本发明可以有多种变形方案实现,凡在本发明的精神和原则之内,所作的任何修改、参数替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于集中服务的分布式对等网络系统,包含对等节点,其特征在于,还包含存储对等节点的信息,对等节点通过它来查找自己的邻居节点的集中服务器;集中服务器内含有用于存储动态变化的对等节点的信息,实时记录对等节点当前的存活状态的B+树数据结构体;对等节点的唯一身份标识ID为节点的通信地址IP和通信连接端口Port经哈希函数运算得到的值,对等节点ID=Hash(IP,Port)。
2、根据权利要求1所述的一种基于集中服务的分布式对等网络系统,其特征在于,对等网络采用轮状结构组织方式,对等节点之间采用环状结构组织方式,对等节点之间依照节点ID大小组成环状结构。
3、根据权利要求1所述的一种基于集中服务的分布式对等网络系统,其特征在于,对等节点还有邻居信息表,邻居信息表由集中服务器信息项、主邻居列表和次邻居列表三部分组成。
4、根据权利要求1所述的一种基于集中服务的分布式对等网络系统,其特征在于,对等节点还有邻居信息表,邻居信息表由集中服务器信息项、主邻居列表和次邻居列表三部分组成,其中,(1)主邻居列表包括距离自己最近的3个前驱和3个后继的信息条目,周期检测确保这些节点存活;(2)次邻居列表包括由节点的加入和退出导致从主邻居列表中调整过来的节点信息条目,无须检测这些节点存活与否。
5、一种基于集中服务的分布式对等网络的实现方法,新节点加入对等网络,其特征在于,包含以下步骤:
步骤1:新节点向集中服务器发送加入对等网络请求;
步骤2:如果集中服务器可以提供集中服务,集中服务器记录新节点信息,在自身维护的B+树结构中查找新节点的直接邻居信息,将新节点的直接邻居信息返回给新节点;
步骤3:否则,新节点从对等网络内一个对等节点出发,通过虚链路在限定跳数内查询获得直接邻居信息;
步骤4:新节点与其直接邻居建立直接邻居关系加入对等网络,并通告集中服务器加入成功消息。
6、根据权利要求5所述的实现方法,其特征在于,从对等节点出发在虚链路中查找新节点的直接邻居的步骤如下:
(1)对等节点在自己维护的主邻居列表中查找新节点的直接邻居;
(2)如果找到新节点的直接邻居,返回直接邻居的信息给新节点;
(3)否则,在对等节点维护的邻居信息表中查找距离新节点ID最近的当前已加入对等网络的对等节点,将此节点作为新的查找出发节点;
(4)重复(1)、(2)、(3)步骤,直到找到新节点的直接邻居或查找跳数(Hops)溢出为止。
7、根据权利要求5所述的实现方法,其特征在于,验证节点ID x是否为节点ID a和b的顺时针直接邻居算法如下:
设有n个对等节点,对等节点之间拓扑关系为<a,b>,其中,b=(a+k)%n,a=0,1,...,n-1,k=Min{y|y=1,...,n &节点(x+y)%n是存活的};
如果a小于b,若x大于a并且x小于b,返回x是节点a和b的直接邻居,否则返回x非节点a和b的直接邻居;如果a大于b,若x大于b并且x小于a,返回x非节点a和b的直接邻居,否则返回x是节点a和b的直接邻居。
8、根据权利要求5所述的实现方法,其特征在于,在n个节点的所述对等网中,计算对等节点i和j之间的最短距离算法如下:
i到j的顺时针距离为d1=(j-i+n)%n,i到j的逆时针距离为d2=(i-j+n)%n,得i到j的最短距离为d=min(d1,d2)。
9、根据权利要求5所述的实现方法,其特征在于,新节点与其直接邻居建立直接邻居关系的步骤如下:
(1)新节点请求与其直接邻居建立直接邻居关系;
(2)新节点的直接邻居验证新节点是否为其直接邻居,如果未通过验证,新节点加入失败返回;
(3)否则,新节点的直接邻居修改其邻居信息表中相应的直接邻居的信息条目,返回建立直接邻居关系成功信息给新节点;
(4)新节点接收到建立直接邻居关系成功信息后,修改自己邻居信息表中相应的直接邻居信息条目。
10、一种基于集中服务的分布式对等网络的实现方法,对等节点主动退出对等网络,其特征在于,包含步骤如下:
步骤1:对等网络内退出节点分别向集中服务器和其直接邻居发送退出信息;
步骤2:接收到其前驱或后继直接邻居退出信息的边界节点逐个连接检测其主邻居列表中退出节点所在区域内其他节点的存活状态;
步骤3:如果边界节点直接连接检测到自己新的前驱或后继直接邻居,与其前驱或后继直接邻居建立直接邻居关系;
步骤4:否则,边界节点需要从集中服务器处查找获得自己新的前驱或后继直接邻居或者从自己出发在虚链路中查找其前驱或后继直接邻居,与其前驱或后继直接邻居建立直接邻居关系。
11、一种基于集中服务的分布式对等网络的实现方法,对等节点失效被动退出对等网络,其特征在于:包含步骤如下:
步骤1:对等节点周期性连接检测邻居节点的存活状态;
步骤2:检测到其邻居节点失效的边界节点逐个连接检测其主邻居列表中退出节点所在区域内其他节点的存活状态;
步骤3:如果边界节点直接连接检测到自己新的前驱或后继直接邻居,与其前驱或后继直接邻居建立直接邻居关系;
步骤4:否则,边界节点需要从集中服务器处查找获得自己新的前驱或后继直接邻居或者从自己出发在虚链路中查找其前驱或后继直接邻居,与其前驱或后继直接邻居建立直接邻居关系。
12、根据权利要求11所述的实现方法,其特征在于边界节点从自己出发在虚链路中查找其前驱或后继直接邻居的步骤如下:
步骤1:如果查找直接后继邻居,边界节点从自己出发循逆时针方向查找顺时针距离自己最近的对等节点;
步骤2:否则,边界节点从自己出发循顺时针方向查找逆时针距离自己最近的对等节点;
步骤3:直到找到边界节点的直接邻居或查找跳数溢出为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710175874A CN100591028C (zh) | 2007-10-15 | 2007-10-15 | 一种基于集中服务的分布式对等网络的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710175874A CN100591028C (zh) | 2007-10-15 | 2007-10-15 | 一种基于集中服务的分布式对等网络的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101179466A CN101179466A (zh) | 2008-05-14 |
CN100591028C true CN100591028C (zh) | 2010-02-17 |
Family
ID=39405562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710175874A Expired - Fee Related CN100591028C (zh) | 2007-10-15 | 2007-10-15 | 一种基于集中服务的分布式对等网络的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100591028C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101543017B (zh) * | 2008-05-21 | 2013-04-24 | 香港应用科技研究院有限公司 | 加入对等网络的设备和方法 |
CN105580000A (zh) * | 2013-09-26 | 2016-05-11 | 慧与发展有限责任合伙企业 | 对等网络中的任务分发 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282231B (zh) * | 2008-05-27 | 2011-02-16 | 中山大学 | 一种基于P2P网络的FBStream流媒体直播系统 |
US8996726B2 (en) | 2008-06-19 | 2015-03-31 | Qualcomm Incorporated | Methods and apparatus for event distribution and routing in peer-to-peer overlay networks |
CN101645922B (zh) * | 2009-04-17 | 2012-09-05 | 中国科学院声学研究所 | 基于地理位置信息编码的cdn网络系统及分发处理方法 |
CN102088450B (zh) * | 2009-12-08 | 2014-03-19 | 中兴通讯股份有限公司南京分公司 | 一种多域对等网络中域的拆分与合并方法及系统 |
WO2012129988A1 (zh) * | 2011-03-30 | 2012-10-04 | 中兴通讯股份有限公司 | 一种节点加入对等网络的方法及系统 |
CN102185749B (zh) * | 2011-06-07 | 2014-12-10 | 北京交通大学 | 采用树形拓扑关系避免路由环路的方法 |
CN103023680B (zh) * | 2011-09-23 | 2015-06-17 | 中国科学院声学研究所 | 一种终端状态收集系统及方法 |
CN103414788B (zh) * | 2013-08-28 | 2016-03-09 | 国家电网公司 | 一种基于层次对等网络的配电网数据处理系统及方法 |
CN103476081B (zh) * | 2013-09-11 | 2017-05-03 | 北京交通大学 | 一种无线传感器网络中路由的方法 |
CN109857924A (zh) * | 2019-02-28 | 2019-06-07 | 重庆科技学院 | 一种大数据分析监察信息处理系统及方法 |
CN113382072B (zh) * | 2021-06-09 | 2023-01-06 | 上海交通大学 | 基于对等网络的联合搜索系统 |
-
2007
- 2007-10-15 CN CN200710175874A patent/CN100591028C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101543017B (zh) * | 2008-05-21 | 2013-04-24 | 香港应用科技研究院有限公司 | 加入对等网络的设备和方法 |
CN105580000A (zh) * | 2013-09-26 | 2016-05-11 | 慧与发展有限责任合伙企业 | 对等网络中的任务分发 |
Also Published As
Publication number | Publication date |
---|---|
CN101179466A (zh) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100591028C (zh) | 一种基于集中服务的分布式对等网络的实现方法及系统 | |
CN100496004C (zh) | 结构化对等网络系统及其负载查询、转移及资源查找方法 | |
US8756253B2 (en) | Two-level structured overlay design for cluster management in a peer-to-peer network | |
US8166074B2 (en) | Index data structure for a peer-to-peer network | |
CN102567495B (zh) | 一种海量信息存储系统及实现方法 | |
CN110417883B (zh) | 一种应用于区块链的点对点网络结构的设计方法 | |
CN101841553A (zh) | 网络上请求资源的位置信息的方法、用户节点和服务器 | |
US7773609B2 (en) | Overlay network system which constructs and maintains an overlay network | |
Hauswirth et al. | An overlay network for resource discovery in grids | |
Li et al. | Ssw: A small-world-based overlay for peer-to-peer search | |
CN102325093A (zh) | 一种结构化p2p网络中的路由系统构建方法 | |
CN101719155B (zh) | 一种支持分布式多集群计算环境的多维属性范围查询的方法 | |
CN101902388A (zh) | 可扩充的多级排序资源快速发现技术 | |
Cherbal et al. | A survey of DHT solutions in fixed and mobile networks | |
CN101360055B (zh) | 具有常数跳路由特性的p2p网络信息资源定位方法 | |
CN101917475B (zh) | 一种基于p2p模式的psrd普适服务资源发现方法 | |
CN100358288C (zh) | 在网络设备中处理五元流组的方法 | |
Ye et al. | Benefit based cache data placement and update for mobile peer to peer networks | |
Tang et al. | m-light: Indexing multi-dimensional data over dhts | |
CN101420352B (zh) | 一种结构化p2p网络中键值转移的方法和系统 | |
Gu et al. | A peer-to-peer architecture for context lookup | |
Mandal et al. | Deterministic 1–2 skip list in distributed system | |
Li et al. | A role-based distributed publish/subscribe system in IoT | |
Yang | Semi-structured semantic overlay for information retrieval in self-organizing networks | |
Brodal et al. | D 2-tree: A new overlay with deterministic bounds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100217 Termination date: 20171015 |
|
CF01 | Termination of patent right due to non-payment of annual fee |