分布式哈希表dht网络及其构建方法、节点的制作方法

文档序号:7927353阅读:306来源:国知局
专利名称:分布式哈希表dht网络及其构建方法、节点的制作方法
技术领域
本发明涉及通信技术领域,尤其是涉及分布式哈希表DHT网络及其构建方法、节 点。
背景技术
分布式哈希表(DHT,Distributed Hash Table)通常用于分布式数据存储。DHT网 络中,每个网络节点实现均质化的数据存储,每个节点负责一个小范围的路由处理及部分 数据(data)的存储。也就是说,DHT网络用物理链路将各个孤立的工作站或主机互连在一 起,组成数据链路,从而达到资源共享和通信的目的。 DHT网络的基本原理是首先,将每个数据资源对象表示成一个数据资源对象索 引条目(K,V)对,K称为关键字,是文件描述信息(如文件名、文件编号等)的哈希值,V是 实际存储文件的节点的描述信息(如IP地址、名称等)。所有的数据资源对象索引条目(即 所有的(K,V)对)组成一个文件索引哈希表,只要输入目标文件的K值,就可以从该文件索
引哈希表中查出所有存储该文件的节点的地址或者其他描述信息。然后,将该文件索引哈 希表分割成很多段小块,按照特定的规则把这些局部哈希表分布到系统中的所有参与节点 上,使得每个节点负责维护其中的一块局部哈希表。这样,节点查询文件时,该节点查找的 存储该文件的节点即所维护的哈希表分块中含有要查找的(K, V)对的节点,则在查找到 之后,将查询报文路由到该存储该文件的节点即可。 DHT算法的具体实施方法有很多种,如KAD、 Chord等,下面简单介绍Chord算法。
Chord算法是由MIT(Massachu-setts Institute of Technology,麻省理工学院) 提出的结构化P2P (Point to Point,点对点)协议。每个节点和关键字具有唯一的ID (标 识),其中节点ID是对节点地址的映射,而关键字ID是对该关键字的映射。
由ID标识组成的ID空间组织为一个ID环,所以当ID长度为m时,ID的取值范 围为
。关键字k存储在延ID环顺时针方向第一个节点ID对应的节点上,这个 节点称为关键字k的后继节点(successor node)。图1显示了一个ID长度为3的chord ID环及数据存储。在图1中,可以看到,系统中存在ID为0、1、3共3个节点;ID为1、2、6 共3份数据。则根据上文描述的数据存储原理,即将数据存储于节点ID大于等于数据ID 的节点中,节点ID最小的节点,则数据1应存储于节点1上,数据2应存储于节点3上,数 据6应存储于节点0上(在ID环上顺时针方向依次查找节点)。 关键字到ID的映射是通过一致性哈希函数完成的。系统中的每个节点以很高的 概率(With high probability,w.h.p.)分配到相同数目的关键字,同时当第N个节点加入 系统时只有0(1/N)的关键字需要移动。 Chord算法中的节点只保存部分节点的地址信息,这些地址信息称为路由信息。通 过有效的组织路由信息以及基于此的资源定位算法,资源定位只需要O(logN)瑕L而每个 节点保存0(logN)其他节点的信息,同时,节点的加入和离开需要0(log2N)消息,其中N为 节点数目。
发明人经过分析,发现上述现有技术存在如下不足 1、在DHT网络中,每个节点各自负责一部分哈希空间内的数据的存储,因此新的
节点加入网络时,如果同时加入大量节点,则数据很可能在多个新加入节点之间反复迁移,
网络中其他节点的路由表也需要不断更新,对网络造成冲击,影响网络稳定性。 2、在DHT网络中,每个节点各自负责一部分哈希空间内的数据的存储,因此一旦
某节点离线,该节点上的负载将转移到后继节点,可能会导致后继节点上负载过大继而离
线,甚至造成全网节点离线的恶性事件。 具体的,当节点离线时,该节点的负载会随之转移到其后继节点,如果离线节点上原存储的数据量较大,则后继节点可能无法承受增加的负载量,继而因负载过大离线;更为严重的是,如果网络中的节点平均负载超出某个负载量门限值,该后继节点与退出节点的负载均转移至其它节点,可能会导致其它节点因负载过大继而离线,这种恶性的负载传递很可能引发多米诺式的全网节点离线。

