掌桥专利:专业的专利平台
掌桥专利
首页

用于分布式存储系统的对象定位方法及电子设备

文献发布时间:2023-06-19 09:38:30


用于分布式存储系统的对象定位方法及电子设备

技术领域

本发明涉及数据存储技术领域,尤其涉及一种用于分布式存储系统的对象定位方法及电子设备。

背景技术

由于大数据、人工智能(Artificial Intelligence,AI)技术的高速发展,需要配置的存储系统具有更大的容量、更快的响应速度以及更大的带宽。现有的对象存储在规模超过10亿或者100亿之后性能急剧下降,元数据存储急剧膨胀,而大数据和AI计算又会大量使用小文件,导致文件的元数据存储代价接近甚至有可能超过文件本身。

现有的大规模并发对象存储系统的元数据存储绝大多数是基于TiDB或者TiKV的KV存储作为统一的元数据中心,通过KV数据库来存放元数据,在读取时通过KV数据库查询对象的元数据并通过元数据的信息定位对象的真实存储地址。

现有技术使用TiDB或者TiKV作为元数据中心的元数据存储,其性能决定了整个系统的性能。TiDB作为一种kv数据库,虽然拥有很好的查询性能和可扩展性,但是随着存储规模的扩大,当数据量超过万亿,十万亿乃至百万亿时,任何通过元数据系统实现的查询特别是sql查询都有可能成为性能瓶颈,这是由于存储、读出、浏览(scan)的系统性能决定的,而为了提速,进行拆分有可能极大的推高元数据系统的成本。

发明内容

本发明实施例提供一种用于分布式存储系统的对象定位方法、分布式存储系统、电子设备以及存储介质,用以解决现有技术中存在的缺陷。

本发明实施例提供一种用于分布式存储系统的对象定位方法,包括:

获取待访问对象的访问请求,其中,所述访问请求携带所述待访问对象的用户信息;

基于所述用户信息,确定所述待访问对象的虚拟存储位置;

利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定所述待访问对象的实际存储位置。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述用户信息对应若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;所述基于所述用户信息,确定所述待访问对象的指定虚拟存储位置,包括:

确定所述用户信息对应的活跃版本的虚拟存储集合;

从所述活跃版本的虚拟存储集合中,确定所述待访问对象的指定虚拟存储位置。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述访问请求还携带有所述待访问对象的标识信息;所述从所述活跃版本的虚拟存储集合中,确定所述待访问对象的指定虚拟存储位置,包括:

基于所述标识信息以及所述活跃版本中的最新版本,确定所述待访问对象的虚拟标识;

从所述活跃版本的虚拟存储集合中查找出与所述虚拟标识对应的虚拟存储位置作为所述待访问对象的指定虚拟存储位置。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述方法还包括:

接收待存储对象的存储请求,其中,所述存储请求携带有所述待存储对象的用户信息;

利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,将所述待存储对象存入与所述目标虚拟存储位置对应的目标实际存储位置。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述用户信息对应若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;所述存储请求还携带有所述待存储对象的标识信息;所述基于所述用户信息,确定所述待存储对象的目标虚拟存储位置,之后还包括:

基于所述标识信息以及所述用户信息对应的若干虚拟的虚拟存储集合中的最新版本,确定所述待存储对象的虚拟标识,并将所述虚拟标识存入所述最新版本的虚拟存储集合中对应的虚拟存储位置内。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述方法还包括:

若判断获知所述最新版本的虚拟存储集合中所有虚拟存储位置均对应有对象,则增加新的虚拟存储集合,并将所述新的虚拟存储集合的版本设置为最新版本。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述待访问对象的实际存储位置包括所述待访问对象所处的存储桶以及所述存储桶所处的存储集群,所述存储集群具有优先级的属性;所述方法还包括:

基于对象的存储时间信息以及属性信息,将优先级较高的存储集群中对应于低版本的虚拟存储集合中的虚拟存储位置的对象,迁移至优先级较低的存储集群中。

根据本发明一个实施例的用于分布式存储系统的对象定位方法,所述方法还包括:

获取目标元数据信息;

在接收元数据更新指令之后,基于所述目标元数据信息,对本地存储的元数据信息进行更新。

本发明实施例还提供一种元数据系统,包括:统一存储单元以及若干元数据中心;

所述元数据中心用于执行如上述实施例所述的用于分布式存储系统的对象定位方法;

所述统一存储单元存储有用户信息,每一用户信息均对应于若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;

所述统一存储单元还存储有虚拟存储位置与实际存储位置之间的映射关系。

根据本发明一个实施例的元数据系统,还包括:负载均衡服务器;

所述负载均衡服务器用于接收对象的访问请求和/或对象的存储请求,并将所述访问请求和/或所述存储请求分配至任一所述元数据中心。

根据本发明一个实施例的元数据系统,所述元数据中心还用于:

若判断获知最新版本的虚拟存储集合中所有虚拟存储位置均对应有对象,则增加新的虚拟存储集合,并将所述新的虚拟存储集合的版本设置为最新版本。

本发明实施例还提供一种分布式存储系统,包括:统一运维中心以及如上述实施例所述的元数据系统;

所述统一运维中心用于:对所述元数据系统中的统一存储单元内存储的元数据信息进行修改。

本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述用于分布式存储系统的对象定位方法的步骤。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述用于分布式存储系统的对象定位方法的步骤。

本发明实施例提供的用于分布式存储系统的对象定位方法及电子设备,通过虚拟存储位置与实际存储位置之间的映射关系的引入,不仅可以快速查找到待访问对象的实际存储位置,而且在本地存储的映射关系是一种轻量级元数据,可以大大节约元数据的存储空间,降低存储规模以及复杂度,减少了搭建及维护成本。即使在需要对分布式存储系统进行扩容的情况下,也可以在不影响系统性能的情况下实现对系统的扩容。尤其针对于万亿级别及以上量级的对象存储,本发明实施例中提供的用于分布式存储系统的对象定位方法,其优势更加凸显。另外,本发明实施例中本地存储的映射关系,相比于现有技术中集中式的元数据存储,避免了单点性能瓶颈,使得元数据服务可以水平扩容。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种用于分布式存储系统的对象定位方法的流程示意图;

图2是本发明实施例提供的一种元数据系统的结构示意图;

图3是本发明实施例中提供的一种元数据系统的结构示意图;

图4是本发明实施例中提供的一种分布式存储系统的结构示意图;

图5是本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

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

现有技术使用TiDB或者TiKV作为元数据中心的元数据存储,虽然拥有很好的查询性能和可扩展性,但是随着存储规模的扩大,但是当数据量超过万亿,十万亿乃至百万亿时,任何通过元数据系统实现的查询特别是sql查询都有可能成为性能瓶颈,导致查询效率降低。为此本发明实施例中提供了一种用于分布式存储系统的对象定位方法。

如图1为本发明实施例中提供的一种用于分布式存储系统的对象定位方法的流程示意图,如图1所示,该方法包括:

S1,获取待访问对象的访问请求,其中,所述访问请求携带有所述待访问对象的用户信息;

S2,基于所述用户信息,确定所述待访问对象的虚拟存储位置;

S3,利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定所述待访问对象的实际存储位置。

可以理解的是,本发明实施例中提供的用于分布式存储系统的对象定位方法,其执行主体为元数据中心,元数据中心可以是本地服务器,例如智能手机、计算机、平板电脑等,也可以是云端服务器,本发明实施例中对此不作限定。元数据中心可以是元数据系统中提供元数据服务的模块,元数据系统为分布式存储系统中用于存储及处理对象的元数据的模块。元数据是指用于描述对象的数据,用于支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据可以作为一种电子式目录,为了达到编制目录的目的,必须描述并收藏数据的内容或特色,进而达成协助数据检索的目的。

在该分布式存储系统中可以包括网关模块,网关模块可以是用户实现对象存储及访问的入口,网关模块可以通过网络接口与用户接口(UserInterface)连接,网络接口可以包括S3API和SwiftAPI,二者能够同时提供高性能远程过程调用(Remote ProcedureCalls,RPC)接口。用户接口是面向用户的接口,可以提供公网入口和内网入口。元数据中心可以与网关模块通信连接,以进行信息的交互。

本发明实施例中给出了对待访问对象的访问过程,即如何确定出待访问对象在分布式存储系统中的实际存储位置并顺利读取。首先执行步骤S1,获取待访问对象的访问请求,访问请求携带有待访问对象的用户信息。其中,待访问对象为待访问的对象,该对象的内容可以是数据、文件等,待访问对象的访问请求可以由用户通过用户接口传输至网关模块。访问请求可以是一种基于http协议生成的链接地址,可以是URL信息。待访问对象的用户信息可以包括待访问对象对应的用户账户(Account)以及用户桶信息。本发明实施例中,分布式存储系统中基于用户账户实现隔离,即每个用户在分布式存储系统中均对应存在一个用户账户,该用户账户可以通过注册得到,且该用户账户与用户桶是一一对应的。用户桶信息可以是用于表征待访问对象对应的用户桶(UserBucket/UserContainer,UB/UC)的相关信息,用户桶是一种虚拟桶,可以理解为是为用户账户分配的存储层面上的虚拟概念,用于让用户账户将分布式存储系统中的所有存储集群不作区分地作为一个整体进行考虑。

网关模块接收到该访问请求后,对该访问请求进行分类,以确定该访问请求的类型是swift请求还是S3请求,即判断该访问请求是通过哪种类型的用户接口接收到的。针对访问请求的类型,对访问请求进行相应处理,以识别出该访问请求中包含的待访问对象对应的用户桶信息以及用户账户,并将该访问请求转发至元数据中心。

然后执行步骤S2,在分布式存储系统中,每个用户桶可以对应有若干虚拟存储集合(HashBuckets,HBs),每个虚拟存储集合中可以包括一个或多个虚拟存储位置(HashBucket,HB),每个虚拟存储位置用于表征对象在用户桶中的逻辑存储位置。根据待访问对象的用户信息,可以确定出待访问对象对应的虚拟存储位置。

本发明实施例中可以为每个虚拟存储位置分配一标识信息,在确定待访问对象的虚拟存储位置时,可以根据待访问对象的用户信息,结合相应算法对访问请求进行运算,得到对应的数值,确定携带有与该数值对应的标识信息的虚拟存储位置即为待访问对象的虚拟存储位置。

最后执行步骤S3,在本地存储有虚拟存储位置与实际存储位置之间的映射关系,这里的本地是指元数据中心本地,可以是指元数据中心内存。利用该映射关系确定待访问对象的实际存储位置,即待访问对象的虚拟存储位置所对应的实际存储位置,该实际存储位置中即存储有待访问对象,网关模块可以顺利从该实际存储位置中读取到待访问对象。

本发明实施例中提供的用于分布式存储系统的对象定位方法,首先获取待访问对象的访问请求;然后根据访问请求携带的用户信息,确定待访问对象的虚拟存储位置;最后利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定待访问对象的实际存储位置,以供网关模块从实际存储位置中读取待访问对象。虚拟存储位置与实际存储位置之间的映射关系的引入,不仅可以快速查找到待访问对象的实际存储位置,而且在本地存储的映射关系是一种轻量级元数据,可以大大节约元数据的存储空间,降低存储规模以及复杂度,减少了搭建及维护成本。即使在需要对分布式存储系统进行扩容的情况下,也可以在不影响系统性能的情况下实现对系统的扩容。尤其针对于万亿级别及以上量级的对象存储,本发明实施例中提供的用于分布式存储系统的对象定位方法,其优势更加凸显。另外,本发明实施例中本地存储的映射关系,相比于现有技术中集中式的元数据存储,避免了单点性能瓶颈,使得元数据服务可以水平扩容。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述用户信息对应若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;所述基于所述用户信息,确定所述待访问对象的虚拟存储位置,包括:

确定所述用户信息对应的活跃版本的虚拟存储集合;

从所述活跃版本的虚拟存储集合中,确定所述待访问对象的虚拟存储位置。

可以理解的是,本发明实施例中,用户信息对应若干版本的虚拟存储集合是指用户信息可以对应于若干虚拟存储集合,每个虚拟存储集合具有一个版本,每个版本均可以具有对应的版本号,例如version-0、version-1等。不同版本的虚拟存储集合中的虚拟存储位置之间相互独立。

在此基础上,基于用户信息确定待访问对象的虚拟存储位置,可以通过如下方式实现:先确定出用户信息对应的活跃版本的虚拟存储集合。由于用户信息可以对应于若干虚拟存储集合,而且虚拟存储集合的数量可以继续增加,进而会使得虚拟存储集合的版本数继续增加,为保证每个用户信息对应的虚拟存储集合的版本数不至于过多,需要将一些历史版本的虚拟存储集合进行淘汰,可以随时间对其内存储的内容淘汰或者按照自定义规则对其内存储的内容进行淘汰或者进行迁移,当所有内容均淘汰完毕,则将对应版本的虚拟存储集合进行注销。历史版本的虚拟存储集合即创建时间在前的虚拟存储集合。未被注销的虚拟存储集合即为活跃版本的虚拟存储集合,活跃版本的虚拟存储集合也可以有一个或多个,且活跃版本一定包含有最新版本,即最后创建的虚拟存储集合的版本。

然后,从活跃版本的虚拟存储集合中确定出待访问对象的虚拟存储位置。需要说明的是,由于在最新版本的虚拟存储集合中并不一定会找到待访问对象的虚拟存储位置,因此为保证待访问对象的虚拟存储位置可以顺利找到,需要从所有活跃版本的虚拟存储集合中进行查找。

本发明实施例中,引入虚拟存储集合的版本概念,为待访问对象的虚拟存储位置的确定提供便利,而且对于后续分布式存储系统的扩容也提供了便利。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述访问请求还携带有所述待访问对象的标识信息;所述从所述活跃版本的虚拟存储集合中,确定所述待访问对象的虚拟存储位置,包括:

基于所述标识信息以及所述活跃版本中的最新版本,确定所述待访问对象的虚拟标识;

从所述活跃版本的虚拟存储集合中查找出与所述虚拟标识对应的虚拟存储位置作为所述待访问对象的虚拟存储位置。

可以理解的是,在访问请求中还携带有待访问对象的标识信息,该标识信息用于唯一标识待访问对象,可以是待访问对象的身份信息或者其他对待访问对象起标识作用的信息。

在此基础上,在从活跃版本的虚拟存储集合中确定出待访问对象的虚拟存储位置时,可以先根据访问请求中携带的标识信息以及活跃版本中的最新版本确定出待访问对象的虚拟标识,该虚拟标识可以是与用户信息对应的最新版本的虚拟存储集合中某一虚拟存储位置的标识信息相同的一种标识。虚拟存储位置的标识信息可以是对应的对象的标识信息的哈希值中的预设位,哈希值的确定可以通过哈希算法实现,在确定不同版本的虚拟存储集合中的虚拟存储位置的标识信息时所采用的哈希算法可以相同也可以不同。采用相同哈希算法和不同哈希算法在实现策略上有少许差异,但不影响其本质——即通过版本隔离不同的虚拟存储集合。

在确定待访问对象的虚拟标识时,需要结合最新版本确定出对应的哈希算法,然后采用该哈希算法对访问请求中携带的标识信息进行哈希运算,即可得到待访问对象的虚拟标识。其中,哈希算法可以是进行1次哈希计算加位偏移计算,或者进行2次哈希计算,可以根据需要进行选定,只要保证一个访问请求对应一个虚拟存储位置即可。例如,可以对标识信息使用MD5进行计算得到MD5值,并将MD5值作为哈希值。

在确定待访问对象的虚拟标识之后,可以从活跃版本的虚拟存储集合中查找出与该虚拟标识对应的虚拟存储位置,并其作为待访问对象的虚拟存储位置。

本发明实施例中,通过与虚拟存储位置的标识信息相同的虚拟标识,将待访问对象的标识信息与虚拟存储位置建立关联,并可以通过该关联更快速的确定出待访问对象的虚拟存储位置,进而确定出待访问对象的实际存储位置,提高了待访问对象的访问效率。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,还包括:

接收待存储对象的存储请求,其中,所述存储请求携带有所述待存储对象的用户信息;

基于所述用户信息,确定所述待存储对象的目标虚拟存储位置;

利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,将所述待存储对象存入与所述目标虚拟存储位置对应的目标实际存储位置。

可以理解的是,本发明实施例中给出了对待存储对象的存储过程,即如何确定出待存储对象在分布式存储系统中的目标实际存储位置并顺利将待存储对象存储至目标实际存储位置。本发明实施例不对上述访问过程和存储过程执行的先后顺序作限定。

首先接收待存储对象的存储请求,待存储对象为待存储的对象,该对象的内容可以是数据、文件等,待存储对象的存储请求可以由用户通过用户接口传输至网关模块,存储请求可以是一种基于http协议生成的链接地址,可以是统一资源定位器(UniformResource Locator,URL)信息。待存储对象的用户信息可以包括待存储对象对应的用户账户以及用户桶信息。网关模块接收到该存储请求后,对该存储请求进行分类,以确定该存储请求的类型是swift请求还是S3请求,即判断该存储请求是通过哪种类型的用户接口接收到的。针对存储请求的类型,对存储请求进行相应处理,以识别出该存储请求中包含的待存储对象对应的用户桶信息以及用户账户。

然后根据用户信息确定待存储对象的目标虚拟存储位置,可以采用与根据用户信息确定待访问对象的虚拟存储位置的方式进行确定,本发明实施例中对此不作限定。最后,结合本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定待存储对象的目标实际存储位置,即目标虚拟存储位置对应的实际存储位置,将待存储对象存入至目标实际存储位置中,实现对待存储对象的顺利存储。

本发明实施例中,通过本地存储的虚拟存储位置与实际存储位置之间的映射关系,可以为待存储对象的存储提供便利,提高待存储对象的存储效率,缩短对象存储耗费的时间。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述用户信息对应若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;所述存储请求还携带有所述待存储对象的标识信息;所述基于所述用户信息,确定所述待存储对象的目标虚拟存储位置,之后还包括:

基于所述标识信息以及所述用户信息对应的若干虚拟的虚拟存储集合中的最新版本,确定所述待存储对象的虚拟标识,并将所述虚拟标识存入所述最新版本的虚拟存储集合中对应的虚拟存储位置内。

