一种基于Chord网络模型的改进数据复制方法与流程

文档序号:11156884阅读:438来源:国知局
本发明属于数据复制
技术领域
:,尤其涉及一种基于Chord网络模型的改进数据复制方法。
背景技术
::在过去的几年里,P2P网络已经成为关注的焦点,已经成为构建大规模分布式应用的范例。P2P网络是一种分布式网络,打破了传统的Client/Server(C/S)模式,网络中每个节点地位都是对等的,没有中心化的服务器,不存在系统瓶颈,每个节点既充当客户端又充当服务器,因而具有很高的资源利用率。P2P网络分为非结构化和结构化网络。以Gnutella为代表的非结构化P2P网络,不存在目录服务器,解决了单点瓶颈问题,不存在单一故障点。然而其缺点也是明显的:采用洪泛机制加重了网络通信负担,其查询机制在系统规模扩大时不具有可扩展性;另外,由于查询报文被限制在特定的范围内,所以并不能保证一定可以找到网络中存在的目的数据。结构化P2P网络实现了节点之间在应用层的互连,然而当节点故障时如何保证数据的可用性成为必须要解决的问题。在节点失效情况下保证数据可用性最基本和必要的手段,就是要对存储的数据做一定的冗余。没有冗余的数据,节点故障后,其上的数据必然无法恢复。DHT网络中,需要找到一个最合适的节点集合来存放冗余数据,以达到最好的数据持久性。不适当的节点组合将可能极大地消耗系统带宽,甚至威胁系统中数据的持久性。例如,将数据的多个副本放在一个错误相关的节点集合上,即节点集合中的节点可能由于区域断网或断电而同时离线。这样即便有多个数据副本,也容易出现数据不可用的情况。为了更好地支持对P2P网络的扩展,更好地管理和维护在P2P网络各个节点的信息,提供更高效和快速的查询下载服务,P2P网络由无序向有序发展,由非结构化向结构化发展,许多研究小组在设计和扩展的查找机制方面做了大量地研究工作,提出了Chord[Stoica,Ion,Morris,Robert,Karger,David,Kaashoek,M.Frans,&Balakrishnan,Hari.(2003).Chord:ascalablepeer-to-peerlookupserviceforinternetapplications.IEEE/ACMTransactionsonNetworking,11(4),149-160]、Pastry、CAN和Tapestry等用于构建结构化P2P的DHT。这些系统已经被证明是在大规模分布式环境下[Lakshman,A.,&Malik,P.(2010).Cassandra:adecentralizedstructuredstoragesystem.AcmSigopsOperatingSystemsReview,44(2),35-40],数据存储和检索有效并且可扩展的很好的方法。各种DHT的实现算法,不论是Chord,Pastry还是其它,其最直接的目标就是以最快的速度来定位到期望的节点,并不关心资源数据是如何冗余存储的,只是从算法层面研究资源的取得。为了在P2P网络中提高数据可用性,现有文献的数据复制方法。在路径复制方法中,副本被存储在所有转发该请求消息的节点中。这样大大增加了节点的负载。DHash的实现应用了叶子复制方法,将数据副本存储在r/2个后继节点和(r/2)-1个前继节点中,其中r为复制因子,也就是网络中数据的副本个数。协作文件系统的实现应用了后继复制方法,这种方法将数据副本存储在根节点的r-1个后继节点中。由于除非查找节点已经有数据的副本,否则搜索请求通常被路由给根节点,所以这种方法并没有最小化搜索路径。RelaxDHT[Legtchenko,S.,Monnet,S.,Sens,P.,&Muller,G.(2012).Churn-resilientreplicationstrategyforpeer-to-peerdistributedhash-tables.AcmTransactionsonAutonomous&AdaptiveSystems,7(2),439-447]提出了另外一种复制策略,比传统DHT协议对高churn有更好的容忍性。它的目的在于当DHT中仍然可以得到所需数目的副本时,避免数据块迁移,但是它将副本存储在P2P网络中根节点附近的节点,节点区域性失效时会造成数据不可得。对称复制方法,将r个标识符与目标联系在一起。这种方法将由通过特定的方法计算得到的所有选择为标识符。这种方法的优点是每个副本节点是知道不同副本标识符的,因此可以维护它们。文献[BenGuirat,F.,&Filali,I.(2013).Anefficientdatareplicationapproachforstructuredpeer-to-peersystems.InternationalConferenceonTelecommunications(pp.1-5)]提出了前继复制方法,将数据副本存储在根节点的r-1个前继节点中,这种方法的优点与后继复制和叶子复制相比减少了搜索请求所经过的跳数。前继复制和RelaxDHT有同样的问题,将副本存储在根节点附近的节点,较多节点失效时会造成数据不可得。综上所述,在P2P网络中,由于节点的失效会导致节点上保存的信息资源丢失,从而大大影响到网络的可靠性。先前提到的复制方法大多将副本存储在根节点附近的节点,在节点区域性故障时,并不能有效保证数据可用性。而本发明将副本存储在网络中相对较为分散的节点可以提高数据可用性。技术实现要素:本发明的目的在于提供一种基于Chord网络模型的改进数据复制方法,旨在解决在P2P网络中,由于节点的失效会导致节点上保存的信息资源丢失,从而大大影响到网络的可靠性的问题。本发明是这样实现的,一种基于Chord网络模型的改进数据复制方法,所述基于Chord网络模型的改进数据复制方法将复制数据到持有节点的前继节点中,从而减少定位被请求数据的跳数。在该方法中,数据被复制到Chord覆盖网(rid-2k-1)%2m,(k=1,2...r)的节点中,其中rid为根节点id,k为副本数目。这样,副本节点较为分散,但也有规律可寻,当局部副本节点故障时,其它部分依然有数据可得,增加了数据可用性。算法1描述了本文提出的数据复制机制。每个节点维护r-1个通过计算得出的副本节点,replicateList。根节点n将数据复制到每个属于replicateList的节点中。复制程序通过旨在更新副本key值的updateReplicas过程实现。为了更好地理解我们的方法,不失一般性,我们以key2的复制为例来进一步阐述,如图3所示。假设节点2为根节点,当m=4,rid=2,k=4时,副本存储在(2-21-1)%24、(2-22-1)%24、(2-23-1)%24、(2-24-1)%24,也就是标识符为1、0、14和10的节点中。为了维护网络结构和key迁移,我们考虑到两种更新策略,基础更新和定期更新。基础更新策略在节点加入或离开网络时启用。比如说在节点n离开时,数据必须已经从节点n成功迁移到它的前继n。这个过程在改进的复制方法中需要更新successorList。我们这里必须强调基础更新算法根据复制方法自适应的。比如说,在后继复制方法中,当节点n离开网络时,n的后继存储n负责的key并更新replicatedKeys列表(见算法1)。定期更新机制被定期触发,目的在于在churn环境下保持复制因子。有两个目标,第一,每个节点定期联系所有它的副本节点来保证它们正确维护合适的副本(updateReplicas)。第二,每个节点保证自己只维护自己负责的key(verifReplicas)。因此,为了确保副本是最新的,它联系所有副本key的后继。本发明具有如下优点:1)本发明由于将副本存储在根节点前继相对分散的节点,而Chord模型搜索算法是顺时针进行的,和现有前继复制、叶子复制和后继复制相比,有更少的平均查找跳数,搜索效率更高。2)现有前继复制、叶子复制和后继复制都是将副本存储在根节点附近的节点上,当节点区域性故障时,容易出现副本集体失效,不可得现象。而本发明将副本存储在Chord模型相对分散的节点中,当节点区域性故障时,其它区域仍然有数据可得,提高了数据可用性。本发明针对Chord模型提出一种数据复制方法来保证数据可用性,并和现有主要数据复制方法进行比较。仿真结果显示,在节点区域性故障时,本发明的方法胜于其它方法。本发明将数据副本存储在根节点前继相对分散的节点集合上,这样即使某个区域节点全部故障,别的区域依然有数据副本可供使用。为了验证本发明的有用性,本发明对现有的前继复制、后继复制和本发明提出的方法进行了大量的比较实验。我们假设系统初始由N个节点构成。每次实验由初始载入阶段开始。随后,在仿真阶段节点可以在系统中进行lookup查询。每个key被复制r(复制因子)次。在仿真期间,8个区域中不同区域的节点会随机故障。例如,在N=1024个,故障区域数cn=2时,会有1024×(2/8)=256个节点故障,然后统计三种方法的查找平均跳数和失败率。实验结果显示,当副本数增加时,平均跳数减少,这是因为查找成功的概率和网络中可用的副本数是成正比的。我们提出的复制方法平均跳数比前继复制高,比后继复制低。而查找失败率随着失效区域数增加而增加,这是由于失效节点可能存储所查找的数据。前继复制和后继复制方法查找失败率曲线几乎重合,而我们的方法失败率远远低于这两种方法。总之,我们的方法在查找平均跳数并没有另外两种方法高很多的情况下,大大降低了在局部区域故障时查找数据的失败率。就解决节点区域性故障而言,本发明的数据复制方法远远优于其他方法,而且也有很好的查找效率(查找成功平均跳数和后继复制比并没有明显差距)。附图说明图1是本发明实施例提供的基于Chord网络模型的改进数据复制方法流程图。图2是本发明实施例提供的Chord模型示意图。图3是本发明实施例提供的基于Chord模型的数据复制示意图。图4是本发明实施例提供的后继复制方法示意图。图5是本发明实施例提供的前继复制方法示意图。图6是本发明实施例提供的改进的复制方法示意图。图7是本发明实施例提供的不同副本个数下查找成功平均跳数示意图。图8是本发明实施例提供的不同个数区域节点失效的查找失败率示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。下面结合附图对本发明的应用原理作详细的描述。1问题描述本发明根据现有的数据复制方法,在Chord模型基础上提出一种在局部节点故障时增加数据可用性的复制方法。1.1模型建立图2是Chord模型的一个例子,有6个节点,每个节点存储一个资源集合。其中key被分配给在标识符空间中标识符等于或者大于的第一个节点。该节点称为的后继,由表示。例如,在图2中,和都是节点3,则key1,2和3将会被存储在该节点。Chord用一致性散列,以更高的概率保证peers间的负载均衡。为了完成一次操作,查询沿着chord环转发,寻找fingertable中节点标识符大于或等于的,最接近节点标识符的节点。1.2数据复制方法为了利用Chord的查询路由机制,复制数据到持有节点的前继节点中,从而减少定位被请求数据的跳数。在本发明中,数据被复制到Chord覆盖网的节点中,其中为根节点id,k为副本数目。这样,副本节点较为分散,但也有规律可寻,当局部副本节点故障时,其它部分依然有数据可得,增加了数据可用性。如图3所示,假设节点2为根节点,当m=4,rid=2,k=4时,副本存储在(2-21-1)%24、(2-22-1)%24、(2-23-1)%24、(2-24-1)%24,也就是标识符为1、0、14和10的节点中。1.3已有方法的故障情形分析与改进研究本发明根据标识符顺序,将Chord模型中的节点分为8个区域,假设故障区域数。1.3.1后继复制方法如图4所示,假设节点11执行lookup(2)的请求,。节点11由在Fingertable中寻找2的前继开始,也就是节点15。根据Chord路由算法,在节点15执行相同的查找过程,在节点15的Fingertable中查找2的前继,也就是节点1。节点1再转发请求给节点2,也就是存储被请求资源的节点。节点11发起的lookup(2)通过3跳到达successor(2)。故障区域是随机挑选的,假设刚好是区域1、区域2和区域3,则存储资源2的节点全部故障,在该网络中资源2是不可用的。1.3.2前继复制方法如图5所示,该方法和后继复制相比减少了2跳。当有3个区域故障时,假设刚好是区域7、区域8和区域1,则存储资源2的节点全部故障,在该网络中资源2不可用。1.3.3改进的数据复制方法如图6所示,本发明和后继复制相比减少了1跳,和前继复制相比增加了1跳。前两种复制方法副本存储比较集中,在同样数目副本的情况下,该方法副本分散在4个区域内,当随便3个区域发生故障时依然有数据可得。下面结合仿真对本发明的应用效果作详细的描述。1仿真结果与算法比较1.1仿真结果仿真基于omnet++,对不同副本数和故障区域数进行仿真,比较前继复制、后继复制和本发明方法查找平均跳数和查找失败率。平均跳数定义为:其中为第i条查找成功的消息经过的跳数,为查找成功的消息数。查找失败率定义为:仿真过程中使用的参数如下表所示:表1仿真参数设置参数取值标识符长度(m)10节点(N)1024副本数(r)4、6、8、10、12、14、16查询消息数(L)102400故障区域数()1、2、3、4、51.2算法比较网络模型基于Chord模型,是由麻省理工学院于2001年提出来的,之后被广泛采用,成为P2P的四大算法之一。本发明将模型中所有节点按标识符序号分为8个区域,统计在不同副本数下三种复制方法查找的平均跳数和不同故障区域数状况下查找失败率。本发明解决的问题是在节点区域性故障时,怎样存储副本可以提高数据可用性。前继复制和后继复制并没有考虑到这个问题。下面从查找成功平均跳数和查找失败率两方面比较本发明的方法以及前继复制和后继复制算法。1.2.1平均跳数图7为cn=3时,不同副本个数下查找平均跳数。和预想的一样,当副本数增加时,平均跳数减少,这是因为查找成功的概率和网络中可用的副本数是成正比的。本发明提出的复制方法平均跳数比前继复制高,比后继复制低。1.2.2失败率图8为r=10时,不同个数区域节点失效的查找失败率。如图所示,查找失败率随着失效区域数增加而增加,这是由于失效节点可能存储所查找的数据。前继复制和后继复制方法查找失败率曲线几乎重合,而本发明的方法失败率远远低于这两种方法。总之,本发明的方法在查找平均跳数并没有另外两种方法高很多的情况下,大大降低了在局部区域故障时查找数据的失败率。本发明在Chord模型基础上提出一种在局部节点故障时增加数据可用性的复制方法。为了应对节点区域性故障,本发明将数据副本存储在根节点前继相对分散的节点集合上,这样即使某个区域节点全部故障,别的区域依然有数据副本可供使用。为了验证本发明的有用性,本发明对现有的前继复制、后继复制和本发明提出的方法进行了大量的比较实验。以上对于平均查找效率和失败率统计的实验结果显示,就解决节点区域性故障而言,本发明的数据复制方法远远优于其他方法,而且也有很好的查找效率(查找成功平均跳数和后继复制比并没有明显差距)。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1