消息持久化存储方法及装置制造方法及图纸

技术编号:31313542 阅读:15 留言:0更新日期:2021-12-12 21:51
本发明专利技术实施例公开了一种消息持久化存储方法及装置,该方法包括:根据待存储消息的消息ID以及平衡二叉树的个数,确定所述待存储消息对应的平衡二叉树,其中,所述平衡二叉树的个数由消息队列的最大深度以及哈希深度所确定;将所述待存储消息存入到所述消息队列中,并将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中。本发明专利技术采用平衡二叉树作为消息的索引提高了消息查找的效率,并且能够有效的利用磁盘资源。够有效的利用磁盘资源。够有效的利用磁盘资源。

【技术实现步骤摘要】
消息持久化存储方法及装置


[0001]本专利技术涉及消息队列,具体而言,涉及一种消息持久化存储方法及装置。

技术介绍

[0002]消息队列(消息中间件)通过记录文件来实现持久化,保证消息中间件宕机重启后,已经写入队列的消息不丢失。实际应用中,由于消息要写入文件,不同的处理机制会导致处理速度,硬盘空间使用率,内存使用率有较大的不同。
[0003]目前的消息持久化存储方式为顺序写入磁盘并使用稀疏存储方式索引。将消息顺序写入文件中,使用稀疏存储方式进行索引。读取消息时,先找到消息存放的位置区间,通过二分法查找消息在文件中的偏移量,获取对应消息。
[0004]目前的这种消息持久化存储方式,顺序写入文件,导致除非该文件中所有消息都被消费,才可以删除文件,建立新的文件存储。如果文件中仅有几条消息长期未被消费,会导致大量磁盘空间浪费。稀疏存储方式索引也需要将索引写入文件,同样占用磁盘空间。
[0005]由此可见,目前的消息持久化存储方式存在磁盘空间浪费的情况,需要对现有的这种方式进行改进。

技术实现思路

