CN115934363A - 分布式对象存储系统清空桶的方法、系统及装置 - Google Patents

分布式对象存储系统清空桶的方法、系统及装置 Download PDF

Info

Publication number
CN115934363A
CN115934363A CN202310208748.XA CN202310208748A CN115934363A CN 115934363 A CN115934363 A CN 115934363A CN 202310208748 A CN202310208748 A CN 202310208748A CN 115934363 A CN115934363 A CN 115934363A
Authority
CN
China
Prior art keywords
emptying
bucket
barrel
objects
fragments
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
Application number
CN202310208748.XA
Other languages
English (en)
Inventor
任磊
王铂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310208748.XA priority Critical patent/CN115934363A/zh
Publication of CN115934363A publication Critical patent/CN115934363A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种分布式对象存储系统清空桶的方法、系统及装置,应用于分布式存储技术领域。该方法包括:接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;根据清空桶请求为每个清空桶工作线程分配清空任务;每个清空桶工作线程根据分配的清空任务中记载的桶分片,并行读取清空任务中记载的桶分片中的全部对象并清空。本申请将一个清空桶任务分配给多个清空桶工作线程并行完成,提高清空速度,同时,清空桶工作线程以桶分片为基准读取桶分片中的全部对象,而不是以对象为基准进行查找,从而确保了能够一次性读取到桶分片中的全部对象进行清空,提高了清空效率。

Description

