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

一种分布式对象存储系统中桶索引动态重分的方法和系统

文献发布时间:2023-06-19 11:49:09


一种分布式对象存储系统中桶索引动态重分的方法和系统

技术领域

本发明分布式对象存储技术领域,特别涉及一种分布式对象存储系统中桶索引动态重分的方法和系统。

背景技术

现有分布式对象存储系统中,会为每个桶维护一份索引表,保存了桶和桶内全部对象元数据之间的映射关系,用户访问桶内对象时,是通过桶索引获取对象的具体数据。而当桶内存储的对象数量过大时,超大的索引会造成性能和可靠性的问题;因此当前业界提出了通过索引分片的机制来解决桶内存储大量对象的问题。通过创建多份索引表,解决单个索引对象可能过大,从而不能满足数据增长等业务需要的问题。

然而,桶索引分片需要在使用前对桶存储对象的整体情况有非常良好的规划和设计,难以满足业务伸缩性的需要,而且业务过程使用中需要运维人员时时关注单个索引对象的大小,且实际应用中由于业务的复杂性,往往出现了性能下降等问题才会发现桶索引对象过大的问题。

发明内容

为了解决上述技术问题,本发明提出了一种分布式对象存储系统中桶索引动态重分的方法和系统,通过桶索引自动分片,实现了桶索引分片数量的自动扩展,以满足实际业务的动态需求,降低了系统由于桶索引分片过大导致可能导致的性能问题和业务故障出现的可能性,增加了系统的可靠性和可伸缩性。

为实现上述目的,本发明采用以下技术方案:

一种分布式对象存储系统中桶索引动态重分的方法,包括以下步骤:

检测索引数是否达到所述桶索引对象阈值,若达到阈值,则将所述桶加入分片任务队列;

按照预先设置的当前索引对象的数量,执行桶重分操作;

遍历原始桶索引对象中保存的所有索引条目,并将所有索引条目保存至当前索引对象的存储位置。

进一步的,所述在检测索引数是否达到所述桶索引对象阈值之前还包括确定原始桶索引对象重新分片的最大分片数,并计算不大于最大分片数的最大质数,所述最大质数作为当前索引对象的数量。

进一步的,所述按照预先设置的当前索引对象的数量,执行桶重分操作的过程为:

向数据存储层下发创建当前索引对象数量的命令和记录删除索引任务的数据存储层对象的指令;

将桶重分状态设置为processing。

进一步的,所述方法还包括定时循环,当分片任务队列中有待执行任务时,遍历所有任务并执行,在执行完毕后休眠固定时间间隔,然后进入下一轮扫描。

进一步的,所述在执行桶重分操作时,如果业务端执行读索引操作时,首先从当前索引对象上读取,如果读取不到,再从原始桶索引对象上读取。

进一步的,所述在执行桶重分操作时,如果业务端执行写索引操作时,写索引直接哈希写入当前索引对象。

进一步的,所述在执行桶重分操作时,如果业务端执行删除索引操作时,将索引删除任务写入记录删除索引任务的数据存储层对象omap中。

进一步的,所述将所有索引条目保存至当前索引对象的存储位置之后还包括:

将桶的重分状态设置为done,并删除原始桶索引对象,并将桶重分片任务从任务队列中删除。

一种分布式对象存储系统中桶索引动态重分的系统,包括检测模块、重分模块和保存模块;

所述检测模块用于检测索引数是否达到所述桶索引对象阈值,若达到阈值,则将所述桶加入分片任务队列;

所述重分模块用于按照预先设置的当前索引对象数量,执行桶重分操作;

所述保存模块用于遍历原始桶索引对象中保存的所有索引条目,并将所有索引条目保存至当前索引对象的存储位置。

进一步的,所述系统包括预选设置模块和删除模块;

所述预先设置模块用于确定原始桶索引对象重新分片的最大分片数,并计算不大于最大分片数的最大质数,所述最大质数作为当前索引对象的数量;

所述删除模块用于将桶的重分状态设置为done,并删除原始桶索引对象,并将桶重分片任务从任务队列中删除。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

本发明提出了一种分布式对象存储系统中桶索引动态重分的方法和系统,该方法包括以下步骤:确定原始桶索引对象重新分片的最大分片数,并计算不大于最大分片数的最大质数,最大质数作为当前索引对象的数量;检测索引数是否达到桶索引对象阈值,若达到阈值,则将桶加入分片任务队列;按照预先设置的当前索引对象的数量,执行桶重分操作;遍历原始桶索引对象中保存的所有索引条目,并将所有索引条目保存至当前索引对象的存储位置;所有索引全部重新散列存储完成后将桶的重分状态设置为done,并删除原始桶索引对象,并将桶重分片任务从任务队列中删除。基于本发明提出的一种分布式对象存储系统中桶索引动态重分的方法,本发明还提出了一种分布式对象存储系统中桶索引动态重分的系统。本发明对象上传至桶时,检查每个索引分片可以有效地处理其新增的索引条目,直到达到一定的阈值数量。如果超过此阈值,动态重分功能会扫描检测到,并调用重分功能增加存储桶索引使用的分片数量,从而减少了每个存储桶索引分片中的条目数量。本设计通过桶索引自动分片,实现了桶索引分片数量的自动扩展,以满足实际业务的动态需求,降低了系统由于桶索引分片过大导致可能导致的性能问题和业务故障出现的可能性,增加了系统的可靠性和可伸缩性,实现了桶索引分片的自动化和透明化。

