本发明涉及分布式存储技术领域,特别涉及一种对象聚合方法、对象聚合装置、对象聚合设备及计算机可读存储介质。
背景技术:
分布式对象存储系统,指的是面向非结构化数据的分布式存储系统。现阶段,越来越多的业务场景需要使用分布式对象存储系统。伴随着存储集群中数据量规模愈来愈大,大量的读写请求等操作带来了大量的磁盘io的消耗,由于集群的io、吞吐量是有限的,因此需要提高数据的使用的有限性,提升集群的数据读取性能。
在传统的分布式对象存储集群中,通过对象聚合的方式来提升数据读取性能。聚合的过程为遍历某个存储池中的所有小对象,不区分用户等信息的区别而将其逐个读取出来,然后将这些对象的数据部分,通过追加的方式合并成一个大对象,组织合并元数据后,一起写下去,通过对小对象进行聚合的方式减少集群的读写次数。但这样聚合的对象文件不具有相关性(例如用户的相关性、内容的相关性、主题的相关性),被聚合的对象也不具有关联性,进而导致对象的聚合给后继的读操作、写操作、删除操作等带来不便,集群的数据读取性能提升较小。
因此,如何解决现有对象聚合方法为后续操作带来不便,集群的数据读取性能提升较小的问题,是本领域技术人员需要解决的技术问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种对象聚合方法、对象聚合装置、对象聚合设备及计算机可读存储介质,解决了现有对象聚合方法为后续操作带来不便,集群的数据读取性能提升较小的问题。
为解决上述技术问题,本发明提供了一种对象聚合方法,包括:
获取目标对象,计算所述目标对象对应的相关性指数;其中,所述目标对象为文件体积小于预设阈值的对象文件;
利用所述相关性指数生成聚合任务,将所述聚合任务放入聚合任务队列;
按照预设相关性顺序从所述聚合任务队列中获取目标聚合任务,利用所述目标聚合任务对应的第一目标对象构建聚合对象,并将所述聚合对象存入存储系统。
可选地,所述计算所述目标对象对应的相关性指数,包括:
读取配置文件,获取多个信息加权系数;
获取所述目标对象对应的多个文件信息,利用各个所述文件信息与对应的所述信息加权系数进行加权的平方和运算,得到所述相关性指数。
可选地,所述获取目标对象,包括:
获取对象文件,判断所述对象文件的所述文件体积是否小于所述预设阈值;
若是,则将所述对象文件确定为目标对象;
若否,则将所述对象文件存入所述存储系统中。
可选地,所述按照预设相关性顺序从所述聚合任务队列中获取目标聚合任务,利用所述目标聚合任务对应的第一目标对象构建聚合对象,包括:
将所述聚合任务队列中的各个聚合任务按照相关性指数由大到小的顺序进行排列;
从所述聚合任务队列的首部开始依次获取所述目标聚合任务,确定所述目标聚合任务对应的所述第一目标对象;
将各个所述第一目标对象进行聚合处理,得到第一聚合对象;
对所述第一聚合对象进行元数据添加处理,得到所述聚合对象。
可选地,在确定所述目标聚合任务对应的第一目标对象之后,在将各个所述第一目标对象进行聚合处理之前,还包括:
判断各个所述第一目标对象对应的目标相关性指数是否处于相同的指数区间内;
若是,则执行所述将各个所述第一目标对象进行聚合处理的步骤。
可选地,所述对所述第一聚合对象进行元数据添加处理,包括:
利用所述第一目标对象对应的oid、位置信息和长度信息构成所述第一目标对象对应的第一元数据;
将各个所述第一元数据进行组合得到元数据,并将所述元数据添加到所述第一聚合对象中。
可选地,所述从所述聚合任务队列的首部开始依次获取所述目标聚合任务,包括:
将处于所述聚合任务队列首部的所述聚合任务确定为后备聚合任务;
利用所述后备聚合任务对应的所述文件体积对总体积值进行更新,判断所述总体积值是否小于所述预设阈值;
若是,则将所述后备聚合任务确定为所述目标聚合任务,并更新所述聚合任务队列。
本发明还提供了一种对象聚合装置,包括:
计算模块,用于获取目标对象,计算所述目标对象对应的相关性指数;其中,所述目标对象为文件体积小于预设阈值的对象文件;
聚合任务生成模块,用于利用所述相关性指数生成聚合任务,将所述聚合任务放入聚合任务队列;
存储模块,用于按照预设相关性顺序从所述聚合任务队列中获取目标聚合任务,利用所述目标聚合任务对应的第一目标对象构建聚合对象,并将所述聚合对象存入存储系统。
本发明还提供了一种对象聚合设备,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现上述的对象聚合方法。
本发明还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的对象聚合方法。
本发明提供的对象聚合方法,获取目标对象,计算目标对象对应的相关性指数;其中,目标对象为文件体积小于预设阈值的对象文件。利用相关性指数生成聚合任务,将聚合任务放入聚合任务队列。按照预设相关性顺序从聚合任务队列中获取目标聚合任务,利用目标聚合任务对应的第一目标对象构建聚合对象,并将聚合对象存入存储系统。
可见,计算各个目标对象的相关性指数,相关性指数越接近,说明目标对象的相关性越高,因此按照预设相关性顺序从聚合任务队列中获取目标聚合任务,目标聚合任务为相关性指数相近的任务,即较相关的聚合任务,因此其对应的第一目标对象也更具有相关性。利用各个第一目标对象构建聚合对象并将其存入存储系统,即完成了相关性较高的对象的聚合存储,便于后续的读操作或写操作。由于聚合对象中的对象具有相关性,因此在后续进行数据读写时也可以减少集群io,大大增强集群的数据读取性能,解决了现有对象聚合方法为后续操作带来不便,集群的数据读取性能提升较小的问题。
此外,本发明还提供了一种对象聚合装置、对象聚合设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种对象聚合方法流程图;
图2为本发明实施例提供的一种相关性指数计算方法流程图;
图3为本发明实施例提供的一种聚合对象生成方法流程图;
图4为本发明实施例提供的一种目标聚合任务确定方法流程图;
图5为本发明实施例提供的一种对象聚合装置的结构示意图;
图6为本发明实施例提供的一种对象聚合设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例提供的一种对象聚合方法流程图。该方法包括:
s101:获取目标对象,计算目标对象对应的相关性指数;其中,目标对象为文件体积小于预设阈值的对象文件。
需要说明的是,存储系统为分布式对象存储系统,目标对象为文件体积小于预设阈值的对象文件,即小对象。预设阈值可以根据存储系统的实际要求设定,例如存储系统以8mb为粒度时,则可以将预设阈值设置为8mb。本实施例并不限定执行获取目标对象的时机,例如可以按照预设周期获取目标对象,即按照预设周期执行对象聚合的操作;或者可以在检测到聚合指令时获取目标对象,即检测到聚合指令时执行对象聚合的操作。
本实施例并不限定目标对象的获取途径,例如可以从存储系统中的指定的存储池中获取,将获取到的目标对象存入高速缓存池中等待处理;或者可以通过用户上传的途径获取,将用户上传的目标对象存入高速缓存池中等待处理。在获取目标对象后,计算该目标对象对应的相关性指数。具体的,可以按照相关性指数计算规则利用目标对象对应的文件信息进行计算,得到相关性指数。目标对象对应的文件信息的数量和具体内容本实施例不做限定,可以根据具体情况进行设置,例如目标对象为新闻信息对象时,对应的文件信息可以为内容分类、保存时长、文件热度等;当目标对象为智能工厂制造信息时,对应的文件信息可以为内容分类、保存时长、用户信息、桶信息等。相关性指数计算规则的具体形式可以根据实际需要和目标对象对应的文件信息的不同而不同,具体可以为相加、加权相加、加权平方、相乘、相除等,还可以为多种计算形式的组合,本实施例对相关性指数计算规则的具体形式不做限定,不同类型的目标对象可以采用不同的相关性指数计算规则。
进一步,在获取目标对象时可以根据对象文件的文件体积大小进行筛选,具体的,获取对象文件,判断对象文件的文件体积是否小于预设阈值;若文件体积小于预设阈值,则将对象文件确定为目标对象;若文件体积不小于预设阈值,则将对象文件存入存储系统中。
s102:利用相关性指数生成聚合任务,将聚合任务放入聚合任务队列。
在确定目标对象的相关性指数后,利用该相关性指数生成聚合任务,以便对目标对象进行聚合。聚合任务包括目标对象的相关性指数,还可以包括目标对象的文件体积、存储位置以及其他信息,例如用于计算相关性指数的信息。在生成目标对象对应的聚合任务后,将其放入聚合任务队列中。聚合任务队列用于存放聚合任务,并用于在后续确定目标聚合任务。
s103:按照预设相关性顺序从聚合任务队列中获取目标聚合任务,利用目标聚合任务对应的第一目标对象构建聚合对象,并将聚合对象存入存储系统。
预设相关性顺序用于确定聚合任务队列中的目标聚合任务,例如可以为相关性指数由大到小的顺序;或者可以为相关性指数由小到大的顺序。按照预设相关性顺序从聚合任务队列中获取到目标聚合任务,并确定目标聚合任务对应的第一目标对象,对第一目标对象进行聚合操作,即利用第一目标对象构建聚合对象,即完成第一目标对象的集合。在得到聚合对象后,将聚合对象存入存储系统中,完成对象的存储。
由于数据在聚合时根据相关性指数生成聚合任务并按照预设相关性顺序确定目标聚合任务,因此各个第一目标对象均具有相关性。在读取某个第一目标对象时,说明该聚合对象中的各个第一目标对象可能在后续被读取,因此可以将整个聚合对象读出至高速缓存池中,以便后续直接从高速缓存池中读取其他第一目标对象,减少小对象的频繁读写,提高分布式对象存储系统的读取性能。同时减少业务服务器与存储集群的交互,提高用户体验。
应用本发明实施例提供的对象聚合方法,计算各个目标对象的相关性指数,相关性指数越接近,说明目标对象的相关性越高,因此按照预设相关性顺序从聚合任务队列中获取目标聚合任务,目标聚合任务为相关性指数相近的任务,即较相关的聚合任务,因此其对应的第一目标对象也更具有相关性。利用各个第一目标对象构建聚合对象并将其存入存储系统,即完成了相关性较高的对象的聚合存储,便于后续的读操作或写操作。由于聚合对象中的对象具有相关性,因此在后续进行数据读写时也可以减少集群io,大大增强集群的数据读取性能,解决了现有对象聚合方法为后续操作带来不便,集群的数据读取性能提升较小的问题。
基于上述发明实施例,本发明实施例将说明一种具体的相关性指数计算方法。请参考图2,图2为本发明实施例提供的一种相关性指数计算方法流程图,包括:
s201:读取配置文件,获取多个信息加权系数。
在本发明实施例中存在配置文件,用于存储信息加权系数,不同的信息加权系数对应不同的信息,信息加权系数的具体数目与目标对象对应的文件信息数量相同。配置文件中可以包括多组系数,每组系数中包括多个信息加权系数,每组系数对应一种类型的目标对象。
s202:获取目标对象对应的多个文件信息,利用各个文件信息与对应的文件信息加权系数进行加权的平方和运算,得到相关性指数。
在本发明实施例中,采用加权的平方和运算来计算目标对象的相关性指数。具体的,在计算相关性指数时,根据目标对象对应的文件信息中某一信息确定对应的文件信息加权系数,并利用其计算相关性指数。例如,在本发明实施例中,目标对象对应的文件信息包括内容分类、存储时长、文件特征值、桶信息和文件热度五项。内容分类用于选择信息加权系数、存储时长、文件特征值、桶信息和文件热度五项用于计算相关性指数。各项信息的计算方法本实施例不做限定,例如存储时长可以利用当前时刻减去上传时刻得到,文件特征值可以利用md5或sha1算法计算得到。在本发明实施例中,信息加权系数为k1、k2、k3、k4四项,其具体大小根据内容分类的不同而不同。在读取到信息加权系数后,按照公式(1)计算目标对象对应的相关性指数:
其中,a为相关性指数,k1为时长加权系数,k2为特征值加权系数,k3为桶信息加权系数,k4为热度加权系数。t1为存储时长,t2为文件特征值,t3为桶信息,t4为文件热度。
应用本发明实施例提供的对象聚合方法,根据文件信息确定对应的信息加权系数,并利用信息加权系数和文件信息计算相关性指数。该方法可以更准确地计算相关性指数,提高绝活对象中各个第一目标对象的相关性程度。
基于上述发明实施例,本发明实施例将说明一种具体的聚合对象生成方法。请参考图3,图3为本发明实施例提供的一种聚合对象生成方法流程图,包括:
s301:将聚合任务队列中的各个聚合任务按照相关性指数由大到小的顺序进行排列。
在本发明实施例中,预设相关性顺序为相关性指数由大到小的顺序。因此在获取目标聚合任务之前,可以将聚合任务队列中的各个聚合任务按照相关性指数由大到小的顺序进行排列。
s302:从聚合任务队列的首部开始依次获取目标聚合任务,确定目标聚合任务对应的第一目标对象。
从聚合任务队列的首部开始依次获取目标聚合任务,在确定目标聚合任务后,确定各个目标聚合任务对应的第一目标对象。具体的,当目标聚合任务中包括存储位置时,可以利用存储位置确定第一目标对象;或者当目标聚合任务中包括第一目标对象的标识信息时,可以利用标识信息确定第一目标对象。
进一步,为了保证聚合对象中各个第一目标对象的相关性,在确定各个目标绝活任务对应的第一目标对象后,在对各个第一目标对象进行聚合处理之前,还可以判断各个第一目标对象对应的目标相关性指数是否处于相同的指数区间内,指数区间有多个,其为相关性指数的上下区间,其上限值和下限值的具体大小本实施例不做限定。各个指数区间的大小可以相同也可以不同。若各个第一目标对象对应的目标相关性指数处于相同的指数区间内,则说明各个第一目标对象的相关性较强,则执行将各个第一目标对象进行聚合处理的步骤,即进入s303步骤。
s303:将各个第一目标对象进行聚合处理,得到第一聚合对象。
将各个第一目标对象进行聚合处理,本实施例并不限定聚合处理的具体过程。具体的,可以先对各个第一目标对象进行解析操作,得到各个第一目标对象对应的数据部分。在得到数据部分后,将各个数据部分按照一定顺序先后相连聚合,得到第一聚合对象。
s304:对第一聚合对象进行元数据添加处理,得到聚合对象。
元数据用于对第一聚合对象中各个部分的数据进行定位和说明,同时可以用于数据读取的过程。对第一聚合对象进行元数据添加处理的过程包括:
s3041:利用第一目标对象对应的oid、位置信息和长度信息构成第一目标对象对应的第一元数据。
在本发明实施例中,元数据由第一元数据组成。第一目标对象在构成第一聚合对象后,可以用位置信息和长度信息表示其在第一聚合对象中的具体位置,位置信息用于表示第一目标对象首端在第一元数据中的位置,长度信息表示第一目标对象的长度。oid为对象标识符,利用第一目标对象对应的oid、位置信息和长度信息构成第一目标对象对应的第一元数据,具体可以为按照元数据构建规则进行构建。
s3042:将各个第一元数据进行组合得到元数据,并将元数据添加到第一聚合对象中。
在得到各个第一目标对象对应的各个第一元数据后,将各个第一元数据进行组合得到元数据。具体的,可以按照第一目标对象在第一聚合对象中的位置关系将各个第一元数据进行排序,在排序后组合,得到元数据;或者可以按照元数据的排序顺序对各个元数据进行组合,得到元数据。在得到元数据后,将其添加到第一聚合对象中,完成元数据添加处理,得到聚合对象。
基于上述发明实施例,本发明实施例将说明一种具体的目标聚合任务确定方法,使生成的聚合对象符合存储系统对象大小的要求。请参考图4,图4为本发明实施例提供的一种目标聚合任务确定方法流程图,包括:
s401:将处于聚合任务队列首部的聚合任务确定为后备聚合任务。
在本发明实施例中,聚合任务中包括文件体积信息。将处于聚合任务队列首部的聚合任务确定为后备聚合任务,后备聚合任务为可能被选为目标聚合任务的聚合任务。
s402:利用后备聚合任务对应的文件体积对总体积值进行更新,判断总体积值是否小于预设阈值。
在确定后备聚合任务后,获取后备聚合任务对应文件体积,利用后备绝活任务对应的文件体积与总体积值相加,总体积值为当前各个目标聚合任务的文件体积的和,若当前没有确定目标聚合任务,则总体积值为0。在相加过后,即对总体积值更新过后,判断总体积值是否小于预设阈值。若总体积值不小于预设阈值,则可以进入s404步骤,即执行预设操作,本实施例并不限定预设操作的具体内容,例如可以为无操作,即不执行任何操作。若总体积值小于预设阈值,则可以进入s403步骤。
s403:将后备聚合任务确定为目标聚合任务,并更新聚合任务队列。
当总体积值小于预设阈值时,说明后备聚合任务对应的后备目标对象的体积较小,与现有的目标聚合任务对应的第一目标对象聚合后得到的聚合对象的文件大小符合存储系统的要求,因此将后备聚合任务确定为目标聚合任务。在将后备聚合任务确定为目标聚合任务后,更新聚合任务队列,以便后续确定目标聚合任务。
下面对本发明实施例提供的对象聚合装置进行介绍,下文描述的对象聚合装置与上文描述的对象聚合方法可相互对应参照。
请参考图5,图5为本发明实施例提供的一种对象聚合装置的结构示意图,包括:
计算模块510,用于获取目标对象,计算目标对象对应的相关性指数;其中,目标对象为文件体积小于预设阈值的对象文件;
聚合任务生成模块520,用于利用相关性指数生成聚合任务,将聚合任务放入聚合任务队列;
存储模块530,用于按照预设相关性顺序从聚合任务队列中获取目标聚合任务,利用目标聚合任务对应的第一目标对象构建聚合对象,并将聚合对象存入存储系统。
可选地,计算模块510,包括:
读取单元,用于读取配置文件,获取多个信息加权系数;
运算单元,用于获取目标对象对应的多个文件信息,利用各个文件信息与对应的信息加权系数进行加权的平方和运算,得到相关性指数。
可选地,计算模块510,包括:
判断单元,用于获取对象文件,判断对象文件的文件体积是否小于预设阈值;
第一确定单元,用于若对象文件的文件体积小于预设阈值,则将对象文件确定为目标对象;
存储单元,用于若对象文件的文件体积不小于预设阈值,则将对象文件存入存储系统中。
可选地,存储模块530,包括:
排序单元,用于将聚合任务队列中的各个聚合任务按照相关性指数由大到小的顺序进行排列;
第二确定单元,用于从聚合任务队列的首部开始依次获取目标聚合任务,确定目标聚合任务对应的第一目标对象;
聚合处理单元,用于将各个第一目标对象进行聚合处理,得到第一聚合对象;
元数据添加单元,用于对第一聚合对象进行元数据添加处理,得到聚合对象。
可选地,存储模块530,还包括:
区间判断单元,用于判断各个第一目标对象对应的目标相关性指数是否处于相同的指数区间内;
相应的,聚合处理单元为当各个第一目标对象对应的目标相关性指数处于相同的指数区间内时,将各个第一目标对象进行聚合处理的单元。
可选地,元数据添加单元,包括:
第一元数据构建子单元,用于利用第一目标对象对应的oid、位置信息和长度信息构成第一目标对象对应的第一元数据;
元数据构建子单元,用于将各个第一元数据进行组合得到元数据,并将元数据添加到第一聚合对象中。
可选地,第二确定单元,包括:
后备确定子单元,用于将处于聚合任务队列首部的聚合任务确定为后备聚合任务;
阈值判断子单元,用于利用后备聚合任务对应的文件体积对总体积值进行更新,判断总体积值是否小于预设阈值;
更新子单元,用于若总体积值小于预设阈值,则将后备聚合任务确定为目标聚合任务,并更新聚合任务队列。
下面对本发明实施例提供的对象聚合设备进行介绍,下文描述的对象聚合设备与上文描述的对象聚合方法可相互对应参照。
请参考图6,图6为本发明实施例提供的一种对象聚合设备的结构示意图,该对象聚合设备包括存储器、处理器,其中:
存储器610,用于保存计算机程序;
处理器620,用于执行计算机程序,以实现上述的对象聚合方法。
下面对本发明实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的对象聚合方法可相互对应参照。
本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的对象聚合方法的步骤。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
以上对本发明所提供的一种对象聚合方法、对象聚合装置、对象聚合设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。