本公开提供一种小对象数据的存储方法、装置、电子设备和可读介质,其中,小对象数据的存储方法包括:接收待存储的小对象数据;将小对象数据的元数据写入分布式KV集群;将元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对LRU缓存区的指定元数据进行淘汰;对LRU缓存区淘汰的指定元数据发送至聚合区,并对聚合区的指定元数据进行聚合;将聚合后的指定元数据写入后端存储器。通过本公开实施例,提升了海量小对象数据的读写效率,降低了数据存储压力。压力。压力。
【技术实现步骤摘要】
小对象数据的存储方法、装置、电子设备和可读介质
[0001]本公开涉及数据存储
,具体而言,涉及一种小对象数据的存储方法、装置、电子设备和可读介质。
技术介绍
[0002]目前,随着云计算和大数据的迅速发展,全球数据存储量呈指数递增,随着小对象数量的不断增大,大部分分布式存储系统已经不能满足海量小对象的高效存储和读取的需求。
[0003]在相关技术中,采用分布式对象系统对海量小对象数据进行存储,分布式对象技术是在面向对象技术的基础上发展起来的,它要解决的主要问题是位于不同进程中的对象之间的调用问题。在中间件系统、Web服务以及SOA(Service Oriented Architecture,面向服务架构)的研究与开发等许多重要领域,分布式对象技术都发挥着不可替代的作用。
[0004]但是,采用分布式对象技术对海量小对象数据进行存储时,至少存在以下技术缺陷:
[0005]1.针对海量数据的性能问题,在Linux环境下,海量的小对象数据会产生海量的inode(索引节点,每个对象唯一,主要保存对象的元数据),每个inode占用256字节,1亿个小对象就占用了24G存储空间。海量的小对象数据会有大量的元数据,可能会造成大量的元数据不能加载到内存,用到时需要去磁盘加载,而磁盘访问的效率远远低于内存的访问效率。另外,海量的小对象数据会破坏空间的连续性,会产生大量的随机读写。
[0006]2.针对数据恢复效率问题,在海量的小对象数据场景下,在面对集群扩容或者换盘导致的数据恢复时,由于存在大量的小对象数据迁移,因此会导致频繁的磁盘写操作,导致集群的恢复效率比较慢,在此期间如果有业务请求过来,可能会出现请求等待或者阻塞的情况,进而导致较高的响应时延,这对于线上业务是无法接受的。
[0007]3.针对本地磁盘对象的访问问题,对于常见的Linux系统,读取一个对象通常需要三次磁盘IO,即读取目录元数据到内存,把对象的inode节点装载到内存,最后读取实际的对象内容,按照目前主流的2TB~6TB的sata盘,可以存储2kw~6kw个100KB大小的小对象数据,由于小对象数据的数量太多,无法将所有目录及对象的inode信息缓存到内存,很难实现只需要一次磁盘IO即可读取每个对象的理想状态。
[0008]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
[0009]本公开的目的在于提供一种小对象数据的存储方法、装置、电子设备和可读介质,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的分布式存储系统中的小对象数据的读写效率低下的问题。
[0010]根据本公开实施例的第一方面,提供一种小对象数据的存储方法,包括:接收待存
储的小对象数据;将所述小对象数据的元数据写入分布式KV集群;将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰;对所述LRU缓存区淘汰的指定元数据发送至聚合区,并对所述聚合区的指定元数据进行聚合;将聚合后的指定元数据写入后端存储器。
[0011]在本公开的一种示例性实施例中,所述分布式KV集群用于存储所述小对象数据的索引,所述小对象数据的存储方法还包括:在完成所述元数据的聚合后,触发所述分布式KV集群对聚合后的元数据的二级索引进行存储。
[0012]在本公开的一种示例性实施例中,按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:确定所述LRU缓存区的指定元数据的访问次数;判断所述访问次数是否满足所述预设淘汰条件;根据所述预设淘汰条件的判定结果,对所述LRU缓存区的指定元数据进行淘汰。
[0013]在本公开的一种示例性实施例中,将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:通过LRU
‑
K算法记录所有待缓存的指定元数据的访问历史;根据所述访问历史确定所述待缓存的指定元数据的访问次数;判断所述访问次数是否满足预设访问次数的要求;若判定所述访问次数满足所述预设访问次数的要求,则将满足访问次数要求的指定元数据写入LRU缓存区;按照所述预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰。
[0014]在本公开的一种示例性实施例中,按照所述预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:确定所述LRU缓存区的指定元数据的最后一次的访问时间;在检测到所述LRU缓存区的队列长度达到预设长度时,根据所述访问时间淘汰所述LRU缓存区中的指定元数据。
[0015]在本公开的一种示例性实施例中,对所述LRU缓存区淘汰的指定元数据发送至聚合区,并对所述聚合区的指定元数据进行聚合包括:对所述LRU缓存区淘汰的指定元数据发送至聚合区;采用一致性哈希算法对所述聚合区的指定元数据进行计算;根据所述一致性哈希算法的计算结果确定聚合对象;根据所述聚合对象中的小对象数据的数量对所述指定元数据进行聚合。
[0016]在本公开的一种示例性实施例中,根据所述聚合对象的数量对所述指定元数据进行聚合包括:判断任一所述聚合对象的小对象数据的数量是否大于所述小对象数据的平均数量;若判定一个所述聚合对象的小对象数据的数量大于所述平均数量,则开放地址法重新寻址;若判定一个所述聚合对象的小对象数据的数量小于活动等于所述平均数量,则更新所述聚合对象对应的聚合事务,其中,所述聚合对象中的小对象数据的数量被配置为通过梯度下降算法进行均衡。
[0017]根据本公开实施例的第二方面,提供一种小对象数据的存储装置,包括:接收模块,设置为接收待存储的小对象数据;写入模块,设置为将所述小对象数据的元数据写入分布式KV集群;缓存模块,设置为将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰;聚合模块,设置为对所述LRU缓存区淘汰的指定元数据发送至聚合区,并对所述聚合区的指定元数据进行聚合;所述写入模块,设置为将聚合后的指定元数据写入后端存储器。
[0018]根据本公开的第三方面,提供一种电子设备,包括:存储器;以及耦合到所述存储
器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。
[0019]根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的小对象数据的存储方法。
[0020]本公开实施例,通过接收待存储的小对象数据,并将所述小对象数据的元数据写入分布式KV集群,然后将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰,进而对所述LRU缓存区淘汰的指定元数据发送至聚合区,并对所述聚合区的指定元数据进行聚合,最后将聚合后的指定元数据写入后端存储器,提升了海量小对象数据的读写效率,降低了数据存储压力。
[0021]应当理本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种小对象数据的存储方法,其特征在于,包括:接收待存储的小对象数据;将所述小对象数据的元数据写入分布式KV集群;将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰;对所述LRU缓存区淘汰的指定元数据发送至聚合区,并对所述聚合区的指定元数据进行聚合;将聚合后的指定元数据写入后端存储器。2.如权利要求1所述的小对象数据的存储方法,其特征在于,所述分布式KV集群用于存储所述小对象数据的索引,所述小对象数据的存储方法还包括:在完成所述元数据的聚合后,触发所述分布式KV集群对聚合后的元数据的二级索引进行存储。3.如权利要求1所述的小对象数据的存储方法,其特征在于,按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:确定所述LRU缓存区的指定元数据的访问次数;判断所述访问次数是否满足所述预设淘汰条件;根据所述预设淘汰条件的判定结果,对所述LRU缓存区的指定元数据进行淘汰。4.如权利要求3所述的小对象数据的存储方法,其特征在于,将所述元数据中的指定元数据写入LRU缓存区,并按照预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:通过LRU
‑
K算法记录所有待缓存的指定元数据的访问历史;根据所述访问历史确定所述待缓存的指定元数据的访问次数;判断所述访问次数是否满足预设访问次数的要求;若判定所述访问次数满足所述预设访问次数的要求,则将满足访问次数要求的指定元数据写入LRU缓存区;按照所述预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰。5.如权利要求4所述的小对象数据的存储方法,其特征在于,按照所述预设淘汰条件对所述LRU缓存区的指定元数据进行淘汰包括:确定所述LRU缓存区的指定元数据的最后一次的访问时间;在检测到所述LRU缓存区的队列长度达到预设长度时,根据所述访问时间淘汰所述LRU缓存区中的指定元数据。6.如权...
【专利技术属性】
技术研发人员:侯飞,陈孝委,陈玉鹏,胡爱存,梁成武,邹晟,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。