发明内容
本发明实施例提供了一种分布式哈希表DHT网络的构建方法,用以减少对网络的
冲击,提高网络稳定性,该方法包括 接收所述网络外的节点加入所述网络的请求; 根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态。 本发明实施例还提供了一种DHT网络中的节点,用以减少对网络的冲击,提高网络稳定性,包括 接收模块,用于接收所述网络外的节点加入所述网络的请求; 加入处理模块,用于根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态。 本发明实施例还提供了一种DHT网络中的节点,用以减少对网络的冲击,提高网络稳定性,包括 发送模i央,用于发起加入所述网络的请求;以及,在接收到重新加入所述网络的指
示后,重新发起加入所述网络的请求; 接收模块,用于在被设置为备用状态后,接收重新加入所述网络的指示。 本发明实施例还提供了一种DHT网络,用以减少对网络的冲击,提高网络稳定性,
包括 业务节点,包括用于发起加入所述网络的请求的发送模块; 管理节点,包括用于接收所述业务节点加入所述网络的请求的接收模块;以及,用于根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述业务节点加入所述网络或设置为备用状态的加入处理模块。 本发明实施例中,接收所述网络外的节点加入所述网络的请求,根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态,使得节点的加入是可控的,不会出现大量节点一次性加入网络,造成数据在新加入节点间来回迁移的现象,可以减小网络受到的冲击,增强网络的稳定性。