可以理解的是,由于用户信息对应若干版本的虚拟存储集合,每个虚拟存储集合均包括有多个虚拟存储位置,且存储请求还携带有待存储对象的标识信息,该标识信息用于唯一标识待存储对象,可以是待存储对象的身份信息或者其他对待存储对象起标识作用的信息。

在根据用户信息确定待存储对象的目标虚拟存储位置,之后还可以包括:根据待存储对象的标识信息以及用户信息对应的若干虚拟的虚拟存储集合中的最新版本,确定待存储对象的虚拟标识。该虚拟标识可以是与用户信息对应的最新版本的虚拟存储集合中某一虚拟存储位置的标识信息相同的一种标识。虚拟存储位置的标识信息可以是对应的对象的标识信息的哈希值中的预设位,哈希值的确定可以通过哈希算法实现,在确定不同版本的虚拟存储集合中的虚拟存储位置的标识信息时所采用的哈希算法可能相同也可能不同。因此在确定待存储对象的虚拟标识时,需要结合最新版本确定出对应的哈希算法,然后采用该哈希算法对访问请求中携带的标识信息进行哈希运算,即可得到待存储对象的虚拟标识。其中,哈希算法可以是进行1次哈希计算加位偏移计算,或者进行2次哈希计算,可以根据需要进行选定,只要保证一个访问请求对应一个虚拟存储位置即可。例如,可以对标识信息使用MD5进行计算得到MD5值,并将MD5值作为哈希值。

在确定待存储对象的虚拟标识之后,将该虚拟标识存入最新版本的虚拟存储集合中对应的虚拟存储位置内,即将该虚拟标识存入至虚拟存储集合中标识信息与虚拟标识相同的虚拟存储位置内,以便后续在进行对象访问时可以通过确定对象的虚拟标识直接找到对应的虚拟存储位置。本发明实施例中每个虚拟存储位置内最多可以存放1000000个对象的虚拟标识,对于一个包含有n个虚拟存储位置的虚拟存储集合,其中最多可以存放n*1000000个对象的虚拟标识。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述方法还包括:若判断获知所述最新版本的虚拟存储集合中所有虚拟存储位置均对应有对象,则增加新的虚拟存储集合,并将所述新的虚拟存储集合的版本设置为最新版本。

可以理解的是,本发明实施例中提供了一种对虚拟存储集合进行扩容的方法。对虚拟存储集合进行扩容,即增加虚拟存储集合的数量,可以在最新版本的虚拟存储集合中所有虚拟存储位置均对应有对象时,增加新的虚拟存储集合,并将新的虚拟存储集合的版本设置为最新版本。以虚拟存储集合中的虚拟存储位置的标识信息为对应的对象的标识信息的哈希值为例,哈希值一般为64bit或128bit,因此可以设置每个虚拟存储集合对应于哈希值的不同预设位,第一版本version-0的虚拟存储集合对应的预设位可以为8位,可以对应于哈希值的低8位,例如序号为0-7的bit位。则第一版本version-0的虚拟存储集合中包含的虚拟存储位置可以有2

若最新版本为第一版本version-0,则第一版本version-0的虚拟存储集合中所有虚拟存储位置均对应有对象,即第一版本version-0的虚拟存储集合共对应存放2

若第二版本version-1的虚拟存储集合中所有虚拟存储位置均对应有对象,即第二版本version-1的虚拟存储集合共对应存放2

在此基础上,在进行对象存储时,将待存储对象的虚拟标识存入至最新版本的虚拟存储集合中对应的虚拟存储位置内。在进行对象访问时,可以在计算MD5之后按照偏移值同时在第一版本version-0以及第二版本version-1中查找。

本发明实施例中,通过虚拟存储集合的版本,可以方便快速的实现对虚拟存储集合的扩容,且并不会影响整个分布式存储系统的性能。

由于每个虚拟存储位置最大可完全占有一个存储桶,但是由于一个存储桶最好不要超过100万个对象,所以一个存储的存放上限为100万个对象,也可以根据实际需要对该存放上限进行调整。

本发明实施例中,对历史版本的虚拟存储集合建议建立规则淘汰,尽量保证用户桶中的虚拟存储集合同时存在的活跃版本不要太多。

当新建新版本的虚拟存储集合时,同时生成其内部对应的虚拟存储位置的标识信息和对应的哈希函数。新建一个或多个存储桶,将新版本的虚拟存储集合分配至新建的存储桶中,修改第一映射关系并保存至统一存储单元内,以修改统一存储单元内的元数据信息并由统一运维中心发起元数据信息更新流程。

需要说明的是,基于版本的虚拟存储集合扩容的好处是:1)避免直接增大虚拟存储位置数量导致对象大量迁移;2)存储集群新上线可以兼容旧存储集群内存储的对象,旧存储集群内存储的对象的虚拟标识作为旧版本放置于一个独立的虚拟存储集合中,虚拟存储集合完全分配给原有的存储桶;新对象则按新规则落入指定位置,存储集群上无迁移;旧版本对象可以逐渐淘汰,而淘汰过程不影响新落入的热点对象。

