将节点加入点对点环链的方法及装置的制作方法

文档序号:7741653阅读:162来源:国知局

专利名称::将节点加入点对点环链的方法及装置的制作方法
技术领域
:本发明涉及通信
技术领域
,尤其涉及一种将节点加入点对点环链的方法及装置。
背景技术
:Chord协议是由麻省理工学院(MIT,MassachusettsInstituteofTechnology)提出的结构化点对点(P2P,PointtoPoint)协议,根据该协议,每个节点分别用互不相同的节点ID进行标示,而每个节点对应的关键字也分别用互不相同的关键字ID进行标示,其中,一般通过采用一致性哈希算法或其他P2P算法分别对各节点的特征信息(比如节点的IP地址等唯一的特征信息)进行计算,从而得到各个节点的节点ID值,当节点ID长度被设置为m时,节点ID值的取值范围为W2m-l]。根据Chord协议,节点可以组成一个节点环(也称点对点环链),如1所示即为节点ID长度为3的点对点环链,点对点环链上的数字代表节点ID值,点对点环链上的符号“眷”用以表示已加入该环中的节点(图中节点ID值0、1、3所对应的节点即为已加入该环中的节点),环上的每个节点都有一个后继节点(successornode),也有一个前驱节点,针对加入点对点环链上的任一节点n,其后继节点是指在点对点环链上沿顺时针方向距离节点η最近的节点,而节点η的前驱节点则是指在点对点环链上沿逆时针方向距离节点η最近的节点。在点对点环链中,每个节点只需要保存自身的前驱节点和后继节点的地址信息就能够保证整个点对点环链上的节点构成的网络的连通性,节点维护地址信息是通过维护大小为0(m)的指针表(fingertable)来实现的,例如针对节点n,其指针表的第i项是在点对点环链上距离节点η至少2Η的第一个节点s,可用公式表示为s=successor^"),其中,1≤i≤m。如图加所示,为一个点对点环链及环上的节点维护的指针表的示意图,图中的节点ID值0、1、3对应的节点各维护有一张指针表,以节点0为例,其维护的指针表中包含有节点ID值为1、3的节点的地址信息;如图2b所示,为另一个点对点环链及环上的节点维护的指针表的示意图,其中,节点ID值为8的节点所维护的指针表中不仅存储有与该节点相邻的节点的节点ID值14,还存储有与该节点比较靠近的节点的节点ID值21、32、42,需要说明的是,节点ID值为14的节点的指针表中还存储有用户标识与节点标识的对应关系,其中,用户标识是采用一致性哈希算法对用户的特征信息(比如用户手机号码等唯一的特征信息)进行计算后得到的,该指针表中存储的用户标识与节点ID值的对应关系可以理解为节点ID值为14的节点存储的用户数据为用户标识为913的用户所提供的用户数据,节点ID值为21的节点存储的用户数据为用户标识为1416的用户所提供的用户数据。节点所存储的用户数据一般可以看做是节点的静态负荷,任意一个节点被分配的静态负荷是与该节点的节点ID值与其前驱节点的节点ID值的差值有关的,一般地,该差值越大,该节点被分配的静态负荷越大,比如,以图2b为例,节点ID值为21的节点与其前驱节点(节点ID值为14)的节点ID值之差为7,此时节点ID值为14的节点被分配的静态负荷为3个用户(即用户标识1416所对应的用户)所提供的用户数据;而节点ID值为32的节点与其前驱节点(节点ID值为21)的节点ID值之差为11,此时节点ID值为32的节点被分配的静态负荷为8个用户(即用户标识17M所对应的用户)所提供的用户数据。若当前有4个节点接入到ID长度为3的点对点环链上,则该4个节点的理想分布情况如图3a所示,在该理想状态下,接入到该点对点环链上的4个节点分布均勻,任一节点与其自身的前驱节点的节点ID的差值与其他节点与其他节点的前驱节点的节点ID值的差值相等,此时分别为各个节点分配的静态负荷也较为平衡;而在现有技术中,当按照一致性哈希算法对节点ID进行计算,并按照计算得到的节点ID值将节点接入到点对点环链时,接入到点对点环链上的4个节点往往如图北所示,一般地,按照一致性哈希算法计算的节点ID所对应的节点的分布情况符合正态分布的统计规律,即有少部分节点与自身的前驱节点的节点ID值的差值为一个较大的值或较小的值,而大部分节点与自身的前驱节点的节点ID值的差值为介于上述较小的值与较大的值之间的中间值,即点对点环链上的大部分节点分布比较均衡,但有小部分节点的分布不均衡,从而整个点对点环链上的节点分布是处于一种不均衡的状态,由上述节点ID值的差值与静态负荷分配的对应关系可知,该状态下,点对点环链上的节点被分配的静态负荷也处于不均衡的状态。综上所述,按照现有技术中的节点ID值计算方式会导致点对点环链上的节点被分配的静态负荷处于一种不均衡的状态,在该状态下,可以考虑在点对点环链上新加入节点以平衡当前的静态负荷分配,但当节点加入点对点环链时,按照一致性哈希算法计算得到的该新加入点对点环链的节点的节点ID值可能与其前驱节点的节点ID值的差值仍然很小或很大,因此也不能很好地缓解静态负荷分配不平衡的问题。
发明内容本发明实施例提供一种将节点加入点对点环链的确定方法及装置,用以解决现有技术中采用一致性哈希算法计算加入点对点环链的节点的节点ID值的方式不能很好地缓解静态负荷分配不平衡的问题。本发明实施例采用以下技术方案一种将节点加入点对点环链的方法,包括根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定所述待加入点对点环链的节点的初始节点标识值;根据所述初始节点标识值以及已加入所述点对点环链的节点的节点标识值,确定所述待加入点对点环链的节点的前驱节点,并确定所述初始节点标识值与所述前驱节点的节点标识值的第一差值;从点对点环链上的指定范围内选取预定数目的连续分布的节点,并分别确定选取的节点中的相邻节点的节点标识值的第二差值;比较所述第二差值中的最小差值与所述第一差值之差是否大于预定阈值;在比较结果为是时,从所述第二差值中选取一个差值,并从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的所述节点标识值作为所述待加入点对点环链的节点的节点标识值,将所述待加入点对点环链的节点加入所述点对点环链。较佳地,所述预定阈值为所述最小差值的二分之一。较佳地,从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值具体包括确定介于所述两个节点标识值之间的中间值,并选取所述5中间值。较佳地,所述算法为一致性哈希算法。较佳地,从所述第二差值中选取一个差值具体为从所述第二差值中选取最大的一个差值。一种将节点加入点对点环链的装置,包括初始节点标识值确定单元,用于根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定所述待加入点对点环链的节点的初始节点标识值;第一差值确定单元,用于根据已加入所述点对点环链的节点的节点标识值以及初始节点标识值确定单元确定的初始节点标识值,确定所述待加入点对点环链的节点的前驱节点,并确定所述初始节点标识值与所述前驱节点的节点标识值的第一差值;第二差值确定单元,用于从点对点环链上的指定范围内选取预定数目的连续分布的节点,并分别确定选取的节点中的相邻节点的节点标识值的第二差值;比较单元,用于比较第二差值确定单元确定的所述第二差值中的最小差值与第一差值确定单元确定的第一差值之差是否大于预定阈值;节点加入执行单元,用于在比较单元得到的比较结果为是时,从所述第二差值中选取一个差值,并从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的所述节点标识值作为所述待加入点对点环链的节点的节点标识值,将所述待加入点对点环链的节点加入所述点对点环链。本发明实施例通过首先确定待加入点对点环链的节点的初始节点标识值与其前驱节点的节点标识值的第一差值,然后从点对点环链上的指定范围内选取预定数目且连续分布的节点,并分别确定选取的节点中相邻节点的节点标识值的第二差值,通过比较第一差值和第二差值中的最小差值,并在比较得到最小差值与第一差值之差大于预定阈值时,从第二差值中选取一个差值,并从介于相减得到选取的该差值的两个节点标识值之间的节点标识值中选取一个节点标识值,并以选取的节点标识值对应的节点标识作为待加入点对点环链的节点的节点标识,将待加入点对点环链的节点加入点对点环链,从而本发明实施例提供的方案在将待加入点对点环链的节点加入点对点环链时,考虑到了当前已加入点对点环链的节点的分布情况,在初始节点标识值与上述前驱节点的节点标识值的差值较小而当前已加入点对点环链的节点中存在静态负荷较重的节点时(即选取的节点中的相邻节点的节点标识值的最小差值与第一差值之差大于预定阈值时),利用该待加入点对点环链的节点为静态负荷较重的节点分担部分静态负荷,从而解决了现有技术中采用一致性哈希算法计算加入点对点环链的节点的节点ID值的方式不能很好地缓解静态负荷分配不平衡的问题。图1为为节点ID长度为3的点对点环链的示意图;图加为为一个点对点环链及环上的节点维护的指针表的示意图;图2b为另一个点对点环链及环上的节点维护的指针表的示意图;图3a为4个节点接入到ID长度为3的点对点环链上时的节点理想分布状态示意图;图北为按照一致性哈希算法将节点接入到点对点环链时的节点分布状态示意图;图4为本发明实施例提供的一种节点加入点对点环链的方法的具体流程示意图;图fe为当前有节点M将要加入到点对点环链中的示意图;图恥为本发明实施例提供的方案在实际中的应用流程示意图;图5c为本发明实施例中的邻区深度示意图;图6为本发明实施例提供的一种将节点加入点对点环链的装置的具体结构示意图。具体实施例方式本发明实施例提供一种利用新加入点对点环链的节点使点对点环链中分配给节点的静态负荷能够在局部进行重新分配,解决现有技术采用一致性哈希算法计算加入点对点环链的节点的节点标识值的方式不能很好地缓解静态负荷分配不平衡的问题。下面结合各个附图对本发明实施例技术方案的主要实现原理具体实施方式及其对应能够达到的有益效果进行详细的阐述。本发明实施例首先提供一种节点加入点对点环链的方法,该方法的具体流程示意图如图4所示,包括以下步骤步骤41,根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定待加入点对点环链的节点的初始节点标识值,其中,这里的算法可以是一致性哈希算法,也可以是现有技术中已有的其他一些用于计算节点标识值的算法;步骤42,根据确定的初始节点标识值以及已加入点对点环链的节点的节点标识值,确定待加入点对点环链的节点的前驱节点,并确定初始节点标识值与前驱节点的节点标识值的第一差值,根据前述
背景技术
可知,任意一个节点被分配的静态负荷是与该节点的节点标识值与其前驱节点的节点标识值的差值有关的,一般地,该差值越大,该节点被分配的静态负荷越大,因此,本发明实施例中,可以以上述第一差值来作为衡量待加入点对点环链的节点被分配的静态负荷的大小的一个参数;步骤43,从点对点环链上的指定范围内选取预定数目且连续分布的节点,并确定选取的节点中相邻节点的节点标识值的第二差值,在本发明实施例中,从点对点环链上的指定范围内选取预定数目且连续分布的节点可以是以待加入点对点环链的节点的初始节点标识值对应的点对点环链上的位置作为起始位置,按照顺时针方向,依次选取该待加入点对点环链的节点的后继节点以及与该后继节点相邻的、连续分布的节点,直至选取的节点的数目与预定数目一致,或者,也可以按照逆时针方向,依次选取该待加入点对点环链的节点的前驱节点以及与该前驱节点相邻的、连续分布的节点,直至选取的节点的数目与预定数目一致;步骤44,比较上述第二差值中的最小差值与第一差值之差是否大于预定阈值,若比较结果为是,执行步骤45,否则,执行步骤46;步骤45,从第二差值中选取一个差值,并从介于相减得到选取的该差值的两个节点标识值之间的节点标识值中选取一个节点标识值,并以选取的该节点标识值作为待加入点对点环链的节点的节点标识值,将待加入点对点环链的节点加入点对点环链,其中,这里的预定阈值可以为最小差值的二分之一,而从第二差值中选取一个差值时,考虑到尽可能使点对点环链上的节点分布比较均衡的原则,可以从第二差值中选取最大的一个差值,从而待加入点对点环链的节点在加入点对点环链时是加入到间隔最远的两个节点之间;步骤46,以初始节点标识值作为待加入点对点环链的节点的节点标识值,将待加入点对点环链的节点加入点对点环链,或者,在本发明实施例中,即使比较结果为否,如果考虑到可以利用待加入的节点分担更大的静态负荷,也可以从第二差值中选取与第一差值之间的差值大于预定阈值的其他第二差值中选取一个差值,并从介于相减得到选取的该差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的该节点标识值作为待加入点对点环链的节点的节点标识值,将待加入点对点环链的节点加入点对点环链。需要说明的是,上述步骤45中从介于相减得到选取的差值的两个节点标识值之间的节点标识值中选取一个节点标识值具体可以为首先,确定介于相减得到选取的差值的两个节点标识值之间的中间值;然后,再选取该中间值。以下以本发明实施例提供的该方案在实际中的应用为例,详细说明本方案的实际应用流程按照本发明实施例提供的方案,当前有节点M将要加入点对点环链时,通过一致性哈希算法或其他现有技术中提供的节点标识值计算方法对该节点的特征信息进行计算,能够得到该节点的初始节点标识值,根据初始节点标识值以及当前已加入到点对点环链的节点的节点标识值,可以确定出将要加入的该节点的前驱节点和后继节点,如图fe所示,假设节点M当前将要的点对点环链为点对点环链,且确定出该节点的前驱节点的节点序号为M的节点,而其后继节点的序号为M+1的节点。在确定出该节点的前驱节点和后继节点后,按照本发明实施例提供的方案,可以进一步按照如图恥所示的下述步骤完成将该节点加入到点对点环链中步骤51,确定该将要加入到点对点环链的节点与其前驱节点M的节点标识值的第一差值;步骤52,从将要加入到点对点环链的节点的后继节点开始,按照逆时针方向,选取连续分布的N个邻区节点,该N可以称为邻区深度,该邻区深度示意图如图5c所示,在本发明实施例中,根据点对点环链的规模,可以动态地调整N的大小;步骤53,确定选取的N个邻区节点中的相邻节点的节点标识值的差值,并从确定的差值中确定出最大差值和最小差值;步骤M,比较上述第一差值是否小于上述最小差值的二分之一,在比较结果为是时,执行步骤阳,否则,执行步骤56;步骤55,在本发明实施例中,假设节点M+N-1与节点M+N的节点标识值的差值为上述最大差值,则在介于节点M+N-1与节点M+N的节点标识值之间的节点标识值中选取一个节点标识值作为该将要加入点对点环链的节点的节点标识值,将该将要加入点对点环链的节点加入到点对点环链中;步骤56,以上述初始节点标识值作为该将要加入点对点环链的节点的节点标识值,将该将要加入点对点环链的节点加入到点对点环链中。需要说明的是,当将本发明实施例提供的方法应用到点对点环链中包含大量节点的情况时,根据一致性哈希算法或其他节点标识值计算方法确定出待加入点对点环链的节点的初始节点标识值能够指示该待加入点对点环链的节点在点对点环链上的大致位置范围,进一步地,通过上述步骤5255,能够确定该范围内存在的承担较大静态负荷的节点,并利用该待加入点对点环链的节点对该较大的静态负荷进行分担,从而能够从一定程度上解决点对点环链上的节点被分配的静态负荷不均衡的问题,增强了系统的鲁棒性。相应地,本发明实施例还提供了一种将节点加入点对点环链的装置,该装置的具体结构示意图如图6所示,包括以下功能单元初始节点标识值确定单元61,用于根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定待加入点对点环链的节点的初始节点标识值,比如,可以采用一致性哈希算法等现有技术中提供的用于计算节点标识值的算法来计算该初始节点标识值;第一差值确定单元62,用于根据已加入点对点环链的节点的节点标识值以及初始节点标识值确定单元61确定的初始节点标识值,确定待加入点对点环链的节点的前驱节点,并确定初始节点标识值与述前驱节点的节点标识值的第一差值;第二差值确定单元63,用于从点对点环链上的指定范围内选取预定数目的连续分布的节点,并确定选取的节点中的相邻节点的节点标识值的第二差值;比较单元64,用于比较第二差值确定单元63确定的第二差值中的最小差值与第一差值确定单元62确定的第一差值之差是否大于预定阈值,其中,本发明实施例中的该预定阈值可以但不限于为最小差值的二分之一;节点加入执行单元65,用于在比较单元64得到的比较结果为是时,从第二差值确定单元确定的第二差值中选取一个差值(比如,可以从第二差值中选取最大的一个差值),并从介于相减得到选取的差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的节点标识值作为待加入点对点环链的节点的节点标识值,将待加入点对点环链的节点加入点对点环链;以及在比较单元64得到的比较结果为否时,以初始节点标识值确定单元61确定的初始节点标识值作为待加入点对点环链的节点的节点标识值,将待加入点对点环链的节点加入点对点环链,也可以根据待加入点对点环链的节点的特征信息,采用其他方式确定该待加入点对点环链的节点的节点标识值后,将待加入点对点环链的节点加入点对点环链。其中,节点加入执行单元65从介于相减得到选取的差值的两个节点标识值之间的节点标识值中选取一个节点标识值具体可以为确定介于相减得到选取的差值的两个节点标识值之间的中间值,并选取该中间值。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求1.一种将节点加入点对点环链的方法,其特征在于,包括根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定所述待加入点对点环链的节点的初始节点标识值;根据所述初始节点标识值以及已加入所述点对点环链的节点的节点标识值,确定所述待加入点对点环链的节点的前驱节点,并确定所述初始节点标识值与所述前驱节点的节点标识值的第一差值;从点对点环链上的指定范围内选取预定数目的连续分布的节点,并分别确定选取的节点中的相邻节点的节点标识值的第二差值;比较所述第二差值中的最小差值与所述第一差值之差是否大于预定阈值;在比较结果为是时,从所述第二差值中选取一个差值,并从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的所述节点标识值作为所述待加入点对点环链的节点的节点标识值,将所述待加入点对点环链的节点加入所述点对点环链。2.如权利要求1所述的方法,其特征在于,所述预定阈值为所述最小差值的二分之一。3.如权利要求1所述的方法,其特征在于,从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值具体包括确定介于所述两个节点标识值之间的中间值,并选取所述中间值。4.如权利要求13任一所述的方法,其特征在于,所述算法为一致性哈希算法。5.如权利要求13任一所述的方法,其特征在于,从所述第二差值中选取一个差值具体为从所述第二差值中选取最大的一个差值。6.一种将节点加入点对点环链的装置,其特征在于,包括初始节点标识值确定单元,用于根据待加入点对点环链的节点的特征信息,利用预设的用于计算节点标识值的算法,确定所述待加入点对点环链的节点的初始节点标识值;第一差值确定单元,用于根据已加入所述点对点环链的节点的节点标识值以及初始节点标识值确定单元确定的初始节点标识值,确定所述待加入点对点环链的节点的前驱节点,并确定所述初始节点标识值与所述前驱节点的节点标识值的第一差值;第二差值确定单元,用于从点对点环链上的指定范围内选取预定数目的连续分布的节点,并分别确定选取的节点中的相邻节点的节点标识值的第二差值;比较单元,用于比较第二差值确定单元确定的所述第二差值中的最小差值与第一差值确定单元确定的第一差值之差是否大于预定阈值;节点加入执行单元,用于在比较单元得到的比较结果为是时,从所述第二差值中选取一个差值,并从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值,以选取的所述节点标识值作为所述待加入点对点环链的节点的节点标识值,将所述待加入点对点环链的节点加入所述点对点环链。7.如权利要求6所述的装置,其特征在于,所述预定阈值为所述最小差值的二分之一。8.如权利要求6所述的装置,其特征在于,所述节点加入执行单元从介于相减得到选取的所述差值的两个节点标识值之间的节点标识值中选取一个节点标识值具体包括确定介于所述两个节点标识值之间的中间值,并选取所述中间值。9.如权利要求68任一所述的装置,其特征在于,所述算法为一致性哈希算法。10.如权利要求68任一所述的装置,其特征在于,从所述第二差值中选取一个差值具体为从所述第二差值中选取最大的一个差值。全文摘要本发明公开一种将节点加入点对点环链的确定方法及装置,以解决采用一致性哈希算法计算加入点对点环链的节点的节点ID值不能很好地缓解静态负荷分配不平衡的问题。方法包括确定待加入点对点环链的节点的前驱节点,并确定待加入点对点环链的节点的初始节点标识值与前驱节点标识值的第一差值;从指定范围内选取连续分布的节点,并分别确定选取的节点中的相邻节点的节点标识值的第二差值;比较第二差值中的最小差值与第一差值之差是否大于预定阈值;比较为是时,从第二差值中选取一个差值,并从介于相减得到选取的差值的两个节点标识值之间的节点标识值中选取一个节点标识值作为待加入的节点的节点标识值,将待加入的节点加入点对点环链。文档编号H04L29/08GK102148840SQ20101010726公开日2011年8月10日申请日期2010年2月5日优先权日2010年2月5日发明者乐利锋,叶松海,周乃宝,李刚申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1