一种均衡且易于扩展的无中心云存储方法

文档序号:7864333阅读:225来源:国知局
专利名称:一种均衡且易于扩展的无中心云存储方法
技术领域
本发明涉及互联网技术领域,具体涉及一种均衡且易于扩展的无中心云存储方法。
背景技术
自从2006年谷歌首次提出云计算概念以来,云计算在各方IT巨头的推动下快速发展。而云存储作为云计算的基础,重要性犹如建筑基石。在数据快速膨胀的云存储环境下,如何解决存储系统在扩展过程中同时兼顾“简单、高效、均衡”成为研究的热点。云存储系统分为“中心式”与“无中心式”两种,谷歌文件系统(GFS)为典型的“中心式”云存储系统,有专门的元数据节点和控制节点,需要对这些中心节点进行额外集群以保证其可靠性和可用性。无中心云存储系统,不需要中心节点,所有存储节点都是对等的,任何节点都可提供服务,典型的有亚马逊的DYNAMO。传统的无中心存储系统,不管是结构化的还是非结构化的,都具有存储不均衡的问题。这是因为大部分基于一致性哈希算法的存储系统,节点的编号(ID)是随机生成的,当有限的存储节点承载了大量数据后,随机ID的分布的不均衡性,导致存储的不均衡,某些节点负荷过大,而某些节点负荷过轻。另外,存储系统是逐步扩展的,后加入的存储节点,其容量及处理能力可能不同于之前的节点,因此节点本身容量与处理能力的差异也导致了存储网络的不均衡。理想的网络模型应该是“能者多劳”,即节点应该按其本身处理能力承担相应的负载。

发明内容
本发明目的在于提供一种均衡且易于扩展的无中心云存储方法,以克服现有技术存在的存储不均衡的技术问题。具体步骤如下一种均衡且易于扩展的无中心云存储方法,其特征在于所述方法包括以下步骤I)对基于节点容量的ID空间进行分区;2)采用路由算法对基于ID空间的分区方法,每个节点Ni都负责相应的分区(Di+ Di],即任何IDMp1,并且ID〈=Di;都由节点Ni负责存储,且路由查找只有一跳;3)采用冗余复制法实现对数据冗余的复制,并且定义冗余度为R ;4)通过节点扩展法对当云存储网络的存储容量达到一定阈值时,需要逐步加入新的节点以扩展容量与计算能力,实现对节点的加入;5)通过重新平衡法对暂时打破原有平衡的新加入的节点进行平衡处理,以达到数据平衡。优选地,上述步骤I中ID空间是由所有可能的ID所构成的一个范围,采用SHA-I算法得出的摘要ID是一个160比特位的大数,它构成了一个从O到216°-1的空间。优选地,上述空间分区是将ID空间进行分割。
优选地,上述步骤2中的路由算法包括以下步骤I)每个节点都根据ID空间分区原则生成路由表,路由表记录着节点编号与其所负责范围的关系;
2)任何节点Ni接受数据存取请求;3)节点Ni根据要存取的ID,查找路由表,得到所负责存取的节点编号;4)转发存取请求到相应节点;5)节点Ni等待返回的操作结果。优选地,上述步骤3中的冗余复制法包括以下步骤I)接受数据写入请求的节点Ni,根据路由表,算出所负责存储的节点编号为η ;2)通过向相邻的节点写入数据副本为原则,算出冗余组成员;3)得到冗余组成员(η, η+1, η+2,. . . , η+R-l),如果R = 3,则冗余组成员为(η, η+1, η+2);如果节点编号超出总节点数,则采用模运算方法去整;即节点编号=节点编号MOD总节点数;4)按照路由算法,同时发送并发写入请求给冗余组成员;5)节点Ni等待冗余组成员的操作结果。优选地,上述节点扩展法包括以下步骤I)管理员选定要加入网络的节点,并为其编号(按从O开始编号原则)。假定已有节点数量k,则为新加入的节点编号为k,记为Nk,总网络节点数量达到k+Ι ;2)管理员通知所有正在运行中的节点,有新的节点Nk要加入;3)所有已运行的节点,根据所加入的节点Nk的容量Ck,对ID空间进行重新分区,并更新本地的路由表;4)节点加入完成。优选地,上述重新平衡法包括以下步骤I)所有节点开始扫描本地已存储的数据;2)读取下一个数据块;3)对于每个数据块ID,根据路由方法计算其冗余组(n,η+1, . . .,n+R_l),其中R为冗余度;4)如果当前节点属于此冗余组,则返回步骤2 ;5)如果当前节点不属于此冗余组,则按下列公司计算出其目的地=η+(本节点编号 MOD R);6)把当前数据块移动到目地的;7)如果还有数据块,返回步骤2。实施本发明具有以下优点I、该发明提出了一种适用于无中心分布式云存储系统,基于节点空间的ID分区方法,可以混合使用不同容量的节点,使得每个节点按相应的容量参与存储,具有良好的均衡性。2、本发明还提出了完整节点扩展方法,在系统具有冗余度的情况下也能轻松扩展。3、节点重新平衡方法采用基于节点位置差异信息,快速并发的把相应数据副本直接移动到不同的目的地,在节点重新平衡的时候也最小化了数据量的移动。4、无中心,存储系统不需要特定的控制节点,每个结点都可以服务;5、结构化,对数据块查找,通过ID即可以在一步内快速定位;6、高可靠性,数据块在独立节点上冗余复制,避免单点故障带来数据损坏;7、均衡性,基于节点容量的良好的负载均衡算法;8、易扩展性轻松加入节点以扩展容量,并能快速重新平衡。


图I为本发明中基于节点容量的ID空间分区图;图2为本发明中节点编号与其所负责范围的关系图;图3为本发明中数据冗余复制中的关系图;图4为本发明中重新平衡法中的关系图。
具体实施例方式为了达到上述目的,本发明提供的一种均衡且易于扩展的无中心云存储方法包括以下步骤首先对基于节点容量的ID空间进行分区;其次采用路由算法对基于ID空间的分区方法,每个节点Ni都负责相应的分区(Di+ Di],即任何IDMp1,并且ID〈=Di;都由节点Ni负责存储,且路由查找只有一跳;然后采用冗余复制法实现对数据冗余的复制,并且定义冗余度为R ;再通过节点扩展法对当云存储网络的存储容量达到一定阈值时,需要逐步加入新的节点以扩展容量与计算能力,实现对节点的加入;最后通过重新平衡法对暂时打破原有平衡的新加入的节点进行平衡处理,以达到数据平衡。在基于节点容量的ID空间分区中,ID空间是指由所有可能的ID所构成的一个范围,采用SHA-I算法得出的摘要ID是一个160比特位的大数,它构成了一个从O到216°_1的空间。SHA-I算法具有良好的均衡性,即使截取ID的前16位也同样具有良好的均衡性。本发明只采用了 ID的前16位用于路由计算,16位的数字表示了 O到65535的一个空间,最大的节点ID65535记为M,本存储系统节点数最多可以达到M+l=65536台。空间分区是指按一定的方法,把空间进行分割。例如现在我们有N台存储节点,空间被平均的分成了 N等份,每个节点存储总空间的1/N份数据。如果把节点进行编号,从O开始到N-1,那么对于任何一个小于N的ID,都可以一一对应的找到存储节点,即ID为i的数据存储于节点编号同样为i的节点上。由于云存储系统是按需逐步扩展的,一开始不可能有众多的节点与数据ID —一对应,加上参与存储的节点容量有可能大小不一,采用均分空间的方法会导致负载的不均衡。因此,我们引入了基于节点容量的ID空间分区,具体参见图I所示,假定我们现在有k台存储节点,Ni表示编号为i的节点,i的范围为从O到k-1 A表示Ni节点的容量A表示节点Ni占全存储网络容量的比例,计算公式Pi=Ci/(CdCAC2+. . . Ci+. . . (V1);这样,ID空间就被按比例分成了 k个部分,把节点按顺序排列于ID空间上,每个节点就位于一个单独的边界。Di表示节点Ni位于ID空间上的距离,则有M=65535 ; D0=P0^M;Dlrl=M ;ID 空间被分隔成(O, D0],(D0, D1],(D1, D2],... (Dk_2,Dk_J 总共 k 个分区。其中路由算法是基于以上ID空间的分区方法,每个节点Ni都负责相应的分区(0卜1,0山即任何10冲_1,并且10〈=01,都由节点队负责存储。路由查找只有一跳。具体步骤如下步骤1,每个节点都根据ID空间分区原则生成路由表,路由表记录着节点编号与其所负责范围的关系,参见图2所示。步骤2,任何节点Ni接受数据存取请求;步骤3,节点Ni根据要存取的ID,查找路由表,得到所负责存取的节点编号;
步骤4,转发存取请求到相应节点;步骤5,节点Ni等待返回的操作结果。其中冗余复制中,定义冗余度为R (通常R= 3),数据冗余复制的包括以下步骤具参见图3所示,步骤1,接受数据写入请求的节点Ni,根据路由表,算出所负责存储的节点编号为η ;步骤2,通过向相邻的节点写入数据副本为原则,算出冗余组成员步骤3,得到冗余组成员(η, η+1, η+2, · · ·,η+R-l),如何R = 3,则冗余组成员为(η, η+1, η+2) 0如果节点编号超出总节点数,则采用模运算方法去整。即节点编号=节点编号MOD总节点数;步骤4,按照路由算法,同时发送并发写入请求给冗余组成员;步骤5,节点Ni等待冗余组成员的操作结果。其中节点扩展法中,当云存储网络的存储容量达到一定阈值时,需要逐步加入新的节点以扩展容量与计算能力,节点的扩展步骤包括以为首先通过管理员选定要加入网络的节点,并为其编号(按从O开始编号原则)。假定已有节点数量k,则为新加入的节点编号为k,记为Nk,总网络节点数量达到k+Ι ;其次管理员通知所有正在运行中的节点,有新的节点Nk要加入;然后对所有已运行的节点,根据所加入的节点Nk的容量Ck,对ID空间进行重新分区,并更新本地的路由表;最后节点加入完成。参见图4所示,在重新平衡法中,当有新节点加入存储网络时,新加入的节点暂时打破了原有的平衡。新的节点Nk加入时,它的容量为Ck,整个网络需要把比例为Pk的数据移动到新节点Nk上。Pk的计算公式为4=0/((^+(^+ +. . . +Ck)。该重新平衡法包括以下步骤步骤1,所有节点开始扫描本地已存储的数据;步骤2,读取下一个数据块;步骤3,对于每个数据块ID,根据路由方法计算其冗余组(n,η+1, . . .,n+R_l),其中R为冗余度;步骤4,如果当前节点属于此冗余组,则返回步骤2 ;步骤5,如果当前节点不属于此冗余组,则按下列公式计算出其目的地,公式为目的地=η+ (本节点编号MOD R);步骤6,把当前数据块移动到目地的;步骤7,如果还有数据块,返回步骤2。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种均衡且易于扩展的无中心云存储方法,其特征在于所述方法包括以下步骤 1)对基于节点容量的ID空间进行分区; 2)采用路由算法对基于ID空间的分区方法,每个节点Ni都负责相应的分区(DmDi],即任何IDMp1,并且ID〈=Di,都由节点Ni负责存储,且路由查找只有一跳; 3)采用冗余复制法实现对数据冗余的复制,并且定义冗余度为R; 4)通过节点扩展法对当云存储网络的存储容量达到一定阈值时,需要逐步加入新的节点以扩展容量与计算能力,实现对节点的加入; 5)通过重新平衡法对暂时打破原有平衡的新加入的节点进行平衡处理,以达到数据平衡。
2.根据权利要求I所述的均衡且易于扩展的无中心云存储方法,其特征在于所述步骤I中ID空间是由所有可能的ID所构成的一个范围,采用SHA-I算法得出的摘要ID是一个160比特位的大数,它构成了一个从O到216°-1的空间。
3.根据权利要求2所述的均衡且易于扩展的无中心云存储方法,其特征在于所述空间分区是将ID空间进行分割。
4.根据权利要求3所述的均衡且易于扩展的无中心云存储方法,其特征在于所述步骤2中的路由算法包括以下步骤 O每个节点都根据ID空间分区原则生成路由表,路由表记录着节点编号与其所负责范围的关系; 2)任何节点Ni接受数据存取请求; 3)节点Ni根据要存取的ID,查找路由表,得到所负责存取的节点编号; 4)转发存取请求到相应节点; 5)节点Ni等待返回的操作结果。
5.根据权利要求4所述的均衡且易于扩展的无中心云存储方法,其特征在于所述步骤3中的冗余复制法包括以下步骤 1)接受数据写入请求的节点Ni,根据路由表,算出所负责存储的节点编号为η; 2)通过向相邻的节点写入数据副本为原则,算出冗余组成员; 3)得到冗余组成员(η,η+1, η+2,. . . , η+R-l),如果R = 3,则冗余组成员为(n,n+l,n+2);如果节点编号超出总节点数,则采用模运算方法去整;即节点编号=节点编号MOD总节点数; 4)按照路由算法,同时发送并发写入请求给冗余组成员; 5)节点Ni等待冗余组成员的操作结果。
6.根据权利要求5所述的均衡且易于扩展的无中心云存储方法,其特征在于所述节点扩展法包括以下步骤 1)管理员选定要加入网络的节点,并为其编号(按从O开始编号原则)。假定已有节点数量k,则为新加入的节点编号为k,记为Nk,总网络节点数量达到k+Ι ; 2)管理员通知所有正在运行中的节点,有新的节点Nk要加入; 3)所有已运行的节点,根据所加入的节点Nk的容量Ck,对ID空间进行重新分区,并更新本地的路由表; 4)节点加入完成。
7.根据权利要求6所述的均衡且易于扩展的无中心云存储方法,其特征在于所述重新平衡法包括以下步骤 1)所有节点开始扫描本地已存储的数据; 2)读取下一个数据块;3)对于每个数据块ID,根据路由方法计算其冗余组(n,n+1,.. .,n+R-1),其中R为冗余度; 4)如果当前节点属于此冗余组,则返回步骤2; 5)如果当前节点不属于此冗余组,则按下列公司计算出其目的地=η+(本节点编号MOD R); 6)把当前数据块移动到目地的; 7)如果还有数据块,返回步骤2。
全文摘要
本发明提供的一种均衡且易于扩展的无中心云存储方法,该方法首先对基于节点容量的ID空间进行分区;其次采用路由算法对基于ID空间的分区方法,每个节点Ni都负责相应的分区(Di-1,Di],即任何ID>Di-1,并且ID<=Di,都由节点Ni负责存储,且路由查找只有一跳;然后采用冗余复制法实现对数据冗余的复制,并且定义冗余度为R;再通过节点扩展法对当云存储网络的存储容量达到一定阈值时,需要逐步加入新的节点以扩展容量与计算能力,实现对节点的加入;最后通过重新平衡法对暂时打破原有平衡的新加入的节点进行平衡处理,以达到数据平衡。本发明解决了现有技术存在的存储不均衡的技术问题。具有良好的均衡性等优点。
文档编号H04L29/08GK102917073SQ20121042957
公开日2013年2月6日 申请日期2012年10月31日 优先权日2012年10月31日
发明者唐新智, 魏孙鼎 申请人:广州市宏绩信通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1