数据存储系统及方法与流程

文档序号:17601612发布日期:2019-05-07 20:23阅读:177来源:国知局
数据存储系统及方法与流程

本申请涉及数据存储技术领域,尤其涉及一种数据存储系统及方法。



背景技术:

目前的分布式存储系统由客户端、一个元数据服务器以及数据服务器集群组成。客户端在写数据时,先向元数据服务器发起写请求,元数据服务器综合整个数据服务器集群的负载情况、空闲空间等因素,决策写请求的元数据信息,元数据信息包括写入的数据服务器和这些数据服务器的角色(其中的一个作为主副本角色,其它作为备副本角色),存储决策出的元数据信息并发送给客户端,客户端将写数据发送给作为主副本角色的数据服务器,由主副本角色的数据服务器完成写数据的写入,同时将写数据发送给作为备副本角色的数据服务器存储,最后主副本角色的数据服务器返回写入结果给客户端。

由于分布式存储系统中的所有客户端的所有数据的写入都需要通过单一元数据服务器实现,因此元数据服务器很容易成为瓶颈,使得存储系统能够接入的客户端数量和数据服务器数量受到限制。



技术实现要素:

有鉴于此,本申请提供一种数据存储系统及方法,以解决相关技术对存储系统能够接入的客户端数量和数据服务器数量受到限制的问题。

根据本申请实施例的第一方面,提供一种数据存储系统,所述系统包括客户端和数据服务器集群,所述系统还包括n个元数据服务器组;

所述客户端,用于根据待写数据的数据标识从所述n个元数据服务器组中选择一个元数据服务器组,并向选择的元数据服务器组发送写请求;在接收到所述元数据服务器组返回的元数据信息时,向所述元数据信息包括的服务器标识指向的目标数据服务器发送所述待写数据;

所述n个元数据服务器组中的每一元数据服务器组,用于为接收到的写请求确定元数据信息,所述元数据信息包括待写数据要写入的目标数据服务器的服务器标识,在本地存储所述元数据信息并返回给所述客户端;

所述数据服务器集群中的每一数据服务器,用于存储接收到的待写数据。

根据本申请实施例的第二方面,提供一种数据存储方法,所述方法应用于上述第一方面所述的系统,所述方法包括:

客户端根据待写数据的数据标识从所述n个元数据服务器组中选择一个元数据服务器组,并向选择的元数据服务器组发送写请求;

所述元数据服务器组为所述写请求确定元数据信息,所述元数据信息包括所述待写数据要写入的目标数据服务器的服务器标识,在本地存储所述元数据信息并返回给所述客户端;

所述客户端向所述元数据信息包括的服务器标识指向的目标数据服务器发送所述待写数据;

所述目标数据服务器存储所述待写数据。

应用本申请实施例,通过采用多个元数据服务器组的方式,客户端在写数据时,可以根据待写数据的数据标识从所有元数据服务器组中选择一个元数据服务器组,并由选择的元数据服务器组来决策元数据信息并存储下来,使得每个元数据服务器组只记录整个存储系统的部分元数据信息,避免了所有数据的写都由一台元数据服务器处理的问题,突破了单一元数据服务器带来的瓶颈,从而可扩大存储系统能够接入的客户端规模和数据服务器集群规模。

附图说明

图1为本申请根据一示例性实施例示出的一种现有的分布式存储系统结构图;

图2a为本申请根据一示例性实施例示出的一种数据存储系统结构图;

图2b为本申请根据图2a所示实施例示出的一种元数据信息的重新分布示意图;

图2c为本申请根据图2a所示实施例示出的一种数据服务器中的数据迁移示意图;

图3为本申请根据一示例性实施例示出的一种数据存储方法的实施例流程图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种现有的分布式存储系统结构图,如图1所示,该分布式存储系统包括客户端(可至少接入一个客户端)、一台元数据服务器以及数据服务器集群(图1中示出了三个数据服务器a、b、c)。客户端用于向系统发送读请求或写请求,元数据服务器用于管理元数据信息并处理客户端的读写请求,数据服务器集群用于存储数据,保证数据的可用性和完整性。

针对客户端写数据过程:客户端先向元数据服务器发起写请求,元数据服务器需要综合整个数据服务器集群的负载情况、空闲空间等因素,为写请求决策元数据信息并存储,元数据信息包括要写入的数据服务器的服务器标识和这些数据服务器的角色(其中的一个作为主副本角色,其它作为备副本角色),将决策出的元数据信息发送给客户端,客户端再将写数据发送给作为主副本角色的数据服务器,由主副本角色的数据服务器完成写数据存储的同时,将写数据发送给作为备副本角色的数据服务器存储,最后主副本角色的数据服务器返回写入结果给客户端。