附图说明

如图1为本发明实施例1一种分布式对象存储系统中桶索引动态重分的方法流程图;

如图2为本发明实施例1一种分布式对象存储系统中桶索引动态重分的方法线程图;

如图3为本发明实施例1原始桶索引对象重新分片至当前索引对象的示意图;

如图4为本发明实施例2一种分布式对象存储系统中桶索引动态重分的系统示意图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

实施例1

本发明实施例1提出了一种分布式对象存储系统中桶索引动态重分的方法,通过桶索引自动分片,实现了桶索引分片数量的自动扩展,以满足实际业务的动态需求。

其中,分布式系统,是由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统。

对象存储,是面向海量非结构化数据的通用数据存储平台,提供稳定、安全、高效、低成本的云端存储服务。

桶及桶索引,桶是对象存储中对用户可用的容器,桶索引是桶及桶内对象的map映射关系。

网关服务,是指对象存储系统提供的基于当前流行的RESTful协议的网关,兼容Amazon S3和openstack swift两种接口,它把客户端符合S3或Swift协议的http请求解析、转换、处理后发送给数据存储层,并将数据存储层返回的数据发送给客户端,以供相应的对象存储的客户端开发使用。

Rados层,是ceph系统的数据存储层,完成存储系统的核心功能。

Rados对象,是rados层存储数据的基本单位,区别于对象存储的对象。

如图1为本发明实施例1一种分布式对象存储系统中桶索引动态重分的方法流程图。

在步骤S101中,确定原始桶索引对象n重新分片的最大分片数x,并计算不大于最大分片数x的最大质数m,最大质数m作为当前索引对象的数量。如图3为本发明实施例1原始桶索引对象重新分片至当前索引对象的示意图。

在步骤S102中,索引散列存入rados数据层某个桶索引对象,并反馈写入成功的指令。

在步骤S103中,检测索引数是否达到桶索引对象阈值,若达到阈值,则将桶加入分片任务队列;如果未超过阈值,则不需要进行充分,进行正常的I/O操作。

对象存储网关会自动检测需要进行分片的桶,当有新的对象被添加进桶时,会检测该桶中的对象数量是否超出其能容纳的对象数量,若超出,则将针对该桶的分片任务添加进分片队列,等待后台分片进程对其进行分片。

在步骤S104中,按照预先设置的当前索引对象的数量m,执行桶重分操作;向数据存储层下发创建当前索引对象数量m的命令和记录删除索引任务的数据存储层对象的指令;将桶重分状态设置为processing。如图2为本发明实施例1一种分布式对象存储系统中桶索引动态重分的方法线程图。

后台分片线程在RGW(RGW为Rados Gateway的缩写,ceph通过RGW为互联网云服务提供商提供对象存储服务)服务启动的时候根据系统的设置进行开启,然后根据系统设置的时间定期扫描分片任务队列,若有待分片的桶,则针对该桶进行分片处理。任务处理时不阻塞业务端请求。

述在执行桶重分操作时,如果业务端执行读索引操作时,首先从当前索引对象m上读取,如果读取不到,再从原始桶索引对象n上读取。

在执行桶重分操作时,如果业务端执行写索引操作时,写索引直接哈希写入当前索引对象m。

在执行桶重分操作时,如果业务端执行删除索引操作时,将索引删除任务写入记录删除索引任务的数据存储层对象omap中。

在步骤S105中,定时循环,当分片任务队列中有待执行任务时,遍历所有任务并执行,在执行完毕后休眠固定时间间隔,然后进入下一轮扫描。

在步骤S106中,遍历原始桶索引对象n中保存的所有索引条目,并将所有索引条目保存至当前索引对象m的存储位置。

在步骤S107中,所有索引全部重新散列存储完成后,将桶的重分状态设置为done,并删除原始桶索引对象n,并将桶重分片任务从任务队列中删除。通过桶索引自动分片开关可直接打开或关闭桶索引自动分片功能。此外还可设置其它一些参数用于控制分片进程。

实施例2

基于本发明实施例1提出的一种分布式对象存储系统中桶索引动态重分的方法,本发明实施例2还提出了一种分布式对象存储系统中桶索引动态重分的系统,如图4给出了本发明实施例2一种分布式对象存储系统中桶索引动态重分的系统示意图。该系统包括检测模块、重分模块和保存模块;

检测模块用于检测索引数是否达到桶索引对象阈值,若达到阈值,则将所述桶加入分片任务队列;

重分模块用于按照预先设置的当前索引对象数量,执行桶重分操作;

保存模块用于遍历原始桶索引对象中保存的所有索引条目,并将所有索引条目保存至当前索引对象的存储位置。

系统包括预选设置模块和删除模块;

预先设置模块用于确定原始桶索引对象重新分片的最大分片数,并计算不大于最大分片数的最大质数,所述最大质数作为当前索引对象的数量;

删除模块用于将桶的重分状态设置为done,并删除原始桶索引对象,并将桶重分片任务从任务队列中删除。

本发明本发明运行于Linux平台,通过桶索引非阻塞动态重分的技术方案增加了系统的可靠性和可伸缩性,实现了桶索引分片的自动化和透明化。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

相关技术
  • 一种分布式对象存储系统中桶索引动态重分的方法和系统
  • 一种基于分布式对象存储系统安全的信息分散方法及系统
技术分类

06120113066872