在上述实施例的基础上,还可以对存储集群进行扩容,即增加存储集群的数量,在对存储集群进行扩容时,元数据中心无需任何操作。在增加一个新的存储集群时,将该存储集群的相关信息写入统一存储单元的元数据信息中,统一运维中心启动元数据信息更新流程;在存储集群中新增存储桶时可以不用立即更新元数据信息,这是因为没有分配到虚拟存储位置的存储桶是不会被访问到的。此时需要有运维人员手动指定或者由运维系统自动化指定部分虚拟存储位置至新增的存储桶上,然后更新统一存储单元中存储桶与存储集群之间的第一映射关系、虚拟存储位置与存储桶之间的第二映射关系,最后由统一运维中心启动元数据信息更新流程。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述待访问对象的实际存储位置包括所述待访问对象所处的存储桶以及所述存储桶所处的存储集群,所述存储集群具有优先级的属性;所述方法还包括:

基于对象的存储时间信息以及属性信息,将优先级较高的存储集群中对应于低版本的虚拟存储集合中的虚拟存储位置的对象,迁移至优先级较低的存储集群中

可以理解的是,本发明实施例中的分布式存储系统中还包括存储集群,存储集群可以有多个,每个存储集群可以携带有用于起标识作用的标识,例如序号。每个存储集群均可用于存储对象的内容,每个存储集群中可以包含有多个用于存储对象的内容的存储桶(RealBucket/RealContainer,RB/RC)。因此,实际存储位置可以包括存储桶以及存储集群,本地存储的虚拟存储位置与实际存储位置之间的映射关系,可以包括虚拟存储位置与存储桶之间的第一映射关系以及存储桶与存储集群之间的第二映射关系。本发明实施例中,每个RB/RC一定唯一属于某一个存储集群。每个RB/RC一定唯一对应于某一个用户桶,但是反过来一个用户桶可以对应于有多个分布在不同存储集群的RB/RC。每个RB/RC可以被分配有1个或多个虚拟存储位置,最多可以分配有一个用户桶对应的一个虚拟存储集合中的所有虚拟存储位置。

存储集群可以具有优先级的属性,即存储集群可以以优先级进行划分,分为高优先级存储集群、中优先级存储集群以及低优先级存储集群,高优先级存储集群用于存储高优先级的对象,中优先级存储集群用于存储中优先级的对象,低优先级存储集群用于存储低优先级的对象。属于同一类的存储集群可以有多个,例如,可以有多个高优先级存储集群、多个中优先级存储集群以及多个低优先级存储集群。属于同一类的多个存储集群可以携带有用于表示类别的统一标识以及用于区分同一类别下的其他存储集群的个体标识。由于存储集群的按类别划分,可以使得分布式存储系统可以天然支持数据分层存储。

在此基础上,可以根据对象的存储时间信息以及属性信息,将优先级较高的存储集群中对应于低版本的虚拟存储集合中的虚拟存储位置的对象,迁移至优先级较低的存储集群中。对象的存储时间信息是指对象存储时间的先后、长短等信息,在对分布式存储系统进行扩容时,可以根据各存储集群中对象的存储时间信息以及属性信息,将优先级较高的存储集群中的对象迁移至优先级较低的存储集群中,即对于存储时间较久的对象,结合其属性信息考虑,可以认为其优先级较低或者热度较低,因此可以将其由原来所处的优先级较高的存储集群迁移至优先级较低的存储集群中。进行迁移的对象可以是优先级较高的存储集群中对应于低版本的虚拟存储集合中的虚拟存储位置的对象。

本发明实施例中,将优先级较高的存储集群中的对象迁移至优先级较低的存储集群中,可以为后续优先级较高的对象提供充足的存储空间。

在上述实施例的基础上,本发明实施例中提供的用于分布式存储系统的对象定位方法,所述方法还包括:

获取目标元数据信息;

在接收元数据更新指令之后,基于所述目标元数据信息,对本地存储的元数据信息进行更新。

可以理解的是,本发明实施例中的用于分布式存储系统的对象定位方法,还可以对本地存储的元数据信息进行更新。

首先,元数据中心获取目标元数据信息,该目标元数据信息是指统一存储单元内存储的、修改后的元数据信息,也即元数据中心需要将其内部存储的元数据信息最终更新成为的信息,其获取方式可以是在元数据系统中的统一存储单元内存储的元数据信息被修改后,由分布式存储系统中包含的统一运维中心向元数据中心发送获取指令。元数据中心在接收到获取指令之后,从统一存储单元中将目标元数据信息拷贝至本地进行存储。