分布式对象存储系统清空桶的方法、系统及装置
技术领域
本申请涉及分布式存储技术领域,特别涉及一种分布式对象存储系统清空桶的方法、系统、装置及计算机可读存储介质。
背景技术
随着信息技术的发展,全球数据不断增长,人们对于海量数据的管理也越来越重视。桶是一种对象存储逻辑空间,桶分片是当某个对象上传到桶里面时,都会在桶的某个桶分片上生成一个索引信息,一个桶有若干桶分片,例如默认一个桶可以包括1024个桶分片。
一个桶内的对象数量上亿是很常见的,而在存储过程中,不可避免地产生大量过期或废弃的数据,当前清空桶内的对象是个耗时的过程。目前的对象存储提供清空桶操作为客户端先列举到对象,之后对列举到的对象进行删除,直至删除完成,耗时巨大,且没有调速手段。
现有技术中,当前的对象存储客户端(s3cmd客户端)提供了清空桶内普通对象的命令,该命令可以实现桶内普通对象的清空,然而存在以下几个缺陷:
1.以对象为目标从桶中读取并获取,因此,在对象分为多种类型的情况下,每种类型的对象需要利用不同的接口进行获取,所以现有技术中只能够清空桶内普通对象,不能删除多版本对象以及对象未上传完成的桶分片中的对象;
2.删除速度不可控,并且删除速度慢,大量对象的桶清空耗时长。
因此,我们需要提供一种便捷的清空桶方式,可以快速清空桶内对象。
发明内容
有鉴于此,本申请的目的在于提供一种分布式对象存储系统清空桶的方法、系统、装置及计算机可读存储介质,提高清空桶的效率。其具体方案如下:
一种分布式对象存储系统清空桶的方法,包括:
接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;
根据所述清空桶请求为每个清空桶工作线程分配清空任务;
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空。
可选的,所述接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程的过程,包括:
接收所述清空桶请求后,根据所述线程启动规则中记载的线程启动数量,启动相同数量的多个清空桶工作线程。
可选的,所述接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程的过程,包括:
接收所述清空桶请求后,根据所述线程启动规则中记载的桶分片数量、线程数以及对象存储性能三者之间的对应关系,启动相应数量的多个清空桶工作线程。
可选的,所述对象存储性能包括内存剩余量和/或CPU负载。
可选的,还包括:
基于用户输入的调整指令对桶分片数量、线程数以及对象存储性能三者之间的对应关系中的线程数进行调整。
可选的,所述根据所述清空桶请求为每个清空桶工作线程分配清空任务,包括:
根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务。
可选的,所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,采用均分的方式为每个清空桶工作线程分配相应的所述清空任务。
可选的,所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,基于每个清空任务中所需清空的桶分片数控的大小及每个所述清空桶工作线程的负载高低,为每个清空桶工作线程分配相应的所述清空任务。
可选的,所述基于每个清空任务中所需清空的桶分片数控的大小及每个所述清空桶工作线程的负载高低,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
将各所述清空任务中包括的所需清空的桶分片数量按照大小进行排序;
将每个所述清空桶工作线程的负载情况按照负载高低进行排序;
将所需情况的桶分片数量大的情况任务分配给负载低的清空桶工作线程,将所需情况的桶分片数量小的情况任务分配给负载高的清空桶工作线程。
可选的,每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空的过程,包括:
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举所述清空任务中记载的桶分片中的对象;
每个清空桶工作线程删除通过列举获取到桶分片中的对象;
每个清空桶工作线程删除一个桶分片中的全部对象后,继续列举下一个桶分片中的对象并删除,直至所述清空任务中记载的全部桶分片中列举过的对象全部被删除。
可选的,所述每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举所述清空任务中记载的桶分片中的对象,每个清空桶工作线程删除通过列举获取到桶分片中的对象的过程,包括:
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举一个桶分片中的对象数达到预设的列举阈值后,利用清空桶工作线程将已通过列举获取到的对象进行删除,删除后再次列举桶分片中剩余的对象直至桶分片中的全部对象被删除。
可选的,还包括:
基于接收到的阈值修改指令对所述列举阈值进行修改。
可选的,所述每个清空桶工作线程删除通过列举获取到桶分片中的对象的过程,包括:
每个清空桶工作线程删除通过列举获取到桶分片中的全部类型的对象。
可选的,所述全部类型的对象包括普通对象、多版本对象或未上传完成的分片对象。
可选的,在每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空时,还包括:
锁定所述清空任务中记载的桶分片,暂停所述清空任务中记载的桶分片的对象上传任务。
可选的,还包括:
在所述清空任务中的记载的桶分片中的全部对象被清空后,对所述桶分片解除锁定。
可选的,所述接收清空桶请求,包括:
接收客户端发送的清空桶请求。
本申请还公开了一种分布式对象存储系统清空桶的系统,包括:
线程启动模块,用于接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;
任务分配模块,用于根据所述清空桶请求为每个清空桶工作线程分配清空任务;
对象清空模块,用于每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空。
可选的,所述线程启动模块,具体用于接收所述清空桶请求后,根据所述线程启动规则中记载的线程启动数量,启动相同数量的多个清空桶工作线程。
可选的,所述线程启动模块,具体用于:
接收所述清空桶请求后,根据所述线程启动规则中记载的桶分片数量、线程数以及对象存储性能三者之间的对应关系,启动相应数量的多个清空桶工作线程。
可选的,所述任务分配模块,具体用于根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务。
可选的,所述对象清空模块,包括:
列举单元,用于每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举所述清空任务中记载的桶分片中的对象;
删除单元,用于每个清空桶工作线程删除通过列举获取到桶分片中的对象;
循环单元,用于每个清空桶工作线程删除一个桶分片中的全部对象后,继续列举下一个桶分片中的对象并删除,直至所述清空任务中记载的全部桶分片中列举过的对象全部被删除。
本申请还公开了一种分布式对象存储系统清空桶的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如前述的分布式对象存储系统清空桶的方法。
本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的分布式对象存储系统清空桶的方法。
本申请中,分布式对象存储系统清空桶的方法,包括:接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;根据清空桶请求为每个清空桶工作线程分配清空任务;每个清空桶工作线程根据分配的清空任务中记载的桶分片,并行读取清空任务中记载的桶分片中的全部对象并清空。
本申请将一个清空桶任务分配给多个清空桶工作线程并行完成,提高清空速度,同时,清空桶工作线程以桶分片为基准读取桶分片中的全部对象,而不是以对象为基准进行查找,从而确保了能够一次性读取到桶分片中的全部对象进行清空,提高了清空效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种分布式对象存储系统清空桶的方法流程示意图;
图2为本申请实施例公开的一种分布式对象存储系统清空桶的方法流程示意图;
图3为本申请实施例公开的一种分布式对象存储系统清空桶整体架构示意图;
图4为本申请实施例公开的一种分布式对象存储系统清空桶的方法流程示意图;
图5为本申请实施例公开的一种分布式对象存储系统清空桶的系统结构示意图;
图6为本申请实施例公开的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种分布式对象存储系统清空桶的方法,参见图1所示,该方法包括:
S11:接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程。
具体的,清空桶请求中记载了需要对那个桶以及对桶中的那些桶分片进行清空,也即清空桶请求中清楚了记载了本次清空任务的对象以及数量等信息,因此,本申请实施例支持对指定的桶分片进行对象的清空。
具体的,在接收到清空桶请求后,具体可以为接收到客户端发送的清空桶请求后,便可以根据预设的线程启动规则,启动多个清空桶工作线程,具体启动多少个清空桶工作线程可以根据预设的线程启动规则进行设定,例如,预设的线程启动规则可以为预先制定的每次启动固定数量的线程数,如,每次固定启动20个清空桶工作线程准备进行清空桶作业,也可以为根据清空桶请求中记载的所需的清空的桶分片的数量启动对应数量的线程的可调节规则,如,清空桶请求中记载了需要对100个桶分片进行清空操作,那么就可以启动20个清空桶工作线程,如果清空桶请求中记载了需要对600个桶分片进行清空操作,那么就可以启动60个清空桶工作线程,实现启动的线程数根据需要清空的桶分片的数量变化而变化,提高清空效率。
其中,清空桶工作线程数小于等于桶分片数,避免出现空闲线程造成系统错误,为此当预设的线程启动规则为预先制定的每次启动固定数量的线程数时,尽可能确保每次需要清空的桶分片数量大于等于固定的启动线程数,或在启动线程前,根据需要清空的桶分片数量输入新的指定数量,调节启动线程数,避免出现清空桶工作线程数大于桶分片数的情况。
S12:根据清空桶请求为每个清空桶工作线程分配清空任务。
具体的,清空桶请求中记录了总共需要清空的桶分片,也即是一个整体清空任务,为了将该整体任务分为多个子任务交由每个清空桶工作线程分别进行并行处理,提高处理速度,将总共需要清空的桶分片划分为多个清空任务,每个清空任务中记录了每个清空桶工作线程所需要清空的桶分片数和那些桶分片,可以理解的是,所有清空桶工作线程的清空任务的桶分片之和等于清空桶请求中记载的桶分片数。
S13:每个清空桶工作线程根据分配的清空任务中记载的桶分片,并行读取清空任务中记载的桶分片中的全部对象并清空。
具体的,每个清空桶工作线程利用清空任务中记载的桶分片的信息,以桶分片为基准读取桶分片中的全部对象,而不是再以对象为基准在桶中直接查找对象,所以能够读取出桶分片中全部的对象,在读取到桶分片中的全部对象后,便可以将对象全部删除实现清空,由于在读取时是以桶分片为单位查找读取,因此,能够读取到桶分片中的全部类型的对象,例如,普通对象、多版本对象以及未上传完成的分片对象,确保了本申请实施例的分布式对象存储系统清空桶的方法能够一次性更为全面的清空桶中的对象,提高了清空效率。
可见,本申请实施例将一个清空桶任务分配给多个清空桶工作线程并行完成,提高清空速度,同时,清空桶工作线程以桶分片为基准读取桶分片中的全部对象,而不是以对象为基准进行查找,从而确保了能够一次性读取到桶分片中的全部对象进行清空,提高了清空效率。
可以理解的是,本申请实施例可以应用在对象存储管理客户端(radosgw-admin客户端),同时分布式集群系统中多个节点的对象存储管理客户端可以同时操作同一个桶,对一个桶中的不同的多个桶分片进行清空,删除的性能也和分布式集群系统的集群性能有关。
本申请实施例公开了一种具体的分布式对象存储系统清空桶的方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图2所示的流程图和图3所示的整体架构示意图,具体的:
S21:接收清空桶请求后,根据线程启动规则中记载的桶分片数量、线程数以及对象存储性能三者之间的对应关系,启动相应数量的多个清空桶工作线程。
具体的,为了进一步优化每次启动的清空桶工作线程数量,可以预先建立桶分片数量、线程数以及对象存储性能三者之间的对应关系,使得每次启动的清空桶工作线程能够与清空桶请求的任务要求相匹配,得到最优解,例如,清空桶请求中需要清空60个桶分片,在不影响对象存储管理客户端的对象存储性能下,可以建立80个以内的清空桶工作线程,在此情况下,为了追求速度,可以实际启动60个清空桶工作线程,使一个清空桶工作线程对应一个桶分片,从而尽快完成清空任务,又如清空桶请求中需要清空600个桶分片,在不影响对象存储管理客户端的对象存储性能下,可以建立80个以内的清空桶工作线程,在此情况下,为了避免因线程建立过少影响处理速度,也为了避免因线程建立过多影响对象存储性能,所以可以实际启动100个清空桶工作线程,在稍微影响对象存储性能的情况下也保证了处理速度,实现了线程数与对象存储性能之间的均衡考虑,最大化了确保了清空效率。
其中,清空桶工作线程数小于等于桶分片数,对象存储性能用于反映对象存储管理客户端在存储对象时的速度和剩余计算资源量等,因此,创建过多线程就会需要更多的计算量,降低存储对象的速度,降低对象存储性能。具体的,对象存储性能可以各跟硬件资源量有直接关系,例如,内存剩余量,CPU负载等。
具体的,该方法还可以包括:
基于用户输入的调整指令对桶分片数量、线程数以及对象存储性能三者之间的对应关系中的线程数进行调整。
可以理解的是,在一种简单的线程启动规则中可以固定线程启动数量,每次不考虑桶分片数量和对象存储性能,直接启动与线程启动规则中所记载的相同数量的多个清空桶工作线程。
具体的,可以看到线程数会影响清空任务速度,为此,可以根据实际应用需要人为调整每次启动的清空桶工作线程数量,从而起到控制清空任务速度的效果,例如,减少启动的清空桶工作线程数量从而降低清空任务速度。
S22:根据清空桶请求中记载的所需清空的桶分片数量以及对象存储性能,为每个清空桶工作线程分配相应的清空任务。
具体的,为每个清空桶工作线程分配相应的清空任务时,可以简单的采取均分的方式进行分配实现均衡负载。当然,也可以采用其他的方式进行分配。例如:
根据清空桶请求中记载的所需清空的桶分片数量以及对象存储性能,基于每个清空任务中所需清空的桶分片数控的大小及每个清空桶工作线程的负载高低,为每个清空桶工作线程分配相应的所述清空任务。
具体的,可以将各清空任务中包括的所需清空的桶分片数量按照大小进行排序;将每个清空桶工作线程的负载情况按照负载高低进行排序;将所需情况的桶分片数量大的情况任务分配给负载低的清空桶工作线程,将所需情况的桶分片数量小的情况任务分配给负载高的清空桶工作线程。
可以理解的是,考虑到对象存储管理客户端的对象存储性能,将包括更多的桶分片的清空任务分配给负载更低的清空桶工作线程,将包括较少的桶分片的清空任务分配给负载更高的清空桶工作线程,从而实现负载均衡。
S23:每个清空桶工作线程根据分配的清空任务中记载的桶分片,列举清空任务中记载的桶分片中的对象;
S24:每个清空桶工作线程删除通过列举获取到桶分片中的对象。
具体的,每个清空桶工作线程在接收到被分配的清空任务后,便依次列举每个桶分片中的对象,从而在桶分片中查找所有的对象,被查找到的对象对于清空桶工作线程便是成功获取到的对象,未查找到的对象便是未能够获取到的对象,在查找到通分片中的对象后,便可以对获取到的对象进行删除实现对桶分片的清空。
具体的,在列举以及删除的过程中,清空桶工作线程可以依序先列举出一个桶分片中的全部对象后再删除该桶分片中的全部对象,再列举下一个桶分片进行清空直到全部清空任务中记载的桶分片全部被删除,但上述方法会消耗较长时间列举桶分片中的对象,由于列举是一个耗时较长的持续事件一旦中途需要暂停或终止清空桶任务,可能需要出现重新列举或者本次清空桶任务仅进行到列举过程,还未删除对象,导致本次清空桶请求完全没有清空对象,因此,可以每个清空桶工作线程根据分配的清空任务中记载的桶分片,列举一个桶分片中的对象数达到预设的列举阈值后,利用清空桶工作线程将已通过列举获取到的对象进行删除,删除后再次列举桶分片中剩余的对象直至桶分片中的全部对象被删除,例如,清空桶工作线程被分配到三个桶分片,清空桶工作线程可以先列举其中的第一桶分片中的对象,在列举到列举阈值1000个对象后,暂停列举,对第一桶分片中已经列举出的对象即清空桶工作线程获得的对象进行删除,删除这1000个对象后,继续对第一桶分片中剩余的对象进行列举然后删除,直至第一桶分片中的所有对象全部被删除,清空桶工作线程则继续对下一个桶分片即第二桶分片进行列举,在按照上述方法清空第二桶分片后,再对第三桶分片进行清空,此种方法,每次不需要列举桶分片中的全部对象,同时即使清空过程需要中断,也一般会至少已经清空部分桶分片中的部分对象,不会造成一次清空桶请求毫无进展的情况。
另外,在实际应用中还可以基于接收到的阈值修改指令对所述列举阈值进行修改,列举阈值的具体数值可以根据实际需要进行确定,本发明实施例对此不做特殊限定。
S25:每个清空桶工作线程删除一个桶分片中的全部对象后,继续列举下一个桶分片中的对象并删除,直至清空任务中记载的全部桶分片中列举过的对象全部被删除。
可以理解的是,每个清空桶工作线程依次对桶分片进行列举和删除对象,之后再对另一个桶分片进行处理,直至清空任务中记载的全部桶分片中列举过的对象全部被删除,结束清空任务。
进一步的,本申请实施例还公开了一种分布式对象存储系统清空桶的方法,参见图4所示,具体的:
S31:接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;
S32:根据清空桶请求为每个清空桶工作线程分配清空任务;
S33:每个清空桶工作线程根据分配的清空任务中记载的桶分片,并行读取清空任务中记载的桶分片中的全部对象并清空;
S34:每个清空桶工作线程锁定清空任务中记载的桶分片,暂停清空任务中记载的桶分片的对象上传任务。
具体的,为了避免清空桶工作线程在一边清理时,一边又有新的对象写入桶分片,造成列举错误,或者重复持续的进行清空操作,在进行列举和删除前,每个清空桶工作线程先将清空任务中所记载的全部桶分片全部锁定,暂停清空任务中所记载的全部桶分片的对象上传任务,避免有新的对象上传至桶分片中,从而确保清空任务能够有效有序的执行。
具体的,在对桶分片锁定后,并不影响清空桶工作线程对桶分片的清空过程,可以继续利用前述实施例的清空方式进行清空,每个清空桶工作线程在接收到被分配的清空任务后,便依次列举每个桶分片中的对象,从而在桶分片中查找所有的对象,被查找到的对象对于清空桶工作线程便是成功获取到的对象,未查找到的对象便是未能够获取到的对象,在查找到通分片中的对象后,便可以对获取到的对象进行删除实现对桶分片的清空。
具体的,在列举以及删除的过程中,清空桶工作线程可以依序先列举出一个桶分片中的全部对象后再删除该桶分片中的全部对象,再列举下一个桶分片进行清空直到全部清空任务中记载的桶分片全部被删除,但上述方法会消耗较长时间列举桶分片中的对象,由于列举是一个耗时较长的持续事件一旦中途需要暂停或终止清空桶任务,可能需要出现重新列举或者本次清空桶任务仅进行到列举过程,还未删除对象,导致本次清空桶请求完全没有清空对象,因此,可以每个清空桶工作线程根据分配的清空任务中记载的桶分片,列举一个桶分片中的对象数达到预设的列举阈值后,利用清空桶工作线程将已通过列举获取到的对象进行删除,删除后再次列举桶分片中剩余的对象直至桶分片中的全部对象被删除,例如,清空桶工作线程被分配到三个桶分片,清空桶工作线程可以先列举其中的第一桶分片中的对象,在列举到列举阈值1000个对象后,暂停列举,对第一桶分片中已经列举出的对象即清空桶工作线程获得的对象进行删除,删除这1000个对象后,继续对第一桶分片中剩余的对象进行列举然后删除,直至第一桶分片中的所有对象全部被删除,清空桶工作线程则继续对下一个桶分片即第二桶分片进行列举,在按照上述方法清空第二桶分片后,再对第三桶分片进行清空,此种方法,每次不需要列举桶分片中的全部对象,同时即使清空过程需要中断,也一般会至少已经清空部分桶分片中的部分对象,不会造成一次清空桶请求毫无进展的情况。
当然,在实际应用中还可以在清空任务中的记载的桶分片中的全部对象被清空后,对相应的桶分片解除锁定,以便恢复桶分片的对象上传任务。
相应的,本申请实施例还公开了一种分布式对象存储系统清空桶的系统,参见图5所示,该系统包括:
线程启动模块11,用于接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数。
具体的,清空桶请求中记载了需要对那个桶以及对桶中的那些桶分片进行清空,也即清空桶请求中清楚了记载了本次清空任务的对象以及数量等信息,因此,本申请实施例支持对指定的桶分片进行对象的清空。
具体的,在接收到清空桶请求后,便可以根据预设的线程启动规则,启动多个清空桶工作线程,具体启动多少个清空桶工作线程可以根据预设的线程启动规则进行设定,例如,预设的线程启动规则可以为预先制定的每次启动固定数量的线程数,如,每次固定启动20个清空桶工作线程准备进行清空桶作业,也可以为根据清空桶请求中记载的所需的清空的桶分片的数量启动对应数量的线程的可调节规则,如,清空桶请求中记载了需要对100个桶分片进行清空操作,那么就可以启动20个清空桶工作线程,如果清空桶请求中记载了需要对600个桶分片进行清空操作,那么就可以启动60个清空桶工作线程,实现启动的线程数根据需要清空的桶分片的数量变化而变化,提高清空效率。
其中,清空桶工作线程数小于等于桶分片数,避免出现空闲线程造成系统错误,为此当预设的线程启动规则为预先制定的每次启动固定数量的线程数时,尽可能确保每次需要清空的桶分片数量大于等于固定的启动线程数,或在启动线程前,根据需要清空的桶分片数量输入新的指定数量,调节启动线程数,避免出现清空桶工作线程数大于桶分片数的情况。
任务分配模块12,用于根据清空桶请求为每个清空桶工作线程分配清空任务。
具体的,清空桶请求中记录了总共需要清空的桶分片,也即是一个整体清空任务,为了将该整体任务分为多个子任务交由每个清空桶工作线程分别进行并行处理,提高处理速度,将总共需要清空的桶分片划分为多个清空任务,每个清空任务中记录了每个清空桶工作线程所需要清空的桶分片数和那些桶分片,可以理解的是,所有清空桶工作线程的清空任务的桶分片之和等于清空桶请求中记载的桶分片数。
对象清空模块13,用于每个清空桶工作线程根据分配的清空任务中记载的桶分片,并行读取清空任务中记载的桶分片中的全部对象并清空。
具体的,每个清空桶工作线程利用清空任务中记载的桶分片的信息,以桶分片为基准读取桶分片中的全部对象,而不是再以对象为基准在桶中直接查找对象,所以能够读取出桶分片中全部的对象,在读取到桶分片中的全部对象后,便可以将对象全部删除实现清空,由于在读取时是以桶分片为单位查找读取,因此,能够读取到桶分片中的全部类型的对象,例如,普通对象、多版本对象以及未上传完成的分片对象,确保了本申请实施例的分布式对象存储系统清空桶的方法能够一次性更为全面的清空桶中的对象,提高了清空效率。
可见,本申请实施例将一个清空桶任务分配给多个清空桶工作线程并行完成,提高清空速度,同时,清空桶工作线程以桶分片为基准读取桶分片中的全部对象,而不是以对象为基准进行查找,从而确保了能够一次性读取到桶分片中的全部对象进行清空,提高了清空效率。
具体的,上述线程启动模块11,可以具体用于接收清空桶请求后,根据线程启动规则中记载的线程启动数量,启动相同数量的多个清空桶工作线程。
具体的,上述线程启动模块11,可以具体用于接收清空桶请求后,根据线程启动规则中记载的桶分片数量、线程数以及对象存储性能三者之间的对应关系,启动相应数量的多个清空桶工作线程。
其中,本发明实施例中的对象存储性能可以包括内存剩余量和/或CPU负载。具体的,在一种简单的线程启动规则中可以固定线程启动数量,每次不考虑桶分片数量和对象存储性能,直接启动与线程启动规则中所记载的相同数量的多个清空桶工作线程。
另外,还可以基于用户输入的调整指令对桶分片数量、线程数以及对象存储性能三者之间的对应关系中的线程数进行调整。也即,考虑到线程数会影响清空任务速度,因此可以根据实际应用需要人为调整每次启动的清空桶工作线程数量,从而起到控制清空任务速度的效果,例如,减少启动的清空桶工作线程数量从而降低清空任务速度。
具体的,上述任务分配模块12,可以具体用于根据清空桶请求中记载的所需清空的桶分片数量以及对象存储性能,为每个清空桶工作线程分配相应的清空任务。
具体的,上述对象清空模块13,可以包括列举单元、删除单元和循环单元;其中,
列举单元,用于每个清空桶工作线程根据分配的清空任务中记载的桶分片,列举清空任务中记载的桶分片中的对象;
删除单元,用于每个清空桶工作线程删除通过列举获取到桶分片中的对象;
循环单元,用于在删除子模块利用每个清空桶工作线程删除一个桶分片中的全部对象后,继续调用列举子模块列举下一个桶分片中的对象并删除,直至清空任务中记载的全部桶分片中列举过的对象全部被删除。
具体的,列举单元,可以具体用于每个清空桶工作线程根据分配的清空任务中记载的桶分片,列举一个桶分片中的对象数达到预设的列举阈值后,调用删除单元;
删除单元,可以具体用于利用清空桶工作线程将已通过列举获取到的对象进行删除,删除后再次调用列举单元列举桶分片中剩余的对象直至桶分片中的全部对象被删除。
具体的,还可以包括锁定模块,用于在对象清空模块13运行时,锁定清空任务中记载的桶分片,暂停清空任务中记载的桶分片的对象上传任务。
图6为本申请实施例提供的一种电子设备的结构图,如图5所示,电子设备包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如前述的分布式对象存储系统清空桶的方法。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的文本答案的确定方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于设定的偏移量等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图5中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的文本答案的确定方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本申请实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述的分布式对象存储系统清空桶的方法。
以上对本申请实施例所提供的一种分布式对象存储系统清空桶的方法、系统、装置及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上对本申请所提供的技术内容进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (20)

1.一种分布式对象存储系统清空桶的方法,其特征在于,包括:
接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;
根据所述清空桶请求为每个清空桶工作线程分配清空任务;
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空。
2.根据权利要求1所述的分布式对象存储系统清空桶的方法,其特征在于,所述接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程的过程,包括:
接收所述清空桶请求后,根据所述线程启动规则中记载的线程启动数量,启动相同数量的多个清空桶工作线程。
3.根据权利要求1所述的分布式对象存储系统清空桶的方法,其特征在于,所述接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程的过程,包括:
接收所述清空桶请求后,根据所述线程启动规则中记载的桶分片数量、线程数以及对象存储性能三者之间的对应关系,启动相应数量的多个清空桶工作线程。
4.根据权利要求3所述的分布式对象存储系统清空桶的方法,其特征在于,所述对象存储性能包括内存剩余量和/或CPU负载。
5.根据权利要求3所述的分布式对象存储系统清空桶的方法,其特征在于,还包括:
基于用户输入的调整指令对桶分片数量、线程数以及对象存储性能三者之间的对应关系中的线程数进行调整。
6.根据权利要求3所述的分布式对象存储系统清空桶的方法,其特征在于,所述根据所述清空桶请求为每个清空桶工作线程分配清空任务,包括:
根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务。
7.根据权利要求6所述的分布式对象存储系统清空桶的方法,其特征在于,所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,采用均分的方式为每个清空桶工作线程分配相应的所述清空任务。
8.根据权利要求6所述的分布式对象存储系统清空桶的方法,其特征在于,所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
所述根据所述清空桶请求中记载的所需清空的桶分片数量以及所述对象存储性能,基于每个清空任务中所需清空的桶分片数控的大小及每个所述清空桶工作线程的负载高低,为每个清空桶工作线程分配相应的所述清空任务。
9.根据权利要求8所述的分布式对象存储系统清空桶的方法,其特征在于,所述基于每个清空任务中所需清空的桶分片数控的大小及每个所述清空桶工作线程的负载高低,为每个清空桶工作线程分配相应的所述清空任务的过程,包括:
将各所述清空任务中包括的所需清空的桶分片数量按照大小进行排序;
将每个所述清空桶工作线程的负载情况按照负载高低进行排序;
将所需情况的桶分片数量大的情况任务分配给负载低的清空桶工作线程,将所需情况的桶分片数量小的情况任务分配给负载高的清空桶工作线程。
10.根据权利要求6所述的分布式对象存储系统清空桶的方法,其特征在于,每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空的过程,包括:
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举所述清空任务中记载的桶分片中的对象;
每个清空桶工作线程删除通过列举获取到桶分片中的对象;
每个清空桶工作线程删除一个桶分片中的全部对象后,继续列举下一个桶分片中的对象并删除,直至所述清空任务中记载的全部桶分片中列举过的对象全部被删除。
11.根据权利要求10所述的分布式对象存储系统清空桶的方法,其特征在于,所述每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举所述清空任务中记载的桶分片中的对象,每个清空桶工作线程删除通过列举获取到桶分片中的对象的过程,包括:
每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,列举一个桶分片中的对象数达到预设的列举阈值后,利用清空桶工作线程将已通过列举获取到的对象进行删除,删除后再次列举桶分片中剩余的对象直至桶分片中的全部对象被删除。
12.根据权利要求11所述的分布式对象存储系统清空桶的方法,其特征在于,还包括:
基于接收到的阈值修改指令对所述列举阈值进行修改。
13.根据权利要求10所述的分布式对象存储系统清空桶的方法,其特征在于,所述每个清空桶工作线程删除通过列举获取到桶分片中的对象的过程,包括:
每个清空桶工作线程删除通过列举获取到桶分片中的全部类型的对象。
14.根据权利要求13所述的分布式对象存储系统清空桶的方法,其特征在于,所述全部类型的对象包括普通对象、多版本对象或未上传完成的分片对象。
15.根据权利要求1至14任一项所述的分布式对象存储系统清空桶的方法,其特征在于,在每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空时,还包括:
锁定所述清空任务中记载的桶分片,暂停所述清空任务中记载的桶分片的对象上传任务。
16.根据权利要求15所述的分布式对象存储系统清空桶的方法,其特征在于,还包括:
在所述清空任务中的记载的桶分片中的全部对象被清空后,对所述桶分片解除锁定。
17.根据权利要求15所述的分布式对象存储系统清空桶的方法,其特征在于,所述接收清空桶请求,包括:
接收客户端发送的清空桶请求。
18.一种分布式对象存储系统清空桶的系统,其特征在于,包括:
线程启动模块,用于接收清空桶请求后,根据预设的线程启动规则,启动多个清空桶工作线程;其中,清空桶工作线程数小于等于桶分片数;
任务分配模块,用于根据所述清空桶请求为每个清空桶工作线程分配清空任务;
对象清空模块,用于每个清空桶工作线程根据分配的所述清空任务中记载的桶分片,并行读取所述清空任务中记载的桶分片中的全部对象并清空。
19.一种分布式对象存储系统清空桶的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至17任一项所述的分布式对象存储系统清空桶的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述的分布式对象存储系统清空桶的方法。
CN202310208748.XA 2023-03-07 2023-03-07 分布式对象存储系统清空桶的方法、系统及装置 Pending CN115934363A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310208748.XA CN115934363A (zh) 2023-03-07 2023-03-07 分布式对象存储系统清空桶的方法、系统及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310208748.XA CN115934363A (zh) 2023-03-07 2023-03-07 分布式对象存储系统清空桶的方法、系统及装置

Publications (1)

Publication Number Publication Date
CN115934363A true CN115934363A (zh) 2023-04-07

Family

ID=86554458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310208748.XA Pending CN115934363A (zh) 2023-03-07 2023-03-07 分布式对象存储系统清空桶的方法、系统及装置

Country Status (1)

Country Link
CN (1) CN115934363A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111881133A (zh) * 2020-07-24 2020-11-03 苏州浪潮智能科技有限公司 存储桶管理方法、装置、计算机设备及可读存储介质
US20210073123A1 (en) * 2019-09-11 2021-03-11 EMC IP Holding Company LLC Method, device, and computer program product for managing address mapping in storage system
CN113419828A (zh) * 2021-05-31 2021-09-21 济南浪潮数据技术有限公司 一种对象存储的生命周期管理方法和系统
CN114489511A (zh) * 2022-02-09 2022-05-13 苏州浪潮智能科技有限公司 对象存储生命周期管理方法、管理装置、设备及介质
CN114528078A (zh) * 2022-01-29 2022-05-24 苏州浪潮智能科技有限公司 一种对象存储的数据迁移的方法、装置、设备及介质
CN114968111A (zh) * 2022-05-31 2022-08-30 济南浪潮数据技术有限公司 一种数据删除方法、装置、设备和计算机可读存储介质
CN115599299A (zh) * 2022-10-21 2023-01-13 济南浪潮数据技术有限公司(Cn) 一种存储桶管理方法、装置及电子设备和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073123A1 (en) * 2019-09-11 2021-03-11 EMC IP Holding Company LLC Method, device, and computer program product for managing address mapping in storage system
CN111881133A (zh) * 2020-07-24 2020-11-03 苏州浪潮智能科技有限公司 存储桶管理方法、装置、计算机设备及可读存储介质
CN113419828A (zh) * 2021-05-31 2021-09-21 济南浪潮数据技术有限公司 一种对象存储的生命周期管理方法和系统
CN114528078A (zh) * 2022-01-29 2022-05-24 苏州浪潮智能科技有限公司 一种对象存储的数据迁移的方法、装置、设备及介质
CN114489511A (zh) * 2022-02-09 2022-05-13 苏州浪潮智能科技有限公司 对象存储生命周期管理方法、管理装置、设备及介质
CN114968111A (zh) * 2022-05-31 2022-08-30 济南浪潮数据技术有限公司 一种数据删除方法、装置、设备和计算机可读存储介质
CN115599299A (zh) * 2022-10-21 2023-01-13 济南浪潮数据技术有限公司(Cn) 一种存储桶管理方法、装置及电子设备和存储介质

Similar Documents

Publication Publication Date Title
US9977689B2 (en) Dynamic scaling of management infrastructure in virtual environments
RU2571366C2 (ru) Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин
US5159678A (en) Method for efficient non-virtual main memory management
US20240004834A1 (en) Directory structure for a distributed storage system
RU2569805C2 (ru) Виртуальная архитектура неоднородной памяти для виртуальных машин
US6760826B2 (en) Store data in the system memory of a computing device
TWI574202B (zh) 用於新應用程式之記憶體管理模型與介面
TWI539280B (zh) 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體
US20060136525A1 (en) Method, computer program product and mass storage device for dynamically managing a mass storage device
US9507636B2 (en) Resource management and allocation using history information stored in application's commit signature log
CN113342477A (zh) 一种容器组部署方法、装置、设备及存储介质
US7676645B2 (en) Method, system, and article of manufacture for reserving memory
CN114327917A (zh) 内存管理方法、计算设备及可读存储介质
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
CN116400982B (zh) 配置中继寄存器模块的方法和装置、计算设备和可读介质
CN112269719B (zh) 基于ai训练平台的文件操作队列控制方法、装置及介质
CN113535087A (zh) 数据迁移过程中的数据处理方法、服务器及存储系统
CN115934363A (zh) 分布式对象存储系统清空桶的方法、系统及装置
US11379130B2 (en) Predicting and preparing volume configurations
CN111736975A (zh) 请求控制方法、装置、计算机设备及计算机可读存储介质
CN110018793B (zh) 一种主机io处理控制方法、装置、终端及可读存储介质
CN114153592A (zh) 云平台的物理主机负载调度方法、装置、电子设备及介质
CN108959517B (zh) 文件管理方法、装置及电子设备
CN110955644A (zh) 一种存储系统的io控制方法、装置、设备及存储介质
US20080184275A1 (en) Resource ejectability in multiprocessor systems

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20230407