一种大规模分布式存储系统的节点路由的方法与流程

文档序号:12492392阅读:677来源:国知局
一种大规模分布式存储系统的节点路由的方法与流程

本发明涉及分布式存储系统的软件领域,尤其涉及一种大规模分布式存储系统的节点路由的方法。



背景技术:

传统的网络存储系统采用集中的存储服务器存放所有数据,一旦其中某台存储服务器故障,则存储在该存储服务器上的数据就不能用,随着数据量的增大,更难管理和应用,成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。亟待寻求一种方法解决大规模分布式数据的存储问题。



技术实现要素:

本发明提供的一种大规模分布式存储系统的节点路由的方法,克服了现有技术中缺点与不足,解决了超大规模存储问题。

为了达到上述目的,本发明是通过以下技术方案实现的:

本发明提供一种大规模分布式存储系统的节点路由的方法,包括以下步骤:

步骤1:存储节点加入分布式存储集群时通过一致性哈希算法自动生成一个节点ID;

步骤2:存储节点在网络中进行迭代查询,把迭代查询过程中发现的节点与存储节点的节点ID之间的距离最近的10个节点记入存储节点路由表;

步骤3:扩张存储节点路由表,获得路由树;

步骤4:在节点离开分布式存储集群后,存储节点会删除路由树中的该节点,若离开的节点为临近节点,则同时发起一次搜索,若当前存储集群中的存储节点副本数不足3,则把自己的存储节点信息复制一份给临近节点的替代节点。

进一步地,在步骤1之后,还包括:在网络中进行搜索节点ID,发现节点ID有冲突后重新通过一致性哈希算法计算生成存储节点ID。

进一步地,所述的节点ID之间的距离为通过异或运算distance(x,y)=x⊕y得到的数转换为十进制值。

进一步地,所述的节点ID的范围是[0,2128-1]。

进一步地,所述步骤3包括:把存储节点路由表中节点的周边节点中的存储节点插入到本节点中,删除分布式存储集群中因为本地插入而多余的存储节点副本,获得路由树。

进一步地,所述的路由树为完全二叉树,所述的完全二叉树为前四层是完整的二叉树,从第五层起每层最多10个节点,其中5个为叶子节点,5个为非叶子节点。

进一步地,所述的迭代查询包括:

步骤11:向存储节点路由表中距离存储节点最近的A节点发送搜索请求;

步骤22:A节点收到搜索请求后,返回包含A节点已知与目标最近的包含B节点的10个节点的搜索结果报文;

步骤33:若存储节点路由表未满,则把A节点返回的节点写入存储节点路由表;

步骤44:继续在B节点发送搜索请求;

步骤55:迭代运行步骤22、步骤33、步骤44,最终找到存储节点的位置。

进一步地,所述把存储节点路由表中节点的周边节点中的存储节点插入到本节点中,包括:每个叶子节点最多保存10个节点,若叶子节点不满,直接插入;若叶子节点满且当前路由层总节点数不足10,则分列;若叶子节点满且当前路由层总节点数满10,则插入失败。

进一步地,所述步骤4中的删除路由树中的该节点的方法包括:如果删除后树上兄弟叶子节点和当前叶子节点总数大于10,则不变;否则,就和兄弟叶子节点归并。

进一步地,所述的存储节点副本数始终为3。

本发明所提供的一种大规模分布式存储系统的节点路由的方法,具有如下优点:

1.每个存储节点上的路由表规模小,可以支持2128规模的超大规模存储集群;

2.节点在任意时间加入或离开分布式存储集群,只影响相关节点的路由表数据,文件由于3个存储节点副本的存在被及时转移,对存储节点无影响,具有很高的扩展性,在集群节点总数大于3的情况,集群中的存储节点副本始终保持3个;

3.本发明的分布式存储集群是全分布式,没有中心节点;任意节点的崩溃都对存储无影响,提高了系统的可靠性、可用性和存取效率,易于扩展。

附图说明

为了更清楚地说明本发明的实施例,下面将对实施例中所需要使用的附图作一简单地介绍。

图1为本发明一种大规模分布式存储系统的节点路由的方法的流程示意图之一。

图2为本发明一种大规模分布式存储系统的节点路由的方法的流程示意图之二。

具体实施方式

下面对本发明中涉及到的一些技术词语进行解释:

异或:异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)。

一致性哈希算法:一致性哈希算法中的每个节点(对应分布式存储系统中的Peer即对等节点)都有随机分配的ID。在将内容映射到节点时,使用内容的关键字和节点的ID进行一致性哈希运算并获得键值。一致性哈希会将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为[0,232-1](即哈希值是一个32位无符号整形)。每个节点被映射到这个环上。如果某台机器在某个时刻变得不可用,受影响的只有其周边的机器,其他绝大部分机器不受影响,每个机器的哈希值不需要重新被计算。

分布式存储集群:每台计算机各自提供自己的存储空间,并各自协调管理所有计算机节点中的文件的存储。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合附图和实施例对本发明进行详细的描述。

实施例1

参考图1,本发明的一种大规模分布式存储系统的节点路由的方法,包括以下步骤:

S101:存储节点加入分布式存储集群时通过一致性哈希算法自动生成一个节点ID;

S102:存储节点在网络中进行迭代查询,把迭代查询过程中发现的节点与存储节点的节点ID之间的距离最近的10个节点记入存储节点路由表;

S103:扩张存储节点路由表,获得路由树;

S104:在节点离开分布式存储集群后,存储节点会删除路由树中的该节点,若离开的节点为临近节点,则同时发起一次搜索,若当前存储集群中的存储节点副本数不足3,则把自己的存储节点信息复制一份给临近节点的替代节点。

实施例2

参考图2,本发明的一种大规模分布式存储系统的节点路由的方法,包括以下步骤:

S201:存储节点加入分布式存储集群时通过一致性哈希算法自动生成一个节点ID。

S202:在网络中进行搜索节点ID,发现节点ID有冲突后重新通过一致性哈希算法计算生成存储节点ID。

S203:存储节点在网络中进行迭代查询,把迭代查询过程中发现的节点与存储节点的节点ID之间的距离最近的10个节点记入存储节点路由表;

迭代查询包括以下步骤:

S2031:向存储节点路由表中距离存储节点最近的A节点发送搜索请求;

S2032:A节点收到搜索请求后,返回包含A节点已知与目标最近的包含B节点的10个节点的搜索结果报文;

S2033:若存储节点路由表未满,则把A节点返回的节点写入存储节点路由表;

S2034:继续在B节点发送搜索请求;

S2035:迭代运行S2032、S2033、S2034,最终找到存储节点的位置。

S204:把存储节点路由表中节点的周边节点中的存储节点插入到本节点中, 每个叶子节点最多保存10个节点,若叶子节点不满,直接插入;若叶子节点满且当前路由层总节点数不足10,则分列;若叶子节点满且当前路由层总节点数满10,则插入失败,最后删除分布式存储集群中因为本地插入而多余的存储节点副本,获得路由树;

S205:在节点离开分布式存储集群后,存储节点会删除路由树中的该节点,如果删除后树上兄弟叶子节点和当前叶子节点总数大于10,则不变;否则,就和兄弟叶子节点归并;若离开的节点为临近节点,则同时发起一次搜索,若当前存储集群中的存储节点副本数不足3则把自己的存储节点信息复制一份给临近节点的替代节点。

作为一种实施方式方式,其中节点ID的范围是[0,2128-1]。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1