元数据中心在拷贝完成之后,还可以向统一运维中心发送存储反馈消息给统一运维中心,以通知统一运维中心完成存储。若统一运维中心在第一预设时间段内未收到元数据中心发送的存储反馈信息,则认为该元数据中心超时未完成拷贝,将该元数据中心下线。

其次,元数据中心接收元数据更新指令,并在接收元数据更新指令之后,根据目标元数据信息,对本地存储的元数据信息进行更新,使本地存储的元数据信息与目标元数据信息一致。其中,元数据更新指令可以是统一运维中心在第一预设时间段内接收到元数据中心发送的存储反馈信息之后发送。

最后,对元数据容量需求进行预估,以2

综上所述,本发明实施例中通过对对象进行映射和版本管理来计算对象存放的虚拟存储位置,在通过映射关系和虚拟存储位置联合查询获得对象的实际存储位置,从而以轻量级元数据实现大规模异构对象存储集群的高速的对象存取能力。

在上述实施例的基础上,图2为本发明实施例中提供的一种元数据系统的结构示意图,如图2所示,该元数据系统包括:统一存储单元21以及若干元数据中心22;所述元数据中心22用于执行上述各实施例所述的用于分布式存储系统的对象定位方法;图2中仅示出了元数据系统中包含有元数据中心A、元数据中心B以及元数据中心C这3个元数据中心的场景。

所述统一存储单元存储有用户信息,每一用户信息均对应于若干版本的虚拟存储集合,所述虚拟存储集合包括多个虚拟存储位置;

所述统一存储单元还存储有虚拟存储位置与实际存储位置之间的映射关系。

可以理解的是,本发明实施例中统一存储单元存储元数据信息时,是按照用户信息进行隔离存储的,每一用户信息均对应于若干版本的虚拟存储集合,每个虚拟存储集合包括多个虚拟存储位置。不仅如此,统一存储单元还存储有虚拟存储位置与实际存储位置之间的映射关系等元数据信息,用以通过对统一存储单元中存储的元数据信息进行修改,实现对元数据系统中各元数据中心本地存储的元数据信息进行更新。

在上述实施例的基础上,图3为本发明实施例中提供的一种元数据系统的结构示意图,如图3所示,该元数据系统还包括:负载均衡服务器23。其中,负载均衡服务器23用于接收待访问对象的访问请求和/或待存储对象的存储请求,并将所述访问请求和/或所述存储请求分配至任一所述元数据中心。

可以理解的是,本发明实施例中的元数据系统,即为元数据集群,同传统元数据集群不同的是:传统集中式元数据集群,通常各自存放各自的元数据信息(元数据数量巨大,单组服务器无法完全存储),而本发明实施例中全部元数据信息存放在统一存储单元中,每台元数据中心都加载一个故障域内全部的元数据信息(轻量级元数据系统需要存储的数据量很小),每台元数据中心都是无状态的服务,通过负载均衡服务器为所有的元数据访问请求或存储请求提供服务,可以提供平滑的水平扩展来提高服务能力。负载均衡服务器可以是Nginx负载均衡服务器。

网关模块将访问请求或存储请求转发至元数据中心的过程中,访问请求和/或存储请求先由负载均衡服务器23接收,然后由其将访问请求和/或存储请求分配至任一所述元数据中心进行处理。任一元数据中心在接收到访问请求和/或存储请求之后,可以先加载其中的用户信息,确定用户账户以及对应的用户桶;然后加载用户信息对应的虚拟存储位置与存储桶之间的第一映射关系;然后加载存储桶与存储集群之间的第二映射关系;最后开始服务。需要说明的是,元数据系统中所有元数据中心均单独启动单独提供服务。

本发明实施例中,通过负载均衡服务器实现对请求的均衡分配,通过统一存储单元实现对元数据信息的统一存储,通过多个元数据中心实现对请求的处理,可以保证请求的处理效率。

在上述实施例的基础上,所述元数据中心还用于:

若判断获知最新版本的虚拟存储集合中所有虚拟存储位置均对应有对象,则增加新的虚拟存储集合,并将所述新的虚拟存储集合的版本设置为最新版本。

可以理解的是,可以通过元数据中心实现对虚拟存储集合的扩容,保证分布式存储系统的大存储容量。

在上述实施例的基础上,图4为本发明实施例中提供的一种分布式存储系统的结构示意图,如图4所示,该分布式存储系统包括:统一运维中心41以及上述各实施例中所述的元数据系统42。其中,

统一运维中心41用于:对所述元数据系统中的统一存储单元内存储的元数据信息进行修改。

