CN114896215A - 元数据的存储方法及装置 - Google Patents

元数据的存储方法及装置 Download PDF

Info

Publication number
CN114896215A
CN114896215A CN202210432316.2A CN202210432316A CN114896215A CN 114896215 A CN114896215 A CN 114896215A CN 202210432316 A CN202210432316 A CN 202210432316A CN 114896215 A CN114896215 A CN 114896215A
Authority
CN
China
Prior art keywords
metadata
message queue
file
engine
sst
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
CN202210432316.2A
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210432316.2A priority Critical patent/CN114896215A/zh
Publication of CN114896215A publication Critical patent/CN114896215A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种元数据的存储方法及装置,该方法包括:接收消息队列的元数据的存储请求;将所述消息队列的元数据合并为有限排序字符串表SST文件;调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。通过该方式,由于将元数据合并为SST文件并采用KV引擎追加写入存储设备,从而提高了消息队列的元数据的读写性能。

Description

元数据的存储方法及装置
技术领域
本发明涉及信息处理技术领域,尤其涉及一种元数据的存储方法及装置。
背景技术
消息队列是分布式***的重要组成部分,通常用于解决应用耦合、异步消息、流量削峰等问题。随着越来越多的应用接入消息队列的处理机制,消息队列的元数据的存储问题亟需解决。
相关技术中,消息队列的元数据通常通过服务器的本地磁盘进行存储。当存储在本地磁盘的消息队列的元数据需要进行维护时,可以通过本地文件***,进行数据读写、数据删除以及消费点位的更新等操作。
然而,若将消息队列的元数据存储在服务器的本地磁盘时,每次元数据变更均需要全量更新并持久化到本地文件***,再序列化该消息队列的元数据文件并持久化到本地磁盘。当消息队列的元数据的数据量较多时,可能会存在消息队列的元数据的读写性能不高的问题。
发明内容
本申请实施例提供一种元数据的存储方法及装置,以解决现有技术中消息队列的元数据的读写性能不高的问题。
第一方面,本申请实施例提供一种元数据的存储方法,所述方法包括:
接收消息队列的元数据的存储请求;
将所述消息队列的元数据合并为有限排序字符串表SST文件;
调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。
一种可选的实施方式中,在所述将所述消息队列的元数据合并为有限排序字符串表SST文件之前,所述方法还包括:
确定所述消息队列的元数据的数据量是否大于数据量阈值;
所述将所述消息队列的元数据合并为有限排序字符串表SST文件,包括:
若所述消息队列的元数据的数据量大于所述数据量阈值,则将所述消息队列的元数据合并为有限排序字符串表SST文件。
一种可选的实施方式中,所述将所述消息队列的元数据合并为有限排序字符串表SST文件,包括:
调用所述KV引擎的日志化结构合并LSM树,将所述消息队列的元数据合并为有限排序字符串表SST文件;
其中,所述LSM树用于将所述消息队列的元数据由随机写入转换为顺序写入。
一种可选的实施方式中,在所述确定所述消息队列的元数据的数据量是否大于数据量阈值之后,所述方法还包括:
若所述消息队列的元数据的数据量小于或等于所述数据量阈值,则调用分布式消息中间件引擎中的消息队列模型,在本地文件***中存储所述消息队列的元数据对应的SST文件。
一种可选的实施方式中,在所述调用所述键值KV引擎将所述SST文件存储在存储设备的目标存储位置之前,所述方法还包括:
根据所述消息队列的标题数据、所述消息队列的标识符和所述消息队列的偏移数据,确定所述目标存储位置。
一种可选的实施方式中,在所述调用所述键值KV引擎将所述SST文件存储在存储设备的目标存储位置之后,所述方法还包括:
根据所述SST文件的存储时间信息和范围信息,在所述SST文件上添加删除标识;
调用所述KV引擎的过滤器删除包含所述删除标识的SST文件。
一种可选的实施方式中,所述消息队列的元数据包括所述消息队列的索引数据。
第二方面,本申请实施例提供一种元数据的存储装置,所述装置法包括:
接收模块,用于接收消息队列的元数据的存储请求;
处理模块,用于将所述消息队列的元数据合并为有限排序字符串表SST文件;
存储模块,用于调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。
一种可选的实施方式中,所述处理模块,具体用于确定所述消息队列的元数据的数据量是否大于数据量阈值;若所述消息队列的元数据的数据量大于所述数据量阈值,则将所述消息队列的元数据合并为有限排序字符串表SST文件。
一种可选的实施方式中,所述处理模块,具体用于调用所述KV引擎的日志化结构合并LSM树,将所述消息队列的元数据合并为有限排序字符串表SST文件;
其中,所述LSM树用于将所述消息队列的元数据由随机写入转换为顺序写入。
一种可选的实施方式中,所述处理模块,还用于若所述消息队列的元数据的数据量小于或等于所述数据量阈值,则调用分布式消息中间件引擎中的消息队列模型,在本地文件***中存储所述消息队列的元数据。
一种可选的实施方式中,所述处理模块,还用于根据所述消息队列的标题数据、所述消息队列的标识符和所述消息队列的偏移数据,确定所述目标存储位置。
一种可选的实施方式中,所述处理模块,还用于根据所述SST文件的存储时间信息和范围信息,在所述SST文件上添加删除标识;调用所述KV引擎的过滤器删除包含所述删除标识的SST文件。
一种可选的实施方式中,所述消息队列的元数据包括所述消息队列的索引数据。
第三方面,本申请还提供一种电子设备,包括:处理器,以及存储器;所述存储器用于存储所述处理器的计算机程序;所述处理器被配置为通过执行所述计算机程序来实现第一方面中任意一种可能的方法。
第四方面,本发明还提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行第一方面中任意一种可能的方法。
第五方面,本发明还提供一种计算机程序,所述计算机程序使得计算机执行如第一方面所述的方法。
第六方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计中所述的方法。
本申请实施例提供的一种元数据的存储方法及装置,服务器首先接收消息队列的元数据的存储请求。随后,服务器将所述消息队列的元数据合并为有限排序字符串表SST文件。最后,服务器调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。通过该方式,可以将小文件合并为SST文件,从而解决了大量小文件的读写瓶颈。并且,使用KV引擎将SST并行追加写入目标存储位置,从而减少了对大对象的分配以及序列化,降低了大对象的内存回收压力。基于此,本申请实施例提供的元数据的存储方法及装置,提高了消息队列的元数据的读写性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种元数据的存储方法的应用场景示意图;
图2为本申请实施例提供的一种元数据的存储方法的流程示意图;
图3为本申请实施例提供的另一种元数据的存储方法的流程示意图;
图4为本申请实施例提供的再一种元数据的存储方法的流程示意图;
图5为本申请实施例提供的一种元数据的存储装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
下面首先本申请实施例涉及的技术名称进行说明。
KV引擎:一种提供对KV数据结构高性能读写的组件。
生产终端:一种生产消息到消息队列的终端设备。
消费终端:一种从消费队列中获取消息进行消费的终端设备。
消息:一种承载通信的数据信息。
LMS树:一种将随机写入转换为顺序写入的存储结构。
SST文件:一种包含任意长度根据键值排好序的文件。
消息队列是分布式***的重要组成部分,通常用于解决应用耦合、异步消息、流量削峰等问题。随着越来越多的应用该接入消息队列的处理机制,消息队列的元数据的存储问题亟需解决。
下面提供两种常见的消息队列的元数据的存储方式。
在第一种消息队列的存储方式中,消息队列的元数据通常通过服务器的本地磁盘进行存储。当存储在本地磁盘的消息队列的元数据需要进行维护时,可以通过本地文件***,进行数据读写、数据删除以及消费点位的更新等操作。
当分布式消息中间件的消息队列的元数据通过本地文件***存储在本地磁盘中时,可以支持多种加载方式,例如,NIOFS、MMAP、SIMPLEFS、SMB等加载方式。在一些情况下,还可以直接将消息队列的元数据文件卡入(LOCK)内存的MMAP。
其中,分布式消息中间件可例如RocketMQ、Kafka等。
然而,针对将消息队列的元数据存储在服务器的本地磁盘,可能存在以下问题:
首先,每次元数据变更均需要全量更新并持久化到本地文件***,再JSON序列化该消息队列的元数据文件并持久化到本地磁盘。由于上述大对象分配对于消息队列***的内存垃圾回收压力大,从而导致消息队列的元数据的读写性能不高。
其次,由于使用分布式消息中间件的消息队列模型,当消息队列的元数据较多时,单机使用MMAP映射进行文件读写,存在文件数限制和大量小文件导致的读写性能急剧下降的问题。
再次,将消息队列的元数据存储在服务器的本地磁盘,消息***的故障恢复时间较长。并且,大量消息队列在本地文件***中会表现为大量文件描述符,从而占用大量的***资源。
在第二种消息队列的存储方式中,可以将所有消息队列的元数据持久化存储到中心化的数据库节点中。然而,由于使数据库成为整个消息队列***的单点,容易形成单点瓶颈。当针对大量小文件时,数据库***的性能受限。
基于此,上述两种消息队列的存储方式均存在消息队列的元数据的读写性能不高。
为解决上述问题,本申请实施例提供一种元数据的存储方法及装置,通过将消息队列的元数据合并为有限排序字符串表(Sorted String Table,SST)文件,并调用键值(Key Value,KV)引擎将SST文件存储在存储设备的目标存储位置。通过该方式,由于将小文件合并为SST文件,从而解决了大量小文件的读写瓶颈。并且,使用KV引擎将SST并行追加写入目标存储位置,从而减少了对大对象的分配以及序列化,降低了大对象的内存回收压力。基于此,本申请实施例提供的元数据的存储方法及装置,提高了消息队列的元数据的读写性能。
下面对本申请实施例涉及的元数据的存储方法的应用场景进行说明。
图1为本申请实施例提供的一种元数据的存储方法的应用场景示意图。如图1所示,终端设备101可以访问服务器102中的消息队列的元数据。当终端设备101向服务器102发送元数据的存储请求时,服务器102可以将消息队列的元数据合并为SST文件,并调用KV引擎将SST文件存储在服务器102的目标存储位置。
其中,终端设备101可以为平板电脑(pad)、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、智慧家庭(smart home)中的无线终端等。
服务器102可以是但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云。其中,云计算是分布式计算的一种,由一群松散耦合的计算机组成的一个超级虚拟计算机。
可以理解,上述元数据的存储方法以通过本申请实施例提供的元数据的存储装置实现,元数据的存储装置可以是某个设备的部分或全部,例如为上述服务器或服务器的处理器。
下面以集成或安装有相关执行代码的服务器为例,以具体地实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种元数据的存储方法的流程示意图。本实施例涉及的是服务器如何在存储设备中存储消息队列的元数据的具体过程。如图2所示,该元数据的存储方法包括:
S201、接收消息队列的元数据的存储请求。
在本申请中,当终端设备访问访问服务器的消息队列时,可以向服务器发送消息队列的元数据的存储请求。
应理解,本申请实施例对于发送消息队列的元数据的存储请求的终端设备不作限制,在一些实施例中,该终端设备可以为生产者终端,可以为消费者终端。其中,消费者终端为可以生成消息到消息队列的终端设备,消费终端可以为从消息队列中获取消息进行消费的终端设备。
其中,消息队列中的消息用于承载通信的数据信息。
相应的,消息队列的元数据用于描述消息队列中的消息。需要说明的是,本申请实施例中对于待存储的元数据的类型不作限制,示例性的,可例如索引数据、消费位点数据、标题(Topic)数据等。
S202、将消息队列的元数据合并为有限排序字符串表SST文件。
在本步骤中,当服务器接收到终端设备发送的消息队列的元数据时,可以将消息队列的元数据合并为SST文件,从而减少服务器的存储设备的读写压力。
其中,SST文件是一个内部包含有任意长度根据键值排好序的文件。
应理解,本申请实施例对于服务器如何将消息队列的元数据合并为有限排序字符串表SST文件不作限制,在一些实施例中,服务器可以调用KV引擎的日志化结构合并树(LogStructured Merge Tree,LSM)树,将消息队列的元数据合并为有限排序字符串表SST文件。
其中,LSM树用于将消息队列的元数据由随机写入转换为顺序写入,从而大大的提升了写入的速度,提供了高效的KV引擎。
应理解,本申请实施例对于KV引擎的类型也不作限制,在一些实施例中,KV引擎可以包括levelDB,rocksDB,badger等。
在一些实施例中,服务器还可以确定消息队列的元数据(例如Topic数据)的数据量是否大于数据量阈值。若消息队列的元数据的数据量大于量阈值,则将消息队列的元数据合并为有限排序字符串表SST文件,随后,调用KV引擎并行追加写入地将SST文件存储在存储设备的目标存储位置。若确定消息队列的元数据的数据量小于或等于量阈值,则调用分布式消息中间件引擎中的消息队列(Queue)模型,在本地文件***中存储消息队列的元数据对应的SST文件。其中,分布式消息中间件可例如RocketMQ、Kafka等。
需要说明的是,本申请实施例对于数据量阈值不作限制,可以根据实际情况具体设置。示例性的,当元数据超过预设的数量级时,可以使用KV引擎对元数据进行合并后再存储,示例性的,当元数据未超过预设的数量级时,可以使用分布式消息中间件引擎中的Queue模型进行存储。
S203、调用键值KV引擎将SST文件存储在存储设备的目标存储位置。
在本步骤中,当服务器将消息队列的元数据合并为有限排序字符串表SST文件后,可以调用KV引擎将SST文件存储在存储设备的目标存储位置。
应理解,本申请实施例对于如何确定目标存储位置不作限制,在一些实施例中,服务器可以根据消息队列的标题(Topic)数据、消息队列的标识符(queue Id)和消息队列的偏移(offset)数据,确定目标存储位置。
其中,消息队列的标题数据、消息队列的标识符可以用于确定待存储的元数据的消息队列,偏移数据用于确定待存储的元数据的在消息队列的元数据中的存储位置。
应理解,本申请实施例涉及的KV引擎,在存储设备上的写入方式为并行追加写入。通过定制RocksDB的等KV引擎的能力,使其只会并行追加写入,而不会对数据进行原地更新,从而大大降低了KV引擎的合并(compaction)周期,提高了数据读取的能力。
此外,由于有KV引擎将队列消息的元数据并行追加写入存储设备,从而可以不用严格控制分布式数据库的相关操作,进而提高了消息***的队列消息的元数据的整体写入的性能和吞吐。
需要说明的是,KV引擎的底层可以使用文件***进行消息队列的元数据的存储,当元数据的文件被破坏时,单机消息队列的可以通过提交日志(commitLog)文件进行恢复。
在另一些实施例中,在调用KV引擎将SST文件存储在存储设备的目标存储位置之后,服务器还可以为存储设备上存储的SST文件设置存储有效期和待规整的范围信息。根据SST文件的存储时间信息和范围信息,在SST文件上添加删除标识,从而调用KV引擎的过滤器(compaction filter)删除包含删除标识的SST文件。
其中,上述过滤器用于在KV引擎将元数据的合并前将过期的数据进行清理。
应理解,本申请实施例对于SST文件的存储有效期不作限制,可以根据实际情况具体设置,示例性的,可以为1天、3天、7天等。
示例性的,若SST文件的待规整的范围信息为第1-100个,有效期为7天,则可以将第1-100个SST中存储时间超过7天的SST标记上删除标记,从而调用KV引擎的过滤器删除上述包含删除标识的SST文件
在本申请中,通过为队列消息的元数据设置存储有效期和范围信息,从而可以将过期的元数据删除,从而提高了读写性能。同时,不会随着Topic数据的增长而导致小文件数据的线性增长,保证了***的性能。
本申请实施例提供的元数据的存储方法,服务器首先接收消息队列的元数据的存储请求。随后,服务器将消息队列的元数据合并为有限排序字符串表SST文件。最后,服务器调用键值KV引擎将SST文件存储在存储设备的目标存储位置,KV引擎在存储设备上的写入方式为并行追加写入。通过该方式,可以将小文件合并为SST文件,从而解决了大量小文件的读写瓶颈。并且,使用KV引擎将SST并行追加写入目标存储位置,从而减少了对大对象的分配以及序列化,降低了大对象的内存回收压力。基于此,本申请实施例提供的元数据的存储方法及装置,提高了消息队列的元数据的读写性能。
在上述实施例的基础上,还可以基于数据量来确定队列消息的元数据的存储方式。图3为本申请实施例提供的另一种元数据的存储方法的流程示意图。如图3所示,该元数据的存储方法包括:
S301、接收消息队列的元数据的存储请求。
S302、确定消息队列的元数据的数据量是否大于数据量阈值。
若是,则执行步骤S304,若否,则执行步骤S303.
S303、调用分布式消息中间件引擎中的消息队列模型,在本地文件***中存储消息队列的元数据对应的SST文件。
S304、将消息队列的元数据合并为有限排序字符串表SST文件。
S305、调用键值KV引擎将SST文件存储在存储设备的目标存储位置,该KV引擎在存储设备上的写入方式为并行追加写入。
步骤S301至步骤S305的技术名词、技术效果、技术特征,以及可选实施方式,可参照图2所示的步骤S201至S203理解,对于重复的信息,在此不再累述。
在上述实施例的基础上,本申请实施例提供的元数据的存储方法,还以对存储的元数据进行定期清理。图4为本申请实施例提供的再一种元数据的存储方法的流程示意图。如图4所示,该元数据的存储方法包括:
S401、接收消息队列的元数据的存储请求。
S402、将消息队列的元数据合并为有限排序字符串表SST文件。
S403、调用键值KV引擎将SST文件存储在存储设备的目标存储位置,KV引擎在存储设备上的写入方式为并行追加写入。
步骤S401至步骤S403的技术名词、技术效果、技术特征,以及可选实施方式,可参照图2所示的步骤S201至S203理解,对于重复的信息,在此不再累述。
S404、根据SST文件的存储时间信息和范围信息,在SST文件上添加删除标识。
应理解,本申请实施例对于SST文件的存储有效期不作限制,可以根据实际情况具体设置,示例性的,可以为1天、3天、7天等。
在一些实施例中,上述删除标识,具体可以包括墓碑标识。其可以在消息队列的元数据被合并为SST被存储到存储设备上时被添加,服务器按照预设的时间间隔(例如10分钟、30分钟、1小时等)或者在预设的时间点(例如,每天24点整)检测一次存储在存储设备上的SST的墓碑被标识,若确定该SST文件超过存储有效期且在范围信息指示的待规整的范围内,可以删除该SST文件。
在另一些实施例中,服务器还可以将用户感兴趣的文件设置在范围信息指示的范围外,从而长时间保存该文件。
在本申请中,通过为队列消息的元数据设置存储有效期,从而可以将过期的元数据删除,从而提高了读写性能。同时,不会随着Topic数据的增长而导致小文件数据的线性增长,保证了***的性能。
S405、调用KV引擎的过滤器删除包含删除标识的SST文件。
其中,上述过滤器用于在元数据的合并前将过期的数据进行清理。
本申请实施例提供的元数据的存储方法,服务器首先接收消息队列的元数据的存储请求。随后,服务器将消息队列的元数据合并为有限排序字符串表SST文件。最后,服务器调用键值KV引擎将SST文件存储在存储设备的目标存储位置,KV引擎在存储设备上的写入方式为并行追加写入。通过该方式,可以将小文件合并为SST文件,从而解决了大量小文件的读写瓶颈。并且,使用KV引擎将SST并行追加写入目标存储位置,从而减少了对大对象的分配以及序列化,降低了大对象的内存回收压力。基于此,本申请实施例提供的元数据的存储方法及装置,提高了消息队列的元数据的读写性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本申请实施例提供的一种元数据的存储装置的结构示意图。该元数据的存储装置可以通过软件、硬件或者两者的结合实现,以执行上述实施例中元数据的存储方法。如图5所示,该元数据的存储装置500包括:接收模块501、处理模块502和存储模块503。
一种可选的实施方式中,处理模块,具体用于确定消息队列的元数据的数据量是否大于数据量阈值;若消息队列的元数据的数据量大于量阈值,则将消息队列的元数据合并为有限排序字符串表SST文件。
一种可选的实施方式中,处理模块,具体用于调用KV引擎的日志化结构合并LSM树,将消息队列的元数据合并为有限排序字符串表SST文件;
其中,LSM树用于将消息队列的元数据由随机写入转换为顺序写入。
一种可选的实施方式中,处理模块,还用于若确定消息队列的元数据的数据量小于或等于量阈值,则调用分布式消息中间件引擎中的消息队列模型,在本地文件***中存储消息队列的元数据。
一种可选的实施方式中,处理模块,还用于根据消息队列的标题数据、消息队列的标识符和消息队列的偏移数据,确定目标存储位置。
一种可选的实施方式中,处理模块,还用于根据SST文件的存储时间信息和范围信息,在SST文件上添加删除标识;调用KV引擎的过滤器删除包含删除标识的SST文件。
一种可选的实施方式中,消息队列的元数据包括消息队列的索引数据。
需要说明的,图5示实施例提供的元数据的存储装置,可用于执行上述任意实施例所提供的元数据的存储方法,具体实现方式和技术效果类似,这里不再进行赘述。
图6为本申请实施例提供的一种电子设备的结构示意图。如图6示,该电子设备可以包括:多个处理器601和存储器602。图6的是以一个处理器为例的电子设备。
存储器602,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令,被配置为:
接收消息队列的元数据的存储请求;
将消息队列的元数据合并为有限排序字符串表SST文件;
调用键值KV引擎将SST文件存储在存储设备的目标存储位置,KV引擎在存储设备上的写入方式为并行追加写入。
存储器602可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如多个磁盘存储器。
处理器601用于执行存储器602存储的计算机执行指令,以实现上述元数据的存储方法;
其中,处理器601可能是一个处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器602和处理器601独立实现,则通信接口、存储器602和处理器601可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器602和处理器601集成在一块芯片上实现,则通信接口、存储器602和处理器601可以通过内部接口完成通信。
本申请实施例提供的电子设备,可以为上述服务器。
本申请实施例还提供了一种芯片,包括处理器和接口。其中接口用于输入输出处理器所处理的数据或指令。处理器用于执行以上方法实施例中提供的元数据的存储方法。该芯片可以应用于元数据的存储装置中。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序信息,程序信息用于上述元数据的存储方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述的元数据的存储方法。
本申请实施例还提供了一种计算机程序,计算机程序使得计算机执行上述的元数据的存储方法。
本申请实施例还提供一种队列消息的存储***,包括服务器和终端设备,该服务器执行上述元数据的存储方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种元数据的存储方法,其特征在于,所述方法包括:
接收消息队列的元数据的存储请求;
将所述消息队列的元数据合并为有限排序字符串表SST文件;
调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。
2.根据权利要求1所述的方法,其特征在于,在所述将所述消息队列的元数据合并为有限排序字符串表SST文件之前,所述方法还包括:
确定所述消息队列的元数据的数据量是否大于数据量阈值;
所述将所述消息队列的元数据合并为有限排序字符串表SST文件,包括:
若所述消息队列的元数据的数据量大于所述数据量阈值,则将所述消息队列的元数据合并为所述SST文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述消息队列的元数据合并为所述SST文件,包括:
调用所述KV引擎的日志化结构合并LSM树,将所述消息队列的元数据合并为有所述SST文件;
其中,所述LSM树用于将所述消息队列的元数据由随机写入转换为顺序写入。
4.根据权利要求2所述的方法,其特征在于,在所述确定所述消息队列的元数据的数据量是否大于数据量阈值之后,所述方法还包括:
若所述消息队列的元数据的数据量小于或等于所述数据量阈值,则调用分布式消息中间件引擎中的消息队列模型,在本地文件***中存储所述消息队列的元数据对应的SST文件。
5.根据权利要求1所述的方法,其特征在于,在所述调用所述键值KV引擎将所述SST文件存储在存储设备的目标存储位置之前,所述方法还包括:
根据所述消息队列的标题数据、所述消息队列的标识符和所述消息队列的偏移数据,确定所述目标存储位置。
6.根据权利要求1所述的方法,其特征在于,在所述调用所述键值KV引擎将所述SST文件存储在存储设备的目标存储位置之后,所述方法还包括:
根据所述SST文件的存储时间信息和范围信息,在所述SST文件上添加删除标识;
调用所述KV引擎的过滤器删除包含所述删除标识的SST文件。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述消息队列的元数据包括所述消息队列的索引数据。
8.一种元数据的存储装置,其特征在于,所述装置包括:
接收模块,用于接收消息队列的元数据的存储请求;
处理模块,用于将所述消息队列的元数据合并为有限排序字符串表SST文件;
存储模块,用于调用键值KV引擎将所述SST文件存储在存储设备的目标存储位置,所述KV引擎在所述存储设备上的写入方式为并行追加写入。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
CN202210432316.2A 2022-04-22 2022-04-22 元数据的存储方法及装置 Pending CN114896215A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210432316.2A CN114896215A (zh) 2022-04-22 2022-04-22 元数据的存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210432316.2A CN114896215A (zh) 2022-04-22 2022-04-22 元数据的存储方法及装置

