分布式数据存储系统、方法和装置的制造方法

文档序号:9754825阅读:562来源:国知局
分布式数据存储系统、方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,尤其涉及分布式数据存储系统、方法和装置。
【背景技术】
[0002]目前,业内通常采用分布式数据存储系统进行数据存储,分布式数据存储系统既具有集群系统的可扩/缩容的特性,又可以进行分布式操作。因此,在数据存储量发生变化时,分布式数据存储系统能够通过增加/移除集群中的数据存储节点实现对分布式数据存储系统的扩/缩容。
[0003]在现有的分布式数据存储系统中,通常可以采用一致性哈希算法对集群进行分片,而后对键值对数据(key-value)等进行存储。但是此种存储系统在存储数据量发生变化而需要增加/移除数据存储节点时,由于一致性哈希算法的限制,使得相邻存储节点的键值(key)映射发生的变化,容易导致数据的丢失,集群扩展性差。而更有甚者,有些分布式数据存储系统不存在中心管理机制,系统的结构复杂。

【发明内容】

[0004]本申请的目的在于提出一种改进的分布式数据存储系统、方法和装置,来解决以上【背景技术】部分提到的技术问题。
[0005]第一方面,本申请提供了一种分布式数据存储系统,所述系统包括:数据存储节点,用于存储代理节点发送的待存储数据,各所述数据存储节点包括多个用于映射不同键值信息的哈希槽,所述待存储数据包括键值信息和数据信息;中心管理节点,用于存储记录信息,所述记录信息包括各数据存储节点所构成的集群的网络拓扑关系、哈希槽在各数据存储节点的分布情况以及各数据存储节点的负载量;所述代理节点,用于接收客户端发送的待存储数据,根据所述中心管理节点的记录信息确定与所述待存储数据对应的哈希槽和数据存储节点。
[0006]在一些实施例中,所述代理节点还用于:根据所述记录信息中的各所述数据存储节点的负载量,判断各所述数据存储节点的负载量是否在预设的阈值范围内;若是,则保持数据存储节点数目不变;若否,则增加/移除数据存储节点,重新分配各数据存储节点的哈希槽,并更新所述记录信息。
[0007]在一些实施例中,所述代理节点进一步用于:判断是否存在数据存储节点的负载量大于所述阈值范围的最大值;若是,则增加至少一个数据存储节点;判断是否存在数据存储节点的负载量小于所述阈值范围的最小值;若是,则移除至少一个数据存储节点。
[0008]在一些实施例中,当增加至少一个数据存储节点时,则将各个原数据存储节点中的部分哈希槽转移到新增加的数据存储节点中,使得哈希槽在各数据存储节点中平均分配;当移除至少一个数据存储节点时,则将移除的数据存储节点中的哈希槽转移到剩余的数据节点中,使得哈希槽在各数据存储节点中平均分配。
[0009]在一些实施例中,所述系统用于云计算环境;以及所述系统还包括:资源管理节点,用于为所述系统分配云计算资源;所述代理节点进一步用于从所述资源管理节点获取云计算资源。
[0010]第二方面,本申请提供了一种分布式数据存储方法,所述方法包括:接收客户端发送的待存储数据,其中,所述待存储数据包括键值信息和该哈希槽所在的第一数据信息;根据中心管理节点存储的记录信息,确定与所述键值信息对应的哈希槽和数据存储节点,其中,所述记录信息包括各数据存储节点所构成的集群的网络拓扑关系、哈希槽在各数据存储节点的分布情况以及各数据存储节点的负载量,各所述数据存储节点包括多个用于映射键值信息的哈希槽;根据所述键值信息,将所述待存储数据存储到所述第一数据存储节点。
[0011]在一些实施例中,所述方法还包括:根据所述记录信息中的各所述数据存储节点的负载量,判断各所述数据存储节点的负载量是否在预设的阈值范围内;若是,则保持数据存储节点数目不变;若否,则增加/移除数据存储节点,重新分配各数据存储节点的哈希槽,并更新所述记录信息。
[0012]在一些实施例中,所述增加/移除数据存储节点,包括:当存在负载量大于所述阈值范围的最大值的数据存储节点时,则增加至少一个数据存储节点;当存在负载量小于所述阈值范围的最小值的数据存储节点时,则移除至少一个数据存储节点。
[0013]在一些实施例中,所述重新分配各数据存储节点的哈希槽,并更新所述记录信息,包括:当增加至少一个数据存储节点时,则将原数据存储节点中的部分哈希槽转移到新增加的数据存储节点中,使得哈希槽在各数据存储节点中平均分配,并更新所述记录信息;当移除至少一个数据存储节点时,则将移除的数据存储节点中的哈希槽转移到剩余的数据节点中,使得哈希槽在各数据存储节点中平均分配,并更新所述记录信息。
[0014]在一些实施例中,所述方法用于云计算环境;以及所述方法还包括:从资源管理节点获取云计算资源。
[0015]第三方面,本申请提供了一种分布式数据存储装置,所述装置包括:接收模块,配置用于接收客户端发送的待存储数据,其中,所述待存储数据包括键值信息和数据信息;确定模块,配置用于根据中心管理节点存储的记录信息,确定与所述键值信息对应的哈希槽和该哈希槽所在的第一数据存储节点,其中,所述记录信息包括各数据存储节点所构成的集群的网络拓扑关系、哈希槽在各数据存储节点的分布情况以及各数据存储节点的负载量,各所述数据存储节点包括多个用于映射键值信息的哈希槽;存储模块,配置用于根据所述键值信息,将所述待存储数据存储到所述第一数据存储节点。
[0016]在一些实施例中,所述装置还包括:判断模块,配置用于根据所述记录信息中的各所述数据存储节点的负载量,判断各所述数据存储节点的负载量是否在预设的阈值范围内;若是,则保持数据存储节点数目不变;若否,则增加/移除数据存储节点,重新分配各数据存储节点的哈希槽,并更新所述记录信息。
[0017]在一些实施例中,所述判断模块进一步配置用于:当存在负载量大于所述阈值范围的最大值的数据存储节点时,则增加至少一个数据存储节点;当存在负载量小于所述阈值范围的最小值的数据存储节点时,则移除至少一个数据存储节点。
[0018]在一些实施例中,所述判断模块进一步配置用于:当增加至少一个数据存储节点时,则将原数据存储节点中的部分哈希槽转移到新增加的数据存储节点中,使得哈希槽在各数据存储节点中平均分配,并更新所述记录信息;当移除至少一个数据存储节点时,则将移除的数据存储节点中的哈希槽转移到剩余的数据节点中,使得哈希槽在各数据存储节点中平均分配,并更新所述记录信息。
[0019]在一些实施例中,所述装置用于云计算环境;以及所述装置还包括:获取模块,配置用于从资源管理节点获取云计算资源。
[0020]本申请提供的分布式数据存储系统、方法和装置,代理节点根据中心管理节点中存储的哈希槽在各数据存储节点的分布情况、数据存储节点中的哈希槽与各键值信息的映射关系,以及待存储数据的键值信息,确定待存储数据对应的哈希槽和数据存储节点,最后存储所述待存储数据,本申请的分布式数据存储系统结构简单且扩展性强。
【附图说明】
[0021]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0022]图1是根据本申请的分布式数据存储系统一个实施例的架构图;
[0023]图2是根据本申请的分布式数据存储方法一个实施例的流程图;
[0024]图3是根据本申请的分布式数据存储方法又一个实施例的流程图;
[0025]图4是根据本申请的分布式数据存储装置的一个实施例的结构示意图;
[0026]图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
【具体实施方式】
[0027]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0028]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0029]图1示出了可以应用本申请的分布式数据存储系统一个实施例的示例性系统架构100。
[0030]如图1所示,系统架构100可以包括客户端101、代理节点102、数据存储节点103和中心管理节点104。这里,客户端101、代理节点102、数据存储节点103和中心管理节点104之间通过有线连接或无线连接的方式进行通信。
[0031]在本实施例中,上述数据存储节点103用于存储代理节点102发送的待存储数据。其中,上述各数据存储节点103包括多个用于映射不同键值信息的哈希槽,上述待存储数据包括键值信息和数据信息。
[0032]在本实施例的一些可选的实现方式中,每一个上述数据存储节点103可以由一个主节点和多个从节点组成,并且每个数据存储节点103的主节点和从节点存储内容等都相同。因此,当主节点出现故障而宕机时,即可以启动一个从节点代替主节点,这种数据存储节点103可以提高分布式数据存储系统的容灾性。
[0033]在本实施例的一些可选的实现方式中,上述待存储数据可以称之为key-value数据,其中键值信息可以为key,数据信息可以为value。上述哈希槽(也可以称为hash
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1