可以理解的是,统一运维中心用于修改统一存储单元中的元数据信息,然后将修改后的元数据信息发送至各元数据中心,要求各元数据中心对本地的元数据信息进行更新。所有元数据中心从统一存储单元中将修改后的元数据信息拷贝至本地进行存储,拷贝完成后发送存储反馈消息给统一运维中心,以通知统一运维中心完成存储。若统一运维中心在第一预设时间段内未收到某一元数据中心发送的存储反馈信息,则认为该元数据中心超时未完成拷贝,将超时未完成拷贝的元数据中心下线。

本发明实施例中,可以通过统一运维中心实现对元数据信息的统一修改与维护,大大节约了维护成本,提高了维护效率。

在上述实施例的基础上,所述统一运维中心还用于:

向所有在线的元数据中心发送更新指令,以使所有在线的元数据中心基于所述更新指令更新本地的元数据信息,并向所述统一运维中心发送更新反馈信息;

若在第二预设时间段内未接收到任一元数据中心发送的更新反馈信息,则将所述任一元数据中心进行下线处理。

可以理解的是,当所有在线元数据中心拷贝完成修改后的元数据信息后,统一运维中心发送停止服务指令以及更新指令,以指示在线元数据中心停止服务,并根据存储的修改后的元数据信息对本地元数据信息进行更新。

在线元数据中心收到停止服务指令以及更新指令后停止服务,更新元数据信息,更新完毕后重新服务,并发送更新反馈信息给统一运维中心。如果统一运维中心在第二预设时间段内未接收到某一元数据中心发送的更新反馈信息,则认为该元数据中心超时未应答。统一运维中心对于超时未应答的元数据中心进行下线处理。

对于下线的元数据中心,可以通过人工检查后重启服务重新上线,在统一存储单元中获取到最新的元数据信息。

需要说明的是,由于用户账户、用户桶、虚拟存储集合与元数据信息隔离,因此可以仅更新涉及到用户桶以及虚拟存储集合中虚拟存储位置的部分元数据,停止服务也可以仅停止涉及更新部分元数据的查询服务。

综上所述,本发明实施例中提供了一种基于映射关系实现的用于统一多对象存储集群的轻量级元数据系统,可以支撑万亿级别的对象存储;提供了一种基于版本定位以及虚拟标识实现的虚拟存储位置确定方法,用于支撑本元数据系统的虚拟存储集合扩容,该方案具有零迁移、上层用户无感知的特点;提供了一种虚拟存储位置与存储桶之间的第一映射关系,可以有效地实现单用户桶存放海量数据并有效查找的能力;提供了一种存储桶与存储集群之间的第二映射关系,并提供了一种新建存储集群、新建存储桶并迁移虚拟存储位置对应的对象至新建存储桶的方法进行集群扩容,极大的降低了扩容后的数据迁移量,有效降低扩容后数据均衡导致的集群性能下降问题。

本发明实施例中,对于多集群的集群类型的要求低,可以以异构多集群方式实现底层数据存储,扩容集群只要是支持swift接口或者S3接口的对象存储集群都可以作为底层集群,加入到存储集群中;相对于集中式的元数据存储的方案来说没有集中式元数据存储的单点性能瓶颈,元数据服务可以水平扩容;依托各底层集群存放对象,然后基于映射关系实现定位,定位性能好,一次MD5计算加1次位运算和一次映射关系即可得到对象存放的存储集群和存储桶,直接将访问请求下发至对应的存储集群即可获得对象,其性能与单集群性能相差无几;本发明实施例中提供的分布式存储系统可以天然支持数据分层存储,具有集群扩容时数据迁移少,且迁移行为可控,虚拟存储集合版本扩容零迁移等特点。

图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行用于分布式存储系统的对象定位方法,该方法包括:获取待访问对象的访问请求,其中,所述访问请求携带所述待访问对象的用户信息;基于所述用户信息,确定所述待访问对象的虚拟存储位置;利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定所述待访问对象的实际存储位置。

此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的用于分布式存储系统的对象定位方法,该方法包括:获取待访问对象的访问请求,其中,所述访问请求携带所述待访问对象的用户信息;基于所述用户信息,确定所述待访问对象的虚拟存储位置;利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定所述待访问对象的实际存储位置。

又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的用于分布式存储系统的对象定位方法,该方法包括:获取待访问对象的访问请求,其中,所述访问请求携带所述待访问对象的用户信息;基于所述用户信息,确定所述待访问对象的虚拟存储位置;利用本地存储的虚拟存储位置与实际存储位置之间的映射关系,确定所述待访问对象的实际存储位置。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 用于分布式存储系统的对象定位方法及电子设备
  • 对象定位系统、对象定位方法、对象定位装置和电子设备
技术分类

06120112242415