由于所有数据的写都需要通过单一元数据服务器进行处理,甚至所有数据的读还需要通过元数据服务器查找元数据信息进行读取,因此元数据服务器很容易成为瓶颈,使得存储系统能够接入的客户端数量和数据服务器数量受到限制。

为解决上述问题,本申请提出一种数据存储系统,如图2a为本申请根据一示例性实施例示出的一种数据存储系统结构图,所述数据存储系统包括客户端、数据服务器集群以及n个元数据服务器组:

客户端,用于根据待写数据的数据标识从所述n个元数据服务器组中选择一个元数据服务器组,并向选择的元数据服务器组发送写请求;在接收到所述元数据服务器组返回的元数据信息时,向所述元数据信息包括的服务器标识指向的目标数据服务器发送所述待写数据;

所述n个元数据服务器组中的每一元数据服务器组,用于为接收到的写请求确定元数据信息,所述元数据信息包括待写数据要写入的目标数据服务器的服务器标识,在本地存储所述元数据信息并返回给所述客户端;

所述数据服务器集群中的每一数据服务器,用于存储接收到的待写数据。

其中,数据标识是客户端为待写数据生成的唯一标识,根据待写数据的数据标识选择元数据服务器组的过程可以采用哈希算法或者crush算法,例如,数据标识为10,元数据服务器组的数量为5,通过将数据标识10除以元数据服务器组数量5的余数0作为要选择的第0个元数据服务器组,即图2a中的元数据服务器组a。元数据服务器组为接收到的写请求确定元数据信息需要考虑的因素包括整个数据服务器集群的负载情况(如当前处于在线状态的数据服务器,处于下线状态的数据服务器以及各数据服务器是处于忙状态还是空闲状态等)、各数据服务器的空闲存储空间等。

在一个例子中,元数据信息除了包括待写数据要写入的目标数据服务器的服务器标识之外,还可以包括各目标数据服务器的角色(通常其中的一个作为主副本角色,其他作为备副本角色),从而客户端可以先将待写数据发送至作为主副本角色的数据服务器进行存储的同时,再将待写数据发送至作为备副本角色的数据服务器,以实现主副本和备副本的存储。

在本实施例中,通过采用多个元数据服务器组的方式,客户端在写数据时,可以根据待写数据的数据标识从所有元数据服务器组中选择一个元数据服务器组,并由选择的元数据服务器组来决策元数据信息并存储下来,使得每个元数据服务器组只记录整个存储系统的部分元数据信息,避免了所有数据的写都由一台元数据服务器处理的问题,突破了单一元数据服务器带来的瓶颈,从而可扩大存储系统能够接入的客户端规模和数据服务器集群规模。

在一可选的实现方式中,如上述图2a所示,所述n个元数据服务器组中的每一元数据服务器组可以包括元数据主服务器和元数据备服务器,所述元数据备服务器用于备份所述元数据主服务器存储的元数据信息,并在所述元数据主服务器出现故障时,切换为元数据主服务器,以保证元数据服务器组的正常运行,提高了元数据服务器组的可靠性。

在一可选的实现方式中,元数据服务器组中为写请求确定的元数据信息中还可以包括数据标识,以确保客户端后续读数据时,根据要读数据的数据标识能够查找到元数据信息。基于此,所述n个元数据服务器组中的每一元数据服务器组,还可以用于在接收到外部输入的新增元数据服务器组的组标识时,根据本地存储的元数据信息包含的数据标识确定该元数据信息待迁移到的元数据服务器组,并将该元数据信息迁移至确定的元数据服务器组中。

其中,当存储系统中新增元数据服务器组时,存储系统中的元数据信息需要基于包括的数据标识实现重新分布,以重新平衡各元数据服务器组中的元数据信息,对于根据数据标识确定元数据信息待迁移到的元数据服务器组的原理,与客户端根据数据标识选择元数据服务器组的原理一致,只是参与计算的元数据服务器组的数量包含新增元数据服务器组,从而可以保证后续客户端在读取时,即使元数据信息已经重新分布过,根据要读数据的数据标识也可以确定出元数据信息所在的数据服务器组。

需要说明的是,虽然在新增元数据服务器组后,需要决策各元数据服务器组中的所有元数据信息的去向,但是由于元数据信息的数据量远远小于用户数据的数据量,因此元数据信息的重新分布过程所耗费的时间很短。

