首页> 中国专利> 用于自组织网络的分布式散列机制

用于自组织网络的分布式散列机制

摘要

本发明涉及一种用于检索电信系统的分布式目录中的内容的方法,所述电信系统包括被安排在定向环形拓扑中的多个节点(900,…,2200),所述方法包括借助于分布式散列函数识别所述内容的存储位置的步骤,其中所述散列函数将元素映射到节点上,并且所述节点(1300)负责在该节点与其后续节点之间传送具有散列值的元素。本发明还涉及一种相应的计算机软件产品、电信设备和电信系统。

著录项

  • 公开/公告号CN101102250A

    专利类型发明专利

  • 公开/公告日2008-01-09

    原文格式PDF

  • 申请/专利权人 阿尔卡特朗讯公司;

    申请/专利号CN200710126918.0

  • 申请日2007-07-03

  • 分类号H04L12/437;H04L1/22;H04L12/56;

  • 代理机构北京市中咨律师事务所;

  • 代理人杨晓光

  • 地址 法国巴黎

  • 入库时间 2023-12-17 19:37:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-07-14

    未缴年费专利权终止 IPC(主分类):H04L12/437 专利号:ZL2007101269180 申请日:20070703 授权公告日:20101103

    专利权的终止

  • 2010-11-03

    授权

    授权

  • 2008-02-27

    实质审查的生效

    实质审查的生效

  • 2008-01-09

    公开

    公开

说明书

技术领域

本发明涉及一种用于检索分布式目录的内容的方法、计算机软件产品、电信设备和电信系统。

背景技术

拥有最小集中式基础设施的具有低操作支出(OPEX)的通信系统,通常使用重叠网络(例如对等网络)中的高度分布式数据库。它们实现自组织机制来创建健壮的拓扑并确保所存储数据的一致性。对负载均衡、备份策略和数据库查询的智能选路的使用增长,并且服务调用影响了那些网络的总效率。

I.Stoica、R.Morris、D.Liben-Nowell、D.Karger、M.F.Kaashoek、F.Dabek和H.Balakrishnan在IEEE/ACM网络汇刊第11卷1号(2003年2月)第17-32页的“CHORD:A Scalable Peer-to-peer Lookup Protocolfor Internet Appliations”中描述了一种解决方案,该解决方案形成重叠环形拓扑并且创建了至其随后网络节点的冗余链路。该冗余链路使网络能够容忍节点的故障。每个节点是用于查找问题的分布式数据库的一部分,并且因而负责完整存储数据的特定部分。对数据库的查询被路由到沿环形或沿称为指针的一些捷径上的后续节点,直到它到达负责的那个节点。为了节点故障的情况下的备份,每个节点将其数据转发到其随后的一个或多个节点。

Chord协议指明如何找到关键字的位置、新节点如何加入系统以及如何从现有节点的故障(或计划脱离)中恢复。其核心是,Chord提供了将关键字映射到负责它们的节点的散列函数的快速分布式计算。它使用一致散列。散列函数以高概率平衡负载,即所有节点接收大致相同数量的关键字。同样以高概率,当节点加入(或离开)网络时,仅关键字的有限部分被移动到不同位置。

Chord通过避免对每个节点知道每个其它节点的需求而提高了一致散列的可扩缩性。Chord节点仅需要很少的选路信息。由于所述信息是分布式的,因此节点通过与少数其它节点通信来解析散列函数。查找消息需要O(log n)跳。当节点加入或离开网络时,Chord必须更新选路信息;加入或离开需要O(log2 n)个消息。

一致散列函数利用基础散列函数来为每个节点和关键字分配标识符。节点标识符是通过散列节点IP地址而选出的,而关键字标识符是通过散列关键字而产生的。一致散列如下将关键字分配给节点:标识符被(线性排序)安排在标识符环中,即关于某种模数算法。关键字被分配给其标识符等于或遵循该标识符的第一节点。该节点称为关键字的后续节点。一致散列被设计为让节点以最小中断进入和离开网络。为在节点加入网络时维持一致散列映射,先前分配给后续节点的特定关键字现在变成被分配给加入的节点。当节点离开网络时,其所有已分配关键字被重分配给后续节点。

Chord针对备份和选路问题而使用到后续节点的链路。因此,备份数据不能针对负载均衡而被调整(leveraged),因为请求从后面接近负责节点,而所述备份数据是沿环形在前面被存储的。

新加入的节点必须被动地等待,直到它们被它们的前任并入网络中。这造成了加入时间不确定且统计分布的效应。预先选路数据库请求可以被改进。

发明内容

本发明的目的是提供一种具有改进的分布式数据库的分布式通信系统,其实现了负载均衡、即时加入并且更加高效。

这通过一种用于检索电信系统的分布式目录内容的方法而得到解决,其中所述电信系统包括被安排在定向环形拓扑中的多个节点,所述方法包括借助于分布式散列函数来识别所述内容的存储位置的步骤,其中所述散列函数将元素(element)映射到节点上,并且所述节点负责在该节点与其后续节点之间传送具有散列值的元素。

优选地,冗余后续链路被用在相反方向中,即与所述环形方向相反,以识别相邻节点用于复制数据从而在节点故障的情况下在该相邻节点生成备份。

预先优选地在最可能涉及查找选路的节点上为了备份而复制数据。

并且,优选地通过如下操作插入新节点:首先建立新节点至其前任节点的绑定,同时该前任节点保持完全连接到其后续节点,然后从所述前任节点将所述元素传送到所述新节点,之后,后续和冗余链路从所述前任节点被传送到所述新节点,以及最后,将该新节点加入到所述环形拓扑中,然后由所述前任节点用至所述后续节点的链路来更新冗余链路。

尤其是通过一种计算机软件产品而解决了所述问题,该计算机软件产品包括适于实现所述方法的编程装置。所述程序通常在电信设备或作为节点而包括这种电信设备的整个电信系统中被执行。

本发明具有几个优点。在等分布式(实际)查找中,可以达到负载的显著减小。在一些资源相比其它资源更多地被请求(即对节点的请求集中)的异构场景中,甚至有更好的改进。

根据本发明安排的备份数据可以对于负载均衡而被调整。最后避免了不必要的“鹿跳”。消息选路需要对于每个查询减少一跳。Chord中对前任节点的稳定试通(ping)不是必要的。该新方法提供了更高的数据一致性等级,这是因为加入节点在其最终即时加入所述环形拓扑之前首先接管其负责的所有数据。预先地,加入时间仅取决于要传送到加入节点上的数据量,并且不是随机分布的。在节点以非常高的速率(周转率(churn rate))离开和加入的情况下,稳定性更快地降低。由于实际系统的周转率较低,因此这是理论问题。本发明描述了类Chord系统的三个变型,其带来了在数据一致性和节点的峰值请求处理负载方面的显著优势。

附图说明

通过附图来详细说明本发明,其中:

图1示出了根据本发明的方法中的节点责任;

图2示出了根据现有技术的Chord方法中的节点责任;

图3示出了根据本发明的方法中的冗余管理;

图4示出了根据本发明的方法中的复制;

图5示出了根据本发明的方法中的冗余和复制的组合;

图6示出了根据本发明的方法中的加入节点;

图7示出了根据本发明的方法当节点加入时的数据传送;

图8示出了根据本发明的方法中的离开节点。

具体实施方式

本发明包括重叠网络以及如分布式数据库的网络单元和用于运行该网络的机制。所述重叠网络拓扑是环形,其非常类似于已知的现有技术对等网络Chord。引入了一些用于消息选路、数据责任和数据备份的新的有利机制。

在基本上不需要使用限制可扩缩性和增加OPEX的中央控制单元的情况下(除一些引导程序支持外),所述重叠网络由任意数量的节点构成。每个节点都具有唯一的标识符,并且创建到具有后续更高标识符的节点的链路。所述机制导致环形拓扑,其中相邻节点充当节点(I)的前任节点(P)或后续节点(S)。

图1示出了环形的一部分,其包括节点900、1200、1300、1500、1900、2200。每个节点负责必须被存储在分布式数据库中的关键字/值对。已知的散列函数将数据映射到关键字。每个节点负责存储位于它本身与它后续节点之间的关键字。

节点之间的消息是通过将消息转发到具有比目的标识符小的标识符的下一已知节点来被路由的(等于重用关键字)。

图1示出了关键字1400的查找。从具有所示指针表的第一节点900开始,根路径必须遵循所述指针,其在目的节点1300结束。该节点负责关键字1400。所述指针由箭头示出。应当指出,从目的节点1300到沿环形的下一节点1500不存在任何鹿跳。

沿所述环形(经由后续节点)或者沿一些捷径链路(称为指针)来接近已知节点。一种机制确保存储在数据库中的数据在前任节点上被复制。如果数据库查询已由该前任节点回答,则达到负载均衡。加入节点在并入拓扑之前从其新前任节点接收其负责的数据。节点到环形中的并入是与其它节点无关地在数据传送之后即时完成的。如果节点带着其数据库部分离开环形,则其前任节点变成负责所述数据。

本发明是按照与已知Chord算法的差别来描述的。通过构成相同部分创建环形拓扑的Chord重叠网络在图2中示出。其差别在于,当寻找关键字1400时,目的节点1300经由所述指针而被访问,并且因而到最终目的节点1500的另一跳是必要的,因为该节点在Chord中负责关键字1400。在Chord中,如果关键字等于或小于其自己的标识符并且大于其前任节点的标识符,则该节点应当负责存储该关键字/值对。

每个节点负责保持一列后续节点为最新,以确保所述环形拓扑在节点故障的情况下保持闭合。为了备份,所述后续节点从其所有前任节点复制数据库内容。通过使用直接各个击破(straight forward divide and conquer)算法,消息以最大O(log n)跳到达其目的地。

负载均衡通过组合数据复制和拓扑冗余机制而得到改进。在Chord以及改进的那个中,所述环形拓扑通过添加附加的冗余后续链路来对抗节点故障。

图3示出了冗余因子为5的情况下的原理。在Chord中,所述链路也被用于数据复制:节点900还在其后续节点1200、1300、1500...(取决于冗余因子)存储其数据。如果节点900离开网络,则节点1200变成负责所述数据。由于沿环形的选路方向是从低到高标识符,因此任何数据库请求将被自动路由到节点1200。

在根据本发明的方法中,所述冗余后续链路在反方向中被重新用于数据复制,以在节点故障的情况下在相邻节点生成备份。

图4和5示出了新的备份策略。与Chord相反,数据在具有较低标识符的节点被复制。为了备份而使用的复制数据位于查找选路中最可能涉及到的节点上。因此,这些节点当它们拥有数据的有效拷贝时可能已经回答了查找查询。随之,达到了分散查询以及甚至减小业务峰值的负载均衡行为。

一致的即时加入和数据复制是对于通信系统的另外的要求。本发明系统不同于Chord是在于,加入节点在完全加入环形拓扑之前从其前任节点接管其将负责的所有数据。

基本加入过程仅取决于加入节点和其前任节点的消息和状态机。在数据的传送之后,在不依赖于第三节点的情况下,加入节点可以即时被并入选路拓扑中。冗余链路以及复制链路被即时检验。

图6示出了所述环形中新节点1300的初始加入。图7示出了在前任节点1200后面的加入环形的新节点1300的加入场景。在加入过程中,所述节点执行以下步骤:首先,将该新节点1300绑定到其前任节点1200,同时该前任节点1200在加入过程中保持完全连接到其后续节点1500。在分布式散列表信息从前任节点1200传送到新节点1300之后,后续和冗余链路从前任节点1200被传送到新节点1300。最后,新节点1300通过联系后续节点1500而完全加入到所述环形中。前任节点1200将其至后续节点1500的链路的类型从后续模式改变为冗余模式。来自新节点1300的复制链路是基于来自其新前任的请求而被连续建立的。

相反,在Chord中,加入节点首先完成闭合拓扑,并且然后接管数据。加入由后续节点处理。环形拓扑及其一致数据备份取决于加入节点I与其前任P1之间的稳定前任链路。所述链路在P1接收到其前任的信息之前不被建立,所述信息是关于新的节点已经变成其新的后续节点。

因为所述过程在稳定算法中被周期性地执行,所以加入节点在其被并入拓扑中之前必须被动等待该稳定算法。

在修改的Chord中,如果节点出故障,并且节点的加入即时发生并且可以在不需要等待任何稳定时期的情况下由参与节点主动完成,则数据完整性在加入过程中高得多。

图7示出了如果节点1300以冗余因子2加入拓扑则必须被受影响节点移动的数据,其中所述冗余因子2指示每个节点跟踪两个在前节点并且因此充当针对这些节点负责的数据的备份节点。前任节点1200处理加入过程。它发送针对关键字(1300-1500)的数据,因为新节点1300将负责那些关键字。另外,针对关键字(1500-2200)的数据被发送,因为新节点1300充当针对该数据的备份。节点500、900和1200当其备份间隔已减小时丢弃数据。后续节点1500不受所述过程的影响。

通过转移数据责任来减少选路是通过使节点负责等于或高于其自己的身份但低于其后续的身份的所有关键字值对来达到的。因此,对消息的选路改变很小。

在现有技术的Chord选路算法中,请求必须接近负责节点的直接前任节点,这是因为只有该前任明确知道所请求的关键字位于它自己和该负责节点之间。该前任是被允许将请求转发到身份高于目的关键字的节点的唯一节点。这通常导致最后一跳(这里称为“鹿跳”),见图2。

这里描述的本发明系统中,消息的目的地是在先节点。“鹿跳”问题消失。因此,到目的地的平均跳数减一,这因而以一个因子而改进了总性能。

图8示出了移除新节点1300的过程。由该节点1300传送的元素必须以反环形方向传播,如由箭头所示的那样。之后,与该节点1300的链路关联必须被移除,并且该节点的后续和前任节点之间的环形关联必须被维护,即该环形必须闭合并且恢复链路必须相应地被维护。

下面,作为伪码符号的算法而公开了修改。

假设Nid为当前节点,Fi为指针i,以及Nlist、succ为一列后续节点。两种算法显示了标准Chord和增强型Chord系统的选路算法之间的差别。这两种系统都在它们的到最终目的地的路径上将它们的消息转发给其身份尽可能大但小于或等于该消息的目的身份的节点。

尽管对于增强型Chord,单个过程已经导致最终目的地,但标准Chord需要用于最后一跳(“鹿跳”)的附加过程。这是因为节点负责的不同范围:在增强型Chord系统中,节点负责它自己与下一后续节点之间的区域。在标准Chord中,节点负责在它前任节点与它自己之间的区域。因此,消息必须在实际目的身份后面被路由一次。这可以仅由前任节点来完成,因为它是能够排除在目的身份和负责节点之间不存在任何其它对等体的仅有对等体,因为这是前任节点的后续节点。在下面的过程中描述鹿跳。

过程1.2 N.Find(关键字:要找的标识符)

/*找到关键字的下一跳节点*/

if key∈(Npred;Nid)then

     node<=Nid

else

     if key∈(Nid;Nsucc)then

          node<=Nid

     else

          node<=closest-preceding-finger(key)/*过程1.1*/

     if node=Nid then

          /*鹿跳*/

          node<=Nsucc

return node

维护过程在两种系统中类似。

过程1.3 N.receive(msg)

/*处理消息*/

Node=N.find(msg.dest)/*过程1.2*/

If node=Nid

     /*Nid负责该消息*/

     doSomething(msg)

else

    forward(msg,node)

过程2.2 N.receive(msg)

/*处理消息*/

Node=N.getNextHop(msg.dest)/*过程2.1*/

If node=Nid

     /*Nid负责该消息*/

     doSomething(msg)

else

     forward(msg,node)

避免了过程的鹿跳如下:

过程1.1 N.closest-preceding-finger(关键字)

/*找到关键字的最近的在前指针*/

node<=Nid

for i<-m down to 1 do

     if Fi is alive and Fi∈(Nid;key)then

           node<=Fi

           break

for all s in Nlist,succ do

     ifs is alive and s∈(node;key)then

           node<=s

           break

return node

过程2.1 N.getNextHop(关键字)

/*找到关键字的下一跳节点*/

node<=Nid

for i<-m down to 1 do

     if Fi is alive and Fi∈(Nid;key)then

           node<=Fi

           break

for all s in Nlist,succ do

     if s is alive and s∈(node;key)then

           node<=s

           break

return node

应当指出,电信设备的功能中多于50%涉及数据库检索,例如从服务器检索媒体(电子邮件、消息、多媒体...)、寻址(电话、互联网、媒体访问控制、用户信息、联系点)等。因此,针对查询的高效数据结构的资料检索能力(relevance)对于电信系统是极其重要的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号