Publications (1)

Publication Number Publication Date
CN114896215A true CN114896215A (zh) 2022-08-12

Family

ID=82717024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210432316.2A Pending CN114896215A (zh) 2022-04-22 2022-04-22 元数据的存储方法及装置

Country Status (1)

Country Link
CN (1) CN114896215A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116048396A (zh) * 2022-12-30 2023-05-02 蜂巢科技(南通)有限公司 基于日志结构化合并树的数据存储装置和存储控制方法
WO2024130885A1 (zh) * 2022-12-22 2024-06-27 上海爱数信息技术股份有限公司 适用于块设备的leveldb存储方法及存储***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024130885A1 (zh) * 2022-12-22 2024-06-27 上海爱数信息技术股份有限公司 适用于块设备的leveldb存储方法及存储***
CN116048396A (zh) * 2022-12-30 2023-05-02 蜂巢科技(南通)有限公司 基于日志结构化合并树的数据存储装置和存储控制方法
CN116048396B (zh) * 2022-12-30 2024-03-08 蜂巢科技(南通)有限公司 基于日志结构化合并树的数据存储装置和存储控制方法

Similar Documents

Publication Publication Date Title
CN109254733B (zh) 用于存储数据的方法、装置和***
US9110909B2 (en) File level hierarchical storage management system, method, and apparatus
CN101686209B (zh) 消息转发***中存储消息的方法和装置
CN110018998B (zh) 一种文件管理方法、***及电子设备和存储介质
US11314689B2 (en) Method, apparatus, and computer program product for indexing a file
CN114896215A (zh) 元数据的存储方法及装置
CN109213432B (zh) 利用日志结构合并树将数据写入的存储设备及其方法
CN110109873B (zh) 一种用于消息队列的文件管理方法
CN111177143B (zh) 键值数据存储方法、装置、存储介质与电子设备
US9514170B1 (en) Priority queue using two differently-indexed single-index tables
CN113364877B (zh) 数据处理方法、装置、电子设备和介质
WO2023040399A1 (zh) 一种业务持久化方法及装置
CN107704573A (zh) 一种与业务耦合的智能缓存方法
CN115470156A (zh) 基于rdma的内存使用方法、***、电子设备和存储介质
CN115114232A (zh) 一种历史版本对象列举方法、装置及其介质
CN113312386B (zh) 一种基于分布式消息的批量入库方法
CN108829345B (zh) 日志文件的数据处理方法和终端设备
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN112000971B (zh) 一种文件权限记录方法、***及相关装置
CN111752941B (zh) 一种数据存储、访问方法、装置、服务器及存储介质
CN110413689B (zh) 一种内存数据库的多节点数据同步方法与装置
CN111427920A (zh) 数据采集方法、装置、***、计算机设备及存储介质
CN113051244B (zh) 数据访问方法和装置、数据获取方法和装置
CN115904211A (zh) 一种存储***、数据处理方法及相关设备
CN113849482A (zh) 一种数据迁移方法、装置及电子设备

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