在一示例性场景中,如图2b所示,为一种示例性的元数据信息重新分布示意图,图2b中原有的元数据服务器组为a和b,在新增元数据服务器组c后,元数据服务器组a和b经过决策后,将a中存储的第四个元数据信息a迁移到了新增元数据服务器组c中,将b中存储的第四个元数据信息b迁移到了新增元数据服务器组c中。

在一可选的实现方式中,所述n个元数据服务器组中的每一元数据服务器组,还可以用于在接收到外部输入的新增数据服务器的服务器标识时,确定数据服务器集群中各数据服务器需要迁移数据的数据标识并通知给各数据服务器,并根据确定的数据标识和新增数据服务器的服务器标识更新本地存储的元数据信息;所述数据服务器集群中的每一数据服务器,还可以用于在接收到需要迁移数据的数据标识时,将所述数据标识对应的数据迁移至新增数据服务器中。

其中,当存储系统中新增数据服务器时,存储系统中的数据服务器需要将部分数据(即用户数据)迁移至新增数据服务器上,以均衡各个数据服务器中的数据。元数据服务器组确定各数据服务器需要迁移数据的数据标识需要考虑的因素包括整个数据服务器集群的负载情况(如当前处于在线状态的数据服务器,处于下线状态的数据服务器以及各数据服务器是处于忙状态还是空闲状态等)、各数据服务器中冷点数据和热点数据分布情况等,从而在数据服务器集群规模发生变化时,可以有效控制数据重新分布的规模,并且可以结合多方面因素对数据的重新分布做出更为精细的调整。另外还需要元数据服务器组利用确定的数据标识和新增数据服务器的服务器标识更新元数据信息,以保证后续客户端在读取数据时,即使该数据发生过迁移,根据更新后的元数据信息也可以从数据服务器中读取出。

在一示例性场景中,如图2c所示,为一种示例性的数据服务器中的数据迁移示意图,图2c中原有的数据服务器有a、b、c,在新增数据服务器d后,数据服务器a将本地第六个数据迁移到了新增数据服务器d中,数据服务器b中的数据未发生迁移,数据服务器c中的第五个和第六个数据均迁移到了新增数据服务器d中。

图3为本申请根据一示例性实施例示出的一种数据存储方法的实施例流程图,所述数据存储方法应用于上述图2a所示的系统,所述数据存储方法包括如下步骤:

步骤301:客户端根据待写数据的数据标识从所述n个元数据服务器组中选择一个元数据服务器组,并向选择的元数据服务器组发送写请求。

步骤302:元数据服务器组为所述写请求确定元数据信息,所述元数据信息包括所述待写数据要写入的目标数据服务器的服务器标识,在本地存储所述元数据信息并返回给客户端。

步骤303:客户端向所述元数据信息包括的服务器标识指向的目标数据服务器发送所述待写数据。

步骤304:目标数据服务器存储所述待写数据。

针对上述步骤301至步骤302的过程,可以参见上述图2a所示实施例的相关描述,不再赘述。

在一实施例中,当存储系统中新增元数据服务器组时,存储系统中的元数据信息需要基于包括的数据标识实现重新分布,以重新平衡各元数据服务器组中的元数据信息,具体分布过程为:元数据服务器组在接收到外部输入的新增元数据服务器组的组标识时,根据本地存储的元数据信息包含的数据标识确定该元数据信息待迁移到的元数据服务器组,并将该元数据信息迁移至确定的元数据服务器组中。

其中,针对上述分布过程的详细描述可以参见上述图2a所示实施例的相关描述,不再赘述。

在一实施例中,当存储系统中新增数据服务器时,存储系统中的数据服务器需要将部分数据(即用户数据)迁移至新增数据服务器上,以均衡各个数据服务器中的数据,具体均衡过程为:元数据服务器组在接收到外部输入的新增数据服务器的服务器标识时,确定数据服务器集群中各数据服务器需要迁移数据的数据标识并通知给各数据服务器,并根据所述数据标识和新增数据服务器的服务器标识更新本地存储的元数据信息;各数据服务器在接收到需要迁移数据的数据标识时,将所述数据标识对应的数据迁移至新增数据服务器中。

其中,针对上述均衡过程的详细描述可以参见上述图2a所示实施例的相关描述,不再赘述。

本申请实施例中,通过采用多个元数据服务器组的方式,客户端在写数据时,可以根据待写数据的数据标识从所有元数据服务器组中选择一个元数据服务器组,并由选择的元数据服务器组来决策元数据信息并存储下来,使得每个元数据服务器组只记录整个存储系统的部分元数据信息,避免了所有数据的写都由一台元数据服务器处理的问题,突破了单一元数据服务器带来的瓶颈,从而可扩大存储系统能够接入的客户端规模和数据服务器集群规模。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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