[0006]本专利技术为了解决上述
技术介绍
中的至少一个技术问题,提出了一种消息持久化存储方法及装置。
[0007]为了实现上述目的,根据本专利技术的一个方面,提供了一种消息持久化存储方法,该方法包括:
[0008]根据待存储消息的消息ID以及平衡二叉树的个数,确定所述待存储消息对应的平衡二叉树,其中,所述平衡二叉树的个数由消息队列的最大深度以及哈希深度所确定;
[0009]将所述待存储消息存入到所述消息队列中,并将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中。
[0010]可选的,该消息持久化存储方法,还包括:
[0011]根据查询目标消息的消息ID以及所述平衡二叉树的个数,确定所述查询目标消息对应的平衡二叉树;
[0012]从所述查询目标消息对应的平衡二叉树中查找出所述查询目标消息对应的信息;
[0013]根据该查找出的信息从所述消息队列中查找所述查询目标消息。
[0014]可选的,该消息持久化存储方法,还包括:
[0015]在宕机恢复时,根据所述消息队列的最大深度以及哈希深度确定平衡二叉树的个数;
[0016]生成该确定出的平衡二叉树的个数个平衡二叉树;
[0017]获取存储在所述消息队列中的每个消息各自对应的信息,并根据每个消息各自的消息ID确定出每个消息各自对应的平衡二叉树;
[0018]将每个消息各自对应的信息存入到消息对应的平衡二叉树中。
[0019]可选的,所述将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中,具体包括:
[0020]根据所述待存储消息的消息ID确定出平衡二叉树中的存储目标节点;
[0021]将所述待存储消息的信息存入所述存储目标节点中。
[0022]可选的,所述将所述待存储消息存入到所述消息队列中,具体包括:
[0023]根据所述待存储消息的大小以及所述消息队列中文件块的大小确定出分片数量;
[0024]若所述分片数量等于1,则将所述待存储消息存入到所述消息队列的文件块中;
[0025]若所述分片数量大于1,则将所述待存储消息对应的各分片分别存入到所述消息队列的文件块中。
[0026]可选的,该消息持久化存储方法,还包括:
[0027]若所述分片数量大于1,则将所述待存储消息对应的分片存储位置信息存入所述待存储消息对应的平衡二叉树的节点链表中。
[0028]为了实现上述目的,根据本专利技术的另一方面,提供了一种消息持久化存储装置,该装置包括:
[0029]第一平衡二叉树确定模块,用于根据待存储消息的消息ID以及平衡二叉树的个数,确定所述待存储消息对应的平衡二叉树,其中,所述平衡二叉树的个数由消息队列的最大深度以及哈希深度所确定;
[0030]信息存储模块,用于将所述待存储消息存入到所述消息队列中,并将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中。
[0031]可选的,该消息持久化存储装置,还包括:
[0032]第二平衡二叉树确定模块,用于根据查询目标消息的消息ID以及所述平衡二叉树的个数,确定所述查询目标消息对应的平衡二叉树;
[0033]信息查找模块,用于从所述查询目标消息对应的平衡二叉树中查找出所述查询目标消息对应的信息;
[0034]消息查找模块,用于根据该查找出的信息从所述消息队列中查找所述查询目标消息。
[0035]为了实现上述目的,根据本专利技术的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述消息持久化存储方法中的步骤。
[0036]为了实现上述目的,根据本专利技术的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述消息持久化存储方法中的步骤。
[0037]本专利技术的有益效果为:
[0038]本专利技术通过建立平衡二叉树作为消息的索引,本专利技术在将消息存入消息队列中后,将消息的信息存入到消息对应的平衡二叉树中,无需将消息的索引单独写一个文件,本专利技术采用平衡二叉树作为消息的索引提高了消息查找的效率,并且能够有效的利用磁盘资源。
附图说明
[0039]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0040]图1是本专利技术实施例消息持久化存储方法的第一流程图;
[0041]图2是本专利技术实施例消息持久化存储方法的第二流程图;
[0042]图3是本专利技术实施例消息持久化存储方法的第三流程图;
[0043]图4是本专利技术实施例消息持久化存储装置的第一结构框图;
[0044]图5是本专利技术实施例消息持久化存储装置的第二结构框图;
[0045]图6是本专利技术实施例计算机设备示意图。
具体实施方式
[0046]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0047]本领域内的技术人员应明白,本专利技术的实施例可提供为方法、系统、或计算机程序产品。因此,本专利技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本专利技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息持久化存储方法,其特征在于,包括:根据待存储消息的消息ID以及平衡二叉树的个数,确定所述待存储消息对应的平衡二叉树,其中,所述平衡二叉树的个数由消息队列的最大深度以及哈希深度所确定;将所述待存储消息存入到所述消息队列中,并将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中。2.根据权利要求1所述的消息持久化存储方法,其特征在于,还包括:根据查询目标消息的消息ID以及所述平衡二叉树的个数,确定所述查询目标消息对应的平衡二叉树;从所述查询目标消息对应的平衡二叉树中查找出所述查询目标消息对应的信息;根据该查找出的信息从所述消息队列中查找所述查询目标消息。3.根据权利要求1所述的消息持久化存储方法,其特征在于,还包括:在宕机恢复时,根据所述消息队列的最大深度以及哈希深度确定平衡二叉树的个数;生成该确定出的平衡二叉树的个数个平衡二叉树;获取存储在所述消息队列中的每个消息各自对应的信息,并根据每个消息各自的消息ID确定出每个消息各自对应的平衡二叉树;将每个消息各自对应的信息存入到消息对应的平衡二叉树中。4.根据权利要求1所述的消息持久化存储方法,其特征在于,所述将所述待存储消息的信息存入所述待存储消息对应的平衡二叉树中,具体包括:根据所述待存储消息的消息ID确定出平衡二叉树中的存储目标节点;将所述待存储消息的信息存入所述存储目标节点中。5.根据权利要求1所述的消息持久化存储方法,其特征在于,所述将所述待存储消息存入到所述消息队列中,具体包括:根据所述待存储消息的大小以及所述消息队列中文件块的大小确定出分片数量;若所述分片数...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:中国人民银行清算总中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1