CN115438016A - 分布式对象存储中动态分片方法、***、介质及设备 - Google Patents
分布式对象存储中动态分片方法、***、介质及设备 Download PDFInfo
- Publication number
- CN115438016A CN115438016A CN202211275567.0A CN202211275567A CN115438016A CN 115438016 A CN115438016 A CN 115438016A CN 202211275567 A CN202211275567 A CN 202211275567A CN 115438016 A CN115438016 A CN 115438016A
- Authority
- CN
- China
- Prior art keywords
- bucket
- client
- distributed object
- file
- available
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式对象存储中动态分片方法、***、介质及设备,涉及分布式存储的技术领域,包括以下步骤:设置每个bucket的可用存储容量均为预设值,仅在当前bucket的已用存储容量达到预设值时开启下一个可用bucket;基于接收到的bucket应用请求获取用户对应的当前可用bucket;基于RGW文件网关将所述当前可用bucket地址发送至客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。本发明的分布式对象存储中动态分片方法、***、介质及设备解决了由于bucket文件过多引发的问题,使得对象存储服务更加稳定。
Description
技术领域
本发明涉及分布式存储技术领域,特别是涉及一种分布式对象存储中动态分片方法、***、介质及设备。
背景技术
Ceph是一个统一的、分布式的存储***,具有优秀的性能、可靠性和可扩展性。Ceph支持对象存储(RADOSGW)、块存储(RBD)和文件存储(CephFS)。对象存储网关(RADOSGateway,RGW)是开源的分布式对象存储服务,建立在ceph rados的基础上,提供通用的s3协议对象存储服务,可以支持PB级的存储服务。RGW提供用户指定关键字(key)来存取文件、拉列表等功能,通过桶/存储空间(bucket)来区分不同的用户。现有技术中,在bucket下的文件越来越多的情况下,无论是存取文件还是拉列表,其性能均显著地下降。分析可知,获取bucket下的某个文件信息时性能消耗较大。
如图1所示,rgw是文件网关,可扩展。osd代表一块磁盘,组1、组2、组n分别代表磁盘的主副副本组。bucket的操作get/put/list等请求先经过rgw,由rgw路由到osd分组,其中步骤1可以随机选择一个rgw,步骤2由所选择的rgw根据bucket的分片(sharding)数量以及key来算出具体在哪个shard,shard再根据crush算法算出osd组来定位具体的osd。
如图2所示,一个bucket可以对应多个shard,创建时指定数量,key到shard的算法通过类似hash(key)%shard_count来定位。由该算法可知,分片数量shard_count一旦确定,无法轻易改变,否则会导致所有的key的位置发生改变。因此,该路由规则并不利于扩展shard数量。现有技术中存在有一致性hash的解决方案,但是在量大的基础上还是会迁移很多key,也会影响线上服务。另外,若通过设置很大的shard数量来解决上述问题,则存在资源浪费的问题。一个shard在ceph里面对应的是一个rados对象,在双机房同步时需要轮循的shard任务也非常大,并且在一些请求下会出现性能下降,比如拉列表时需要聚合所有shard才能找出正确的列表顺序。
另外,rgw双活同步是禁止重新分片的。也就是说,在双机房同步时,一个bucketshard数量确定之后就不能改变,否则在同步时出现问题。为了确保数据安全且必须采用双机房同步策略,而该策略下随着bucket下的文件越来越多,若不能对bucket重新分片,则会导致数据量过大时性能出现问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种分布式对象存储中动态分片方法、***、介质及设备,解决了由于bucket文件过多引发的问题,使得对象存储服务更加稳定。
为实现上述目的及其他相关目的,本发明提供一种分布式对象存储中动态分片方法,包括以下步骤:令分布式对象存储***中每个bucket的可用存储容量均为预设值,仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket;基于客户端发送的bucket应用请求获取当前可用bucket;基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
本发明提供一种分布式对象存储中动态分片***,包括:
设置模块,用于令分布式对象存储***中每个bucket的可用存储容量均为预设值,仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket;
获取模块,用于基于客户端发送的bucket应用请求获取当前可用bucket;
处理模块,用于基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述分布式对象存储中动态分片方法。
本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式对象存储中动态分片方法。
如上所述,本发明的分布式对象存储中动态分片方法、***、介质及设备,具有以下有益效果:
(1)当bucket达到一定的存储容量之后会自动切换到下一个bucket,所有新的文件都将存放在下一个bucket中,使得旧的bucket不再支撑新的文件上传操作,从而通过增加bucket来达到动态分片的效果,且避免了数据迁移;
(2)解决了由于bucket文件过多引发的问题,使得对象存储服务更加稳定;
(3)保证每个bucket能够充分利用自身的存储容量,避免了现有技术中基于固定数量的分片存储带来的存储容量不足或存储容量过剩的问题;且在双机房的应用场景下也能实现有效同步。
附图说明
图1显示为现有技术中分布式对象存储于一实施例中的动态存储流程示意图;
图2显示为现有技术中bucket于一实施例中的工作状态示意图;
图3显示为本发明的分布式对象存储中动态分片方法于一实施例中的流程图;
图4显示为本发明的分布式对象存储中动态分片***于一实施例中的结构示意图;
图5显示为本发明的计算机设备于一实施例中的结构示意图。
元件标号说明
41 设置模块
42 获取模块
43 处理模块
51 处理器/处理单元
52 存储器
521 随机存取存储器
522 高速缓存存储器
523 存储***
524 程序/实用工具
5241 程序模块
53 总线
54 输入/输出接口
55 网络适配器
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的分布式对象存储中动态分片方法、***、介质及设备中,当bucket达到一定的存储容量之后会自动切换到下一个bucket,所有新的文件都将存放在下一个bucket中,从而解决了由于bucket文件过多引发的问题,使得对象存储服务更加稳定,极具实用性。
互联网协议允许IP分片。故当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输。其中,分片(sharding)是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。在本发明中动态分片服务器即用于分布式对象存储中动态分片。
如图3所示,于一实施例中,本发明的分布式对象存储中动态分片方法包括以下步骤:
步骤S1、令分布式对象存储***中每个bucket的可用存储容量均为预设值,仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket。
具体地,桶(bucket)是对MOS中的一个存储空间,是存储对象的容器。对象存储是一种扁平化的存储方式,桶中存储的对象都在同一个逻辑层级,而文件***中则采用的是具有很多层级的文件结构。在MOS中,桶的命名是全局唯一的。每个桶在创建时都会生成默认的桶ACL(Access Control List),桶ACL列表的每项包含了被授权用户的权限,如读权限(READ)、写权限(WRITE)、完全控制权限(FULL_CONTROL)等。用户只有对桶具有相应的权限,才能够对桶进行操作,如创建、删除、显示、设置桶ACL等。一个用户最多可创建100个桶。
在分布式对象存储***中,针对每个bucket,原有的分片数量保持不变。但针对每个bucket设置有可用存储容量的预设值,即所述bucket的可用存储容量不超过所述预设值。当所述bucket的已用存储容量达到所述预设值时,会自动开启下一个bucket,从而保证每个bucket能够充分利用自身的可用存储容量,避免了现有技术中基于固定数量的分片存储带来的存储容量不足或存储容量过剩的问题。
步骤S2、基于客户端发送的bucket应用请求获取当前可用bucket。
具体地,用户通过客户端发送bucket应用请求至动态分片服务器。所述bucket应用请求包含用户关联的bucket信息。所述动态分片服务器根据用户关联的bucket信息获取用户对应的当前可用bucket。例如,用户关联的bucket信息为bucket test,则可知用户的bucket包含test_1,test_2…test_n,分别表示用户的第一个、第二个…第n个bucket。其中,test_n即为用户对应的当前可用bucket。
于本发明一实施例中,基于客户端发送来的bucket应用请求获取当前可用bucket包括以下步骤:
11)检查每个bucket的已用存储容量。
具体地,针对每个bucket,设定其的文件可用存储容量,如100万bit。当bucket的已用存储容量小于所述预设值时,表明该bucket中还能进行文件存储;当bucket的已用存储容量等于所述预设值时,表明该bucket中不能继续进行文件存储,需要开启下一个bucket。
12)选取已用存储容量小于所述预设值的bucket为当前可用bucket。
具体地,由于本发明中设置每个bucket的可用存储容量均为预设值,且在当前可用bucket已用存储容量达到预设值时开启下一个bucket。故所有bucket中除了当前可用bucket的可用存储容量没有达到预设值,其他bucket的可用存储容量均为预设值。因此,选取已用存储容量小于所述预设值的bucket为当前可用bucket。
在实际使用中,针对每次文件请求,若均实时检测一次当前可用bucket,会比较耗时。优选地,本发明通过设置定时器的方式来定时更新当前可用bucket,从而便于快速准确的定位当前当前可用bucket。
于本发明一实施例中,基于客户端发送的bucket应用请求获取当前可用bucket还包括以下步骤:
14)预先设置一定时器,基于所述定时器设置的预设时间间隔发起当前可用bucket查询请求以获取当前可用bucket;当接收到客户端发送的bucket应用请求时,返回所述当前可用bucket。
具体地,定时器是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。优选地,本发明的定时器采用软件定时器。所述软件定时器是由操作***提供的一类***接口,它构建在硬件定时器基础之上,使***能够提供不受硬件定时器资源限制的定时器服务,它实现的功能与硬件定时器也是类似的。本发明可根据***开销来选择合适的定时器精度。
优选地,所述定时器可每间隔半小时、1小时或2小时发起一次http请求,用于进行当前可用bucket查询。定时器的间隔太大,会导致查询到的当前可用bucket和实际当前可用bucket不符,无法满足实际应用的需要。定时器的间隔太小,会增加***负荷。因此,所述预设时间间隔可根据实际应用场景设置,不局限于上述举例。
通过上述定时器设置,无需每次对所有bucket进行文件数据检测,只需定时更新记录当前可用bucket即可。待下次接收到文件操作请求时,可直接根据记录给出当前可用bucket,快速准确,且降低了***功耗。
15)基于所述当前可用bucket查询请求判断所述当前可用bucket的已用存储容量是否达到所述预设值;若是,开启下一bucket,并将当前可用bucket记录为下一bucket;若否,当前可用bucket保持不变。
步骤S3、基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
具体地,所述动态分片服务器将所述当前可用bucket地址发送所述客户端,以使所述客户端基于所述当前可用bucket地址进行上传(put)/下载(get)/拉取列表(list)等文件操作。其中,所述客户端发送文件操作请求至RGW文件网关,所述文件网关RGW将所述文件操作请求路由到osd分组。优选地,所述RGW文件网关包括至少一个文件子网关(rgw1、rgw2…rgwn),可随机选择一个文件子网关rgwi进行所述文件操作请求的路由。所选择的文件子网关rgwi根据当前可用bucket的分片数量以及key来算出具体在哪个shard,shard再根据crush算法算出osd组来定位具体的osd,从而实现文件操作。
优选地,所述RGW文件网关可包括多个并行的RGW文件子网关,以并行处理客户端的文件操作请求。
优选地,所述当前可用bucket地址采用URL地址。更为优选地,所述动态分片服务器对所述当前可用bucket地址签名后再发送至所述客户端,以保证信息的准确性,同时便于后续的溯源。
于本发明一实施例中,当进行上传文件操作时,还包括接收所述客户端返回的关键词,并基于所述关键词查找在前bucket中是否有所上传的文件;若有,则在所述在前bucket中删除所述文件。例如,test_2为当前可用bucket,当在test_2上传文件doc之后,在在前bucket test0和test_1中查找是否已经存储文件doc;若是,则在对应的bucket中删除所述文件doc。
于本发明一实施例中,本发明的分布式对象存储中动态分片方法还包括当客户端需要从bucket中下载文件时,所述动态分片服务器从当前可用bucket开始倒序进行查询。当查询到所需文件对应的key时,返回下载文件的地址至客户端。
于本发明一实施例中,本发明的分布式对象存储中动态分片方法还包括当所述客户端接收到从bucket中拉取列表的请求时,查询当前的bucket总数量,基于所述bucket总数量拉取bucket的列表。具体地,当客户端需要从bucket中拉取列表时,所述动态分片服务器首先查询当前的bucket总数量,然后基于所述bucket总数量拉取bucket的列表。为了进一步降低bucket查询功耗,有限地,基于SSD来存储bucket的索引数据,以解决随机查找带来的瓶颈问题。
为了提升本发明的动态分配服务器的性能,于本发明一实施例中,所述动态分片服务器包括多个平行设置的动态分片子服务器,以针对客户端的文件操作请求进行并行处理。具体地,当接收到多个bucket应用请求时,采用并行方式将当前可用bucket地址发送至客户端。优选地,所述动态分片子服务器的配置信息和状态信息可采用mysql数据库进行存储。所述mysql数据库是一种关系型数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在本发明中所述mysql数据库设置了主从同步,有效避免了信息丢失的问题。
需要说明的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
如图4所示,于一实施例中,本发明的分布式对象存储中动态分片***包括:
设置模块41,用于令分布式对象存储***中每个bucket的可用存储容量均为预设值,仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket。
具体地,桶(bucket)是对MOS中的一个存储空间,是存储对象的容器。对象存储是一种扁平化的存储方式,桶中存储的对象都在同一个逻辑层级,而文件***中则采用的是具有很多层级的文件结构。在MOS中,桶的命名是全局唯一的。每个桶在创建时都会生成默认的桶ACL(Access Control List),桶ACL列表的每项包含了被授权用户的权限,如读权限(READ)、写权限(WRITE)、完全控制权限(FULL_CONTROL)等。用户只有对桶具有相应的权限,才能够对桶进行操作,如创建、删除、显示、设置桶ACL等。一个用户最多可创建100个桶。
在分布式对象存储***中,针对每个bucket,原有的分片数量保持不变。但针对每个bucket设置有可用存储容量的预设值,即所述bucket的可用存储容量不超过所述预设值。当所述bucket的已用存储容量达到所述预设值时,会自动开启下一个bucket,从而保证每个bucket能够充分利用自身的可用存储容量,避免了现有技术中基于固定数量的分片存储带来的存储容量不足或存储容量过剩的问题。
获取模块42,与设置模块41相连,用于基于客户端发送的bucket应用请求获取当前可用bucket。
具体地,用户通过客户端发送bucket应用请求至动态分片服务器。所述bucket应用请求包含用户关联的bucket信息。所述动态分片服务器根据用户关联的bucket信息获取用户对应的当前可用bucket。例如,用户关联的bucket信息为bucket test,则可知用户的bucket包含test_1,test_2…test_n,分别表示用户的第一个、第二个…第n个bucket。其中,test_n即为用户对应的当前可用bucket。
于本发明一实施例中,基于客户端发送来的bucket应用请求获取当前可用bucket包括以下步骤:
11)检查每个bucket的已用存储容量。
具体地,针对每个bucket,设定其的文件可用存储容量,如100万bit。当bucket的已用存储容量小于所述预设值时,表明该bucket中还能进行文件存储;当bucket的已用存储容量等于所述预设值时,表明该bucket中不能继续进行文件存储,需要开启下一个bucket。
12)选取已用存储容量小于所述预设值的bucket为当前可用bucket。
具体地,由于本发明中设置每个bucket的可用存储容量均为预设值,且在当前可用bucket已用存储容量达到预设值时开启下一个bucket。故所有bucket中除了当前可用bucket的可用存储容量没有达到预设值,其他bucket的可用存储容量均为预设值。因此,选取已用存储容量小于所述预设值的bucket为当前可用bucket。
在实际使用中,针对每次文件请求,若均实时检测一次当前可用bucket,会比较耗时。优选地,本发明通过设置定时器的方式来定时更新当前可用bucket,从而便于快速准确的定位当前当前可用bucket。
于本发明一实施例中,基于客户端发送的bucket应用请求获取当前可用bucket还包括以下步骤:
14)预先设置一定时器,基于所述定时器设置的预设时间间隔发起当前可用bucket查询请求以获取当前可用bucket;当接收到客户端发送的bucket应用请求时,返回所述当前可用bucket。
具体地,定时器是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。优选地,本发明的定时器采用软件定时器。所述软件定时器是由操作***提供的一类***接口,它构建在硬件定时器基础之上,使***能够提供不受硬件定时器资源限制的定时器服务,它实现的功能与硬件定时器也是类似的。本发明可根据***开销来选择合适的定时器精度。
优选地,所述定时器可每间隔半小时、1小时或2小时发起一次http请求,用于进行当前可用bucket查询。定时器的间隔太大,会导致查询到的当前可用bucket和实际当前可用bucket不符,无法满足实际应用的需要。定时器的间隔太小,会增加***负荷。因此,所述预设时间间隔可根据实际应用场景设置,不局限于上述举例。
通过上述定时器设置,无需每次对所有bucket进行文件数据检测,只需定时更新记录当前可用bucket即可。待下次接收到文件操作请求时,可直接根据记录给出当前可用bucket,快速准确,且降低了***功耗。
15)基于所述当前可用bucket查询请求判断所述当前可用bucket的已用存储容量是否达到所述预设值;若是,开启下一bucket,并将当前可用bucket记录为下一bucket;若否,当前可用bucket保持不变。
处理模块43,与获取模块42相连,用于基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
具体地,所述动态分片服务器将所述当前可用bucket地址发送所述客户端,以使所述客户端基于所述当前可用bucket地址进行上传(put)/下载(get)/拉取列表(list)等文件操作。其中,所述客户端发送文件操作请求至RGW文件网关,所述文件网关RGW将所述文件操作请求路由到osd分组。优选地,所述RGW文件网关包括至少一个文件子网关(rgw1、rgw2…rgwn),可随机选择一个文件子网关rgwi进行所述文件操作请求的路由。所选择的文件子网关rgwi根据当前可用bucket的分片数量以及key来算出具体在哪个shard,shard再根据crush算法算出osd组来定位具体的osd,从而实现文件操作。
优选地,所述RGW文件网关可包括多个并行的RGW文件子网关,以并行处理客户端的文件操作请求。
优选地,所述当前可用bucket地址采用URL地址。更为优选地,所述动态分片服务器对所述当前可用bucket地址签名后再发送至所述客户端,以保证信息的准确性,同时便于后续的溯源。
于本发明一实施例中,当进行上传文件操作时,本发明的分布式对象存储中动态分片***还包括查找模块,用于接收所述客户端返回的关键词,并基于所述关键词查找在前bucket中是否有所上传的文件;若有,则在所述在前bucket中删除所述文件。例如,test_2为当前可用bucket,当在test_2上传文件doc之后,在在前bucket test0和test_1中查找是否已经存储文件doc;若是,则在对应的bucket中删除所述文件doc。
于本发明一实施例中,本发明的分布式对象存储中动态分片***还包括下载模块,用于当客户端需要从bucket中下载文件时,所述动态分片服务器从当前可用bucket开始倒序进行查询。当查询到所需文件对应的key时,返回下载文件的地址至客户端。
于本发明一实施例中,本发明的分布式对象存储中动态分片***还包括列表模块,用于当所述客户端接收到从bucket中拉取列表的请求时,查询当前的bucket总数量,基于所述bucket总数量拉取bucket的列表。具体地,当客户端需要从bucket中拉取列表时,所述动态分片服务器首先查询当前的bucket总数量,然后基于所述bucket总数量拉取bucket的列表。为了进一步降低bucket查询功耗,有限地,基于SSD来存储bucket的索引数据,以解决随机查找带来的瓶颈问题。
为了提升本发明的动态分配服务器的性能,于本发明一实施例中,所述动态分片服务器包括多个平行设置的动态分片子服务器,以针对客户端的文件操作请求进行并行处理。具体地,当接收到多个bucket应用请求时,采用并行方式将当前可用bucket地址发送至客户端。优选地,所述动态分片子服务器的配置信息和状态信息可采用mysql数据库进行存储。所述mysql数据库是一种关系型数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在本发明中所述mysql数据库设置了主从同步,有效避免了信息丢失的问题。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Signal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上***(system-on-a-chip,简称SOC)的形式实现。
本发明的计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的分布式对象存储中动态分片方法的步骤。优选地,所述存储介质包括:ROM、RAM、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
可以采用一个或多个存储介质的任意组合。存储介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、RAM、ROM、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
于一实施例中,本发明的计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述分布式对象存储中动态分片方法的步骤。
所述存储器包括:ROM、RAM、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
所述处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图5所示,本发明的计算机设备以通用计算设备的形式表现。计算机设备的组件可以包括但不限于:一个或者多个处理器或者处理单元51,存储器52,连接不同***组件(包括存储器52和处理单元51)的总线53。
总线53表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机设备典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器52可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)521和/或高速缓存存储器522。计算机设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***523可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线53相连。存储器52可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块5241的程序/实用工具524,可以存储在例如存储器52中,这样的程序模块5241包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块5241通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该计算机设备交互的设备通信,和/或与使得该计算机设备能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口54进行。并且,计算机设备还可以通过网络适配器55与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图5所示,网络适配器55通过总线53与计算机设备的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
综上所述,本发明的分布式对象存储中动态分片方法、***、介质及设备当bucket达到一定的存储容量之后会自动切换到下一个bucket,所有新的文件都将存放在下一个bucket中,使得旧的bucket不再支撑新的文件上传操作,从而通过增加bucket来达到动态分片的效果,且避免了数据迁移;解决了由于bucket文件过多引发的问题,使得对象存储服务更加稳定;保证每个bucket能够充分利用自身的存储容量,避免了现有技术中基于固定数量的分片存储带来的存储容量不足或存储容量过剩的问题;且在双机房的应用场景下也能实现有效同步。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种分布式对象存储中动态分片方法,其特征在于,包括以下步骤:
令分布式对象存储***中每个bucket的可用存储容量均为预设值,且仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket;
基于客户端发送的bucket应用请求获取当前可用bucket;
基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
2.根据权利要求1所述的分布式对象存储中动态分片方法,其特征在于,所述基于客户端发送的bucket应用请求获取当前可用bucket包括以下步骤:
检查每个bucket的已用存储容量;
选取已用存储容量小于所述预设值的bucket为当前可用bucket。
3.根据权利要求2所述的分布式对象存储中动态分片方法,其特征在于,所述基于客户端发送的bucket应用请求获取当前可用bucket还包括以下步骤:
预先设置一定时器,基于所述定时器设置的预设时间间隔发起当前可用bucket查询请求以获取当前可用bucket;
当接收到客户端发送的bucket应用请求时,返回所述当前可用bucket。
4.根据权利要求3所述的分布式对象存储中动态分片方法,其特征在于,基于客户端发送来的bucket应用请求获取当前可用bucket还包括以下步骤:
基于所述当前可用bucket查询请求判断所述当前可用bucket的已用存储容量是否达到所述预设值;若是,开启下一bucket,并将当前可用bucket记录为下一bucket;若否,当前可用bucket保持不变。
5.根据权利要求1所述的分布式对象存储中动态分片方法,其特征在于,所述方法还包括:
当进行上传文件操作时,接收所述客户端返回的关键词,并基于所述关键词查找在前bucket中是否有所上传的文件;若有,则在所述在前bucket中删除所述文件。
6.根据权利要求1所述的分布式对象存储中动态分片方法,其特征在于,所述方法还包括:当接收到多个bucket应用请求时,采用并行方式将当前可用bucket地址发送至客户端。
7.根据权利要求1所述的分布式对象存储中动态分片方法,其特征在于,所述方法还包括:当所述客户端接收到从bucket中拉取列表的请求时,查询当前的bucket总数量,基于所述bucket总数量拉取bucket的列表。
8.一种分布式对象存储中动态分片***,其特征在于,包括:
设置模块,用于令分布式对象存储***中每个bucket的可用存储容量均为预设值,仅在当前bucket已用存储容量达到预设值时开启下一个可用bucket;
获取模块,用于基于客户端发送的bucket应用请求获取当前可用bucket;
处理模块,用于基于RGW文件网关将当前可用bucket地址发送至所述客户端,以使所述客户端基于所述当前可用bucket地址完成所述bucket应用请求对应的文件操作。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一所述分布式对象存储中动态分片方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一所述分布式对象存储中动态分片方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275567.0A CN115438016A (zh) | 2022-10-18 | 2022-10-18 | 分布式对象存储中动态分片方法、***、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275567.0A CN115438016A (zh) | 2022-10-18 | 2022-10-18 | 分布式对象存储中动态分片方法、***、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115438016A true CN115438016A (zh) | 2022-12-06 |
Family
ID=84250303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211275567.0A Pending CN115438016A (zh) | 2022-10-18 | 2022-10-18 | 分布式对象存储中动态分片方法、***、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115438016A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100878A1 (en) * | 2020-09-25 | 2022-03-31 | EMC IP Holding Company LLC | Facilitating an object protocol based access of data within a multiprotocol environment |
CN116150807A (zh) * | 2023-04-14 | 2023-05-23 | 深圳高灯计算机科技有限公司 | 对象存储方法、***、计算机设备和存储介质 |
-
2022
- 2022-10-18 CN CN202211275567.0A patent/CN115438016A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100878A1 (en) * | 2020-09-25 | 2022-03-31 | EMC IP Holding Company LLC | Facilitating an object protocol based access of data within a multiprotocol environment |
US11928228B2 (en) * | 2020-09-25 | 2024-03-12 | EMC IP Holding Company LLC | Facilitating an object protocol based access of data within a multiprotocol environment |
CN116150807A (zh) * | 2023-04-14 | 2023-05-23 | 深圳高灯计算机科技有限公司 | 对象存储方法、***、计算机设备和存储介质 |
CN116150807B (zh) * | 2023-04-14 | 2023-07-04 | 深圳高灯计算机科技有限公司 | 对象存储方法、***、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795817B2 (en) | Cache coherence for file system interfaces | |
US11144573B2 (en) | Synchronization protocol for multi-premises hosting of digital content items | |
JP6419319B2 (ja) | 共有フォルダ及び共有ファイルの同期 | |
US9052824B2 (en) | Content addressable stores based on sibling groups | |
US8793227B2 (en) | Storage system for eliminating duplicated data | |
CN111247518B (zh) | 用于数据库分片的方法和*** | |
CN110401724B (zh) | 文件管理方法、文件传输协议服务器及存储介质 | |
CN115438016A (zh) | 分布式对象存储中动态分片方法、***、介质及设备 | |
US10623470B2 (en) | Optimizing internet data transfers using an intelligent router agent | |
JP2009295127A (ja) | アクセス方法、アクセス装置及び分散データ管理システム | |
US11082494B2 (en) | Cross storage protocol access response for object data stores | |
US20140059094A1 (en) | Making use of a file path to determine file locality for applications | |
US20210281637A1 (en) | Management for a load balancer cluster | |
US20140214775A1 (en) | Scalable data deduplication | |
US10177795B1 (en) | Cache index mapping | |
CN116848517A (zh) | 使用基于数据指纹的数据地址的高速缓存编索引 | |
US20190188186A1 (en) | Consistent hashing configurations supporting multi-site replication | |
US10148662B1 (en) | De-duplication of access control lists | |
US10831794B2 (en) | Dynamic alternate keys for use in file systems utilizing a keyed index | |
WO2023029485A1 (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
WO2012171363A1 (zh) | 分布式缓存***中的数据操作方法和装置 | |
CN115129789A (zh) | 一种分布式对象存储***的桶索引存储方法、装置及介质 | |
US11233739B2 (en) | Load balancing system and method | |
US11064020B2 (en) | Connection load distribution in distributed object storage systems | |
US11249952B1 (en) | Distributed storage of data identifiers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |