本发明涉及分布式对象存储管理,具体地说是一种自适应对象存储生命周期管理方法及系统。
背景技术:
1、随着互联网的发展,互联网的数据量越来越大,分布式对象存储应运而生。作为一种新的网络存储架构,分布式对象存储方式适用于图片及视频等非结构化数据的存储,并且具有块存储高速直接访问磁盘的特点以及文件存储分布式共享的特点,在互联网中得到广泛的发展与应用。
2、目前ceph分布式对象存储系统radosgw中提供了桶生命周期功能,每个对象存储网关执行一个桶的生命周期检查,且对于单个桶,采用单线程方式从索引分片第0片依次对所有对象进行检查校验,这样对于单桶对象数目上亿级别的耗时非常大,处理一次动辄就是以周为单位进行。即使采用多个对象存储网关同时进行,也是同时处理多个桶的生命周期检查,对于单桶上亿级别的生命周期检查,依然是单线程,依然处理速度非常慢,同时不能够根据集群状态、桶内对象信息等进行动态调整处理速度,最后导致桶内对象未能按照生命周期规则进行及时的删除或转换,浪费用户的存储空间和存储成本,使得用户的体验感极差。
3、综上可见,如何提高桶生命周期执行效率,保证对象能够按照生命周期规则进行及时的删除或转换,从而降低对用户存储空间、存储成本的负面影响是本领域有待解决的问题。
技术实现思路
1、本发明的技术任务是针对以上不足之处,提供一种自适应对象存储生命周期管理方法及系统,应用于对象存储桶生命周期处理过程,以提高桶生命周期执行效率、集群硬件使用率,及时按照生命周期规则处理相应对象,更好的发挥存储集群的性能。
2、本发明解决其技术问题所采用的技术方案是:
3、一种自适应对象存储生命周期管理方法,包括:
4、智能自适应多线程模块,负责根据生命周期任务的多少、桶信息、用户业务量等相关信息,动态的调整线程数,以便能够在桶内对象较多、桶分片较多的情况下能够及时的遍历并处理符合生命周期规则的对象;
5、生命周期任务分发模块,通过获取需要执行生命周期的桶信息以及具体的生命周期规则信息,根据桶的分片数n,从0到n-1依次将生命周期检查任务放进任务队列当中,待执行线程按照存放顺序依次执行,同时该模块负责修改桶的生命周期执行状态;
6、片生命周期执行模块,即每个线程实际执行的任务,遍历各自片上的对象,并检查对象是否符合生命周期处理规则,符合则进行删除或转换,反之则跳过,直至当前片上对象检查一遍,则在任务队列中获取下一个需要执行的片。
7、本方法有效利用桶的索引分片特性,开启多个线程并行处理多个片生命周期检查工作,提高效率;线程数弹性伸缩,提高对象存储生命周期功能的可扩展性,有利于硬件性能的重分发挥;多个radosgw客户端同时执行多个桶的生命周期检查,提升总的效率,利于负载均衡;将生命周期执行时间缩短近十倍,避免对用户的存储空间和存储成本造成浪费。解决现有技术中以桶为粒度,单线程执行桶生命周期管理,处理速度慢,无法根据用户业务、存储集群状态等自动调整处理速度的问题。
8、其原理是:对象存储桶的对象列表通常会根据对象数目进行分片,每个片作为独立的单元对分配的对象索引数据进行记录并统计该片上的数据量,因此以桶的索引分片为单位,进行细粒度的生命周期检查。对于单个桶,同时开启多个线程,并行处理多个索引分片上对象的生命周期检查。根据索引分片id,形成任务队列,然后多线程依次处理队列中的任务,即保证了所有片上对象都能够执行到,又能提高处理速度。由于桶的分片粒度细,每个桶通常包含多个分片,这样每个线程只操作一个桶分片上的对象的生命周期检查,这样就在同一时间使用多个线程处理一个桶多个片的生命周期检查工作,即借助桶分片实现对对象存储网关rgw桶生命周期的高效并行处理,显著提高单桶生命周期的执行效率。另外,通过并行处理多个分片的对象,可以降低由于ceph集群负载不均导致单个片上执行较慢从而影响整个桶生命周期检查较慢的问题。通过考虑桶分片、对象信息、硬件信息、存储集群状态等,动态调整片处理线程数,提升处理速度的同时提升硬件利用率。
9、进一步的,所述生命周期任务分发模块,包括状态修改子模块;
10、在生命周期任务分发模块分发任务之前,首先通过状态修改子模块将记录在log池中的桶生命周期状态修改为processing,表示该桶正在进行生命周期检查,这样保证其他的对象存储网关不会同时执行该桶的生命周期检查;然后根据分片数将子任务放进任务队列;等待任务队列中所有的生命周期检查完成后,再通过状态修改子模块将记录在log池中的桶生命周期状态修改为complete;然后进行下一个桶的生命周期任务分发工作。例如,桶test有256个分片,任务分发模块将分别将分片号0-255和桶的生命周期信息依次放到任务队列中。
11、通过log池中的桶生命周期状态记录生命周期执行的过程,保证每个桶同时只有一个对象存储网关在执行,或者单个网关多个生命周期线程的情况下只有一个生命周期线程处理一个桶,避免不同的执行线程重复操作同一个桶,从而引起没必要的重复操作,避免计算资源浪费。
12、进一步的,所述生命周期任务分发模块,包括线程执行检查子模块;
13、生命周期任务分发模块通过线程执行检查子模块检查任务队列中待执行任务数量,控制放入队列任务的速度,当任务队列已满时,暂时停止分发任务,进行暂时的等待,当任务队列有空间后再向队列中加入任务;
14、当任务队列中任务数量到达设定阈值上限或已满时,生命周期任务分发模块会通知智能自适应多线程模块增加执行任务的线程数,以便能够更快的处理任务队列中的生命周期检查任务;当任务队列中任务数量低于设定阈值下限或者为空时,生命周期任务分发模块会通知智能自适应多线程模块减少执行任务的线程数,以免空闲线程太多,造成不必要的资源浪费。
15、进一步的,所述片生命周期执行模块,
16、首先每个线程从任务队列中获取桶生命周期规则信息和需要处理的分片号,然后列举处于该分片上的对象信息,根据列举信息和生命周期规则信息,判断每个对象是否需要进行删除或类型转换;当该片上所有的对象都被处理一次后,该线程结束对该片的执行,并通知生命周期任务分发模块;然后在任务队列中获取下一个任务并执行;
17、当任务队列为空时,表示该桶的所有片生命周期已经执行完成,片生命周期执行模块的所有线程进入等待状态,待生命周期任务分发模块将下一个桶的生命周期规则信息和片信息分发到任务队列中。
18、进一步的,生命周期任务分发模块将所有的片信息和生命周期信息放入任务队列当中,设有6个线程处理片上的生命周期,则首先处理位于任务队列最前面的0-5分片号的生命周期检查,分别列举对应的片上对象列表,然后校验其是否符合生命周期规则,并将符合规则的对象进行删除或类型转换;任一个线程完成其负责片的对象生命周期规则检查,则通知生命周期任务分发模块该片生命周期检查已完成,然后到任务队列中获取分片号为6的任务,依次类推,直到所有的分片生命周期检查全部完成,则该桶的生命周期检查即完成,然后由生命周期任务分发模块的状态修改子模块将记录在log池中的桶生命周期状态修改为complete。
19、进一步的,所述智能自适应多线程模块根据桶的分片信息、对象信息、生命周期规则信息自动的调整处理片生命周期的线程数;
20、智能自适应多线程模块包含有基础线程数、最大线程数,基础线程数根据桶的默认分片数设定,最大线程数根据对象存储网关radosgw部署节点的cpu核数确定;智能自适应多线程模块将线程数在基础线程数和最大线程数之间进行动态调节,以兼顾用户业务、生命周期执行效率和系统资源使用效率。
21、进一步的,智能自适应多线程模块动态调节的规则包括:
22、用户业务量大时降低生命周期执行的线程数,业务量小时提高线程数;
23、生命周期规则为删除操作,则降低或保持基础线程数处理生命周期;
24、生命周期规则为类型转换且桶内对象较大,则提高线程数;
25、桶分片达千片以上或对象达亿级别,提高线程数;
26、当任务队列积攒任务数量达到设定阈值时,则提高线程数;
27、根据生命周期任务分发模块发送的信号进行增减线程数。
28、本发明还要求保护一种自适应对象存储生命周期管理系统,包括:
29、智能自适应多线程模块,负责根据生命周期任务的多少、桶信息、用户业务量等相关信息,动态的调整线程数,以便能够在桶内对象较多、桶分片较多的情况下能够及时的遍历并处理符合生命周期规则的对象;
30、生命周期任务分发模块,通过获取需要执行生命周期的桶信息以及具体的生命周期规则信息,根据桶的分片数n,从0到n-1依次将生命周期检查任务放进任务队列当中,待执行线程按照存放顺序依次执行,同时该模块负责修改桶的生命周期执行状态;
31、片生命周期执行模块,即每个线程实际执行的任务,遍历各自片上的对象,并检查对象是否符合生命周期处理规则,符合则进行删除或转换,反之则跳过,直至当前片上对象检查一遍,则在任务队列中获取下一个需要执行的片。
32、本发明还要求保护一种自适应对象存储生命周期管理装置,包括:至少一个存储器和至少一个处理器;
33、所述至少一个存储器,用于存储机器可读程序;
34、所述至少一个处理器,用于调用所述机器可读程序,实现上述的方法。
35、本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的方法。
36、本发明的一种自适应对象存储生命周期管理方法及系统与现有技术相比,具有以下有益效果:
37、本方案利用桶索引分片特性,通过多个线程并行处理单桶的不同分片上对象的生命周期检查,提升生命周期执行效率。首先根据桶分片数,并行处理多个片上对象的生命周期检查工作,提高整体的处理速度;另外,每个分片子线程处理完成后将结果汇总到任务分发模块进行记录,整个桶执行完成后修改桶的执行状态,避免了片上状态的繁琐更改。
38、综上,通过将生命周期检查任务并行处理,大大降低了执行时间,通过不断地调整线程数,能够实现不影响用户业务、提升处理速度、提升硬件利用率三者的兼顾。
1.一种自适应对象存储生命周期管理方法,其特征在于,包括:
2.根据权利要求1所述的一种自适应对象存储生命周期管理方法,其特征在于,所述生命周期任务分发模块,包括状态修改子模块;
3.根据权利要求1或2所述的一种自适应对象存储生命周期管理方法,其特征在于,所述生命周期任务分发模块,包括线程执行检查子模块;
4.根据权利要求1所述的一种自适应对象存储生命周期管理方法,其特征在于,所述片生命周期执行模块,
5.根据权利要求2或4所述的一种自适应对象存储生命周期管理方法,其特征在于,生命周期任务分发模块将所有的片信息和生命周期信息放入任务队列当中,设有6个线程处理片上的生命周期,则首先处理位于任务队列最前面的0-5分片号的生命周期检查,分别列举对应的片上对象列表,然后校验其是否符合生命周期规则,并将符合规则的对象进行删除或类型转换;任一个线程完成其负责片的对象生命周期规则检查,则通知生命周期任务分发模块该片生命周期检查已完成,然后到任务队列中获取分片号为6的任务,依次类推,直到所有的分片生命周期检查全部完成,则该桶的生命周期检查即完成,然后由生命周期任务分发模块的状态修改子模块将记录在log池中的桶生命周期状态修改为complete。
6.根据权利要求1所述的一种自适应对象存储生命周期管理方法,其特征在于,所述智能自适应多线程模块根据桶的分片信息、对象信息、生命周期规则信息自动的调整处理片生命周期的线程数;
7.根据权利要求6所述的一种自适应对象存储生命周期管理方法,其特征在于,智能自适应多线程模块动态调节的规则包括:
8.一种自适应对象存储生命周期管理系统,其特征在于,包括:
9.一种自适应对象存储生命周期管理装置,其特征在于,包括:至少一个存储器和至少一个处理器;
10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至7任一所述的方法。