图1是背景技术中ID长度为3的chord ID环数据存储示意图; 图2是本发明实施例中分布式哈希表DHT网络的构建方法流程图; 图3是本发明实施例中的集中式资源池式DHT网络示意图; 图4是本发明实施例中的分布式资源池式DHT网络示意图; 图5、图7、图10及图11是本发明实施例中DHT网络中的节点的结构示意图; 图6是本发明实施例中的加入处理模块的结构示意图; 图8、图9是本发明实施例中的离线处理模块的结构示意图。
具体实施例方式
为解决现有技术中大量节点同时加入网络,对网络造成冲击,影响网络的稳定性 的问题,本发明实施例提供了一种解决方法构建一种新的DHT网络,为该网络设置处于备 用状态的节点,也可称为备用节点。在构建DHT网络之前,已加入所述网络的节点数目与处 于备用状态的节点数目均为零。在构建DHT网络的过程中,将接收到网络外的节点发起的 加入网络的请求,接收到该请求后,将该节点加入网络或设置为备用状态,其依据是已加 入所述网络的节点数目与处于备用状态的节点数目。通过前述的节点加入方法,可以逐渐 构建超本发明实施例中所述的DHT网络。 下面结合说明书附图对本发明实施例进行详细说明。 如图2所示,本发明实施例中,分布式哈希表DHT网络的构建方法包括 步骤201、接收所述网络外的节点加入所述网络的请求; 步骤202、根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网
络外的节点加入所述网络或设置为备用状态。 图2所示流程中,步骤202在实施时,可以包括 将已加入所述网络的节点数目与处于备用状态的节点数目的比例值与设定比例 值进行比较; 在已加入所述网络的节点数目与处于备用状态的节点数目的比例值小于设定比 例值时,将所述网络外的节点加入所述网络; 在已加入所述网络的节点数目与处于备用状态的节点数目的比例值不小于设定 比例值时,将所述网络外的节点设置为备用状态。 实施中所述设定比例值可以根据网络性能要求设置,例如考虑到高可靠性,可将
处于备用状态的节点比例调高;考虑到高性能,可将已加入网络的节点比例调高。 举一例,假设已加入所述网络的节点数目与处于备用状态的节点数目的设定比例
值在4 : l至5 : l之间,在接收到网络外的节点加入网络的请求后,发现已加入所述网络
的节点数目与处于备用状态的节点数目的比例值为io : i,也就是说处于备用状态的节点
所占的比例偏少,这可能是由于一次大的事故,大量已加入网络的节点离线,导致处于备用
状态的节点被大量征用,则此时,可以将所述网络外的节点设置为备用状态;而如果此时已
加入所述网络的节点数目与处于备用状态的节点数目的比例值为3 : i,也就是说处于备
用状态的节点过多,这可能是由于有大量的节点从失败状态恢复,在这种情况下,可以将所
6述网络外的节点加入网络。实施中,将所述网络外的节点加入网络时,可以为该节点分配节点标识,并指示该节点按分配的节点标识加入网络;处于备用状态的节点未被分配节点标识,不参与数据存储,处于待机状态,随时准备加入网络。 按图2所示流程构建了 DHT网络后,每个节点各自负责一部分数据的存储,当出现
可能的情况网络中有节点离线时,为避免离线节点上的负载转移到后继节点、可能会导致
后继节点因负载过大而离线的情况,进而避免全网节点离线的恶性事件,本发明实施例中,
选择处于备用状态的节点,即前述备用节点,加入所述网络,接替离线节点存储该离线节点
的原有数据。确定所述网络中有节点离线时,选择处于备用状态的节点加入所述网络,存储
离线节点的原有数据。即,使选择的处于备用状态的节点接替离线节点的工作。 实施中确定网络中有节点离线的方法有多种,在DHT网络中,节点的离线是可以
被网络感知的,例如每个节点定期Ping自己的后继节点,或者,由管理节点定期检测节点
存活状况等。 实施中处于备用状态的节点的选择方式可以有多种,例如在处于备用状态的节点中,随机选择节点加入所述网络;当然也可以根据策略进行选择,例如在处于备用状态的节点中,选择最先被设置为备用状态的节点加入所述网络。在网络中可以存储有节点状态列表,列表中可以包括已加入网络的节点和处于备用状态的节点的相关信息,如IP地址等。后续可利用该列表确定已加入所述网络的节点数目与处于备用状态的节点数目的比例值,从而控制节点的加入。 —个实施例中,在选择了处于备用状态的节点之后,可以为选择的处于备用状态的节点分配离线节点原有的标识信息,指示所述选择的处于备用状态的节点按所述标识信息加入所述网络。 在为选择的处于备用状态的节点分配离线节点原有的标识信息之后,所述选择的处于备用状态的节点可以根据所述标识信息,从离线节点的备份节点获取离线节点的原有数据并存储。 图2所示流程中,可以由已加入DHT网络的节点实施步骤201和步骤202 ;例如由一个节点实施步骤201,由另一个节点实施步骤202 ;当然也可以仅由一个节点实施步骤201和步骤202,在下面的实施例中,以仅由一个节点实施步骤201和步骤202来具体说明,为方便描述,将该节点称为网络中的管理节点。 网络中的管理节点可以是一个,也可以是多个,用于对网络中节点的加入和离线进行处理。管理节点的确定方法可以有多种,例如可以由网络直接指定,也可以通过网络内节点选举产生。整个网络可以视为一个资源池,由分布的多个节点共同存储资源。若网络中的管理节点为一个,则可称之为集中式资源池DHT网络,其结构可以如图3所示;若网络中的管理节点为多个,则可称之为分布式资源池DHT网络,其结构可以如图4所示。
—个实施例中,可以将网络分为多个区域,划分方法有许多种,例如可以根据节点标识的前缀划分,将标识前缀为000000的节点归属至区域一,将标识前缀为000001的节点归属至区域二等;各区域中设置一个管理节点,每个管理节点负责本区域内的网络构建。
实施中可以根据策略,使多个管理节点之间可交互或不可交互,如果可交互,则管理节点可以定期相互传递网络内存储的节点状态列表,从而实现对全网节点的管理;当然若考虑到系统的简单性,也可以设置多个管理节点之间不可交互。
以分布式哈希表DHT网络的构建为例,本例中,已加入网络的节点按照采用DHT算法进行节点标识分配以及数据分配,以128位作为哈希空间大小,使用SHA-128作为基础哈希函数,假设用前六位作为区域编码,则前缀000 000对应区域1 ;前缀000 001对应区域2;前缀000 010对应区域3 ;前缀OOO 011对应区域4 ;前缀OOO 100对应区域5 ;以此类推至32个区域。 实施中为每个区域配置一个管理节点(如配置管理节点的IP地址等,并通知给区域内其它节点)。 网络外的节点申请加入网络时,将加入请求上报给申请加入区域内的管理节点,若预设的已加入网络的节点数目与处于备用状态的节点数目的比例值为4 : l,若此时网
络中,已加入网络的节点和处于备用状态的节点的比例是7 : i,S卩,处于备用状态的节点
所占比例偏少,则管理节点将所述网络外的节点设置为备用状态。而如果此时已加入网络
的节点和处于备用状态的节点的比例是3 : i,S卩,处于备用状态的节点过多,则管理节点
将所述网络外的节点加入所述网络。 所述网络外的节点被允许加入网络后,可以按照经典DHT的方法得到节点标识,启动数据搬移过程。 DHT算法的具体实施方法有很多种,如KAD、 Chord等,本例中以Chord算法为例,网络中的节点定期Ping自己的后继,当感知到有节点离线时,通知其所属区域内的管理节点。管理节点可以根据网络中存储的节点状态列表,选择一个处于备用状态的节点加入网络,可以选择最先被设置为备用状态的节点,也可以随机选择某个处于备用状态的节点。管理节点为选择的处于备用状态的节点分配离线节点原有的标识信息,指示所选择的节点按该标识信息加入网络。 所述被选择的处于备用状态的节点根据标识信息,从离线节点的备份节点上取得离线节点的原有数据并存储。新加入的节点上是没有负载的,因此它启动这个过程对于物理设备是没有任何过大的压力的。 集中式资源池DHT网络的构建方法与上述分布式哈希表DHT网络的构建方法类似,这里不再赘述。 基于同一发明构思,本发明实施例还提供了一种DHT网络中的节点,其结构如图5所示,可以包括 接收模块501,用于接收所述网络外的节点加入所述网络的请求; 加入处理模块502,用于根据已加入所述网络的节点数目与处于备用状态的节点
数目,将所述网络外的节点加入所述网络或设置为备用状态。 如图6所示,一个实施例中,加入处理模块502可以包括 比较子模块601,用于将已加入所述网络的节点数目与处于备用状态的节点数目的比例值与设定比例值进行比较; 加入处理子模块602,用于在已加入所述网络的节点数目与处于备用状态的节点数目的比例值小于设定比例值时,将所述网络外的节点加入所述网络; 备用设置子模块603,用于在已加入所述网络的节点数目与处于备用状态的节点
数目的比例值不小于设定比例值时,将所述网络外的节点设置为备用状态。 如图7所示,一个实施例中,图5所示的DHT网络中的节点还可以包括
8
离线处理模块701,用于在确定所述网络中有节点离线时,选择处于备用状态的节点加入所述网络,存储离线节点的原有数据。 如图8所示,一个实施例中,离线处理模块701可以包括 第一选择子模块801,用于在处于备用状态的节点中,选择最先被设置为备用状态的节点加入所述网络; 或,第二选择子模块802,用于在处于备用状态的节点中,随机选择节点加入所述网络。 如图9所示,一个实施例中,离线处理模块701可以包括 分配子模块901,用于为选择的处于备用状态的节点分配离线节点原有的标识信息; 指示子模块902,用于指示所述选择的处于备用状态的节点按所述标识信息加入所述网络。 基于同一发明构思,本发明实施还提供了一种DHT网络中的节点,其结构如图10所示,可以包括 发送模块IOOI,用于发起加入所述网络的请求;以及,在接收到重新加入所述网络的指示后,重新发起加入所述网络的请求; 接收模块1002,用于在被设置为备用状态后,接收重新加入所述网络的指示。
—个实施例中,接收模块1002在接收到重新加入所述网络的指示时,还可以接收分配给所述网络中离线节点的原有标识信息。此时,如图11所示,图10所示的DHT网络中的节点还可以包括 获取模块1101,用于根据所述标识信息,从离线节点的备份节点获取离线节点的原有数据; 存储模块1102,用于存储获取的数据。 基于同一发明构思,本发明实施例还提供了一种DHT网络,可以包括
业务节点,包括用于发起加入所述网络的请求的发送模块; 管理节点,包括用于接收所述业务节点加入所述网络的请求的接收模块;以及,用于根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述业务节点加入所述网络或设置为备用状态的加入处理模块。 —个实施例中,所述管理节点为多个,分别设置于所述网络中的不同区域;各管理节点中的加入处理模块根据本区域内已加入的节点数目与处于备用状态的节点数目,将业务节点加入本区域或设置为备用状态。 上述DHT网络中,业务节点可处于不同状态如处于发起加入所述网络的请求的状态,在管理节点进行加入处理之后,业务节点可处于已加入所述网络的状态或未加入所述网络的备用状态。管理节点可以为一个或多个,若管理节点为一个,则与图3所示的集中式资源池DHT网络类似;若存在多个管理节点,则与图4所示的分布式资源池DHT网络类似。其中,图3、图4示出了已加入所述网络的节点与管理节点的关系。
本发明实施例中,接收所述网络外的节点加入所述网络的请求,根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态,使得节点的加入是可控的,不会出现大量节点一次性加入网络,造成数据在新加入节点间来回迁移的现象,可以减小网络受到的冲击,增强网络的稳定性。 在网络中有节点离线时,可以选择一个处于备用状态的节点来接替离线节点,离
线节点上的负载不会转移到后继节点,后继节点不会因过载继而离线,避免了网络中出现
大量节点恶性离线的可能性,进一步增强了网络的稳定性。 显然,本领域的技术人员可以对本发明进行各种改动和变形而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变形属于本发明权利要求及其等同技术范围之内,则本发明也意图包含这些改动和变形在内。
权利要求
一种分布式哈希表DHT网络的构建方法,其特征在于,该方法包括接收所述网络外的节点加入所述网络的请求;根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态。
2. 如权利要求1所述的方法,其特征在于,所述根据已加入所述网络的节点数目与处 于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态包括将已加入所述网络的节点数目与处于备用状态的节点数目的比例值与设定比例值进 行比较;在已加入所述网络的节点数目与处于备用状态的节点数目的比例值小于设定比例值 时,将所述网络外的节点加入所述网络;在已加入所述网络的节点数目与处于备用状态的节点数目的比例值不小于设定比例 值时,将所述网络外的节点设置为备用状态。
3. 如权利要求1所述的方法,其特征在于,该方法进一步包括确定所述网络中有节点离线时,选择处于备用状态的节点加入所述网络,存储离线节 点的原有数据。
4. 如权利要求3所述的方法,其特征在于,选择处于备用状态的节点加入所述网络包括在处于备用状态的节点中,选择最先被设置为备用状态的节点加入所述网络; 或,在处于备用状态的节点中,随机选择节点加入所述网络。
5. 如权利要求3所述的方法,其特征在于,选择处于备用状态的节点加入所述网络包括为选择的处于备用状态的节点分配离线节点原有的标识信息,指示所述选择的处于备 用状态的节点按所述标识信息加入所述网络。
6. 如权利要求5所述的方法,其特征在于,所述存储离线节点的原有数据包括 所述选择的处于备用状态的节点根据所述标识信息,从离线节点的备份节点获取离线节点的原有数据并存储。
7. —种DHT网络中的节点,其特征在于,包括 接收模块,用于接收所述网络外的节点加入所述网络的请求;加入处理模块,用于根据已加入所述网络的节点数目与处于备用状态的节点数目,将 所述网络外的节点加入所述网络或设置为备用状态。
8. 如权利要求7所述的节点,其特征在于,所述加入处理模块包括比较子模i央,用于将已加入所述网络的节点数目与处于备用状态的节点数目的比例值与设定比例值进行比较;加入处理子模块,用于在已加入所述网络的节点数目与处于备用状态的节点数目的比 例值小于设定比例值时,将所述网络外的节点加入所述网络;备用设置子模i央,用于在已加入所述网络的节点数目与处于备用状态的节点数目的比 例值不小于设定比例值时,将所述网络外的节点设置为备用状态。
9. 如权利要求7所述的节点,其特征在于,还包括离线处理模块,用于在确定所述网络中有节点离线时,选择处于备用状态的节点加入所述网络,存储离线节点的原有数据。
10. 如权利要求9所述的节点,其特征在于,所述离线处理模块包括第一选择子模块,用于在处于备用状态的节点中,选择最先被设置为备用状态的节点 加入所述网络;或,第二选择子模块,用于在处于备用状态的节点中,随机选择节点加入所述网络。
11. 如权利要求9所述的节点,其特征在于,所述离线处理模块包括 分配子模块,用于为选择的处于备用状态的节点分配离线节点原有的标识信息; 指示子模块,用于指示所述选择的处于备用状态的节点按所述标识信息加入所述网络。
12. —种DHT网络中的节点,其特征在于,包括发送模块,用于发起加入所述网络的请求;以及,在接收到重新加入所述网络的指示 后,重新发起加入所述网络的请求;接收模块,用于在被设置为备用状态后,接收重新加入所述网络的指示。
13. 如权利要求12的节点,其特征在于,所述接收模块进一步用于接收分配给所述网 络中离线节点的原有标识信息;所述DHT网络中的节点还包括获取模块,用于根据所述标识信息,从离线节点的备份节点获取离线节点的原有数据;存储模块,用于存储获取的数据。
14. 一种DHT网络,其特征在于,包括业务节点,包括用于发起加入所述网络的请求的发送模块;管理节点,包括用于接收所述业务节点加入所述网络的请求的接收模块;以及,用于根 据已加入所述网络的节点数目与处于备用状态的节点数目,将所述业务节点加入所述网络 或设置为备用状态的加入处理模块。
15. 如权利要求14所述的DHT网络,其特征在于,所述管理节点为多个,分别设置于所 述网络中的不同区域;各管理节点中的加入处理模块根据本区域内已加入的节点数目与处于备用状态的节点数目,将所述业务节点加入本区域或设置为备用状态。
全文摘要
本发明公开了一种分布式哈希表DHT网络的构建方法,该方法包括接收所述网络外的节点加入所述网络的请求;根据已加入所述网络的节点数目与处于备用状态的节点数目,将所述网络外的节点加入所述网络或设置为备用状态。本发明还公开了一种DHT网络中的节点、DHT网络。采用本发明可以减小网络构建时受到的冲击,增加网络的稳定性。
文档编号H04L12/56GK101729390SQ20081022465
公开日2010年6月9日 申请日期2008年10月22日 优先权日2008年10月22日
发明者欧阳聪星, 段晓东, 王光霁, 薛海强 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1