CN109739822B - 消息存储方法、装置、设备及存储介质 - Google Patents
消息存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109739822B CN109739822B CN201811597366.6A CN201811597366A CN109739822B CN 109739822 B CN109739822 B CN 109739822B CN 201811597366 A CN201811597366 A CN 201811597366A CN 109739822 B CN109739822 B CN 109739822B
- Authority
- CN
- China
- Prior art keywords
- message
- stored
- increment
- self
- sequence value
- 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.)
- Active
Links
Images
Abstract
本发明实施例公开了一种消息存储方法、装置、设备及存储介质。该方法包括:获得待存储消息;将待存储消息存储在消息日志文件中;从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址;根据偏移地址,获取偏移地址对应的消息的自增消息序列值;比较获得的自增消息序列值与待存储消息对应的自增消息序列值;根据比较结果,生成待存储消息对应的消息索引信息;将消息索引信息存储在消息索引文件中。本发明实施例的消息存储方法、装置、设备及存储介质,能够提高消息存储系统的性能,减少消息存储系统维护难度,提高消息存储系统的处理效率。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种消息存储方法、装置、设备及存储介质。
背景技术
消息系统一般包含三个角色:消息发送者、消息接收者和消息队列。其中,消息发送者生产并发送消息至消息队列,消息队列存储消息并建立消息索引,消息接收者接收消息。消息队列作为在消息的传输过程中保存消息的容器,在整个消息系统中占据核心地位,消息队列的设计直接关系到整个消息系统的性能。
当前主流的消息存储系统中,消息的存储一般基于关系型数据库和文件系统。基于关系型数据库的消息存储系统,消息会被直接存储在对应的表中,对消息的读写操作,需要通过对表的操作来完成;基于文件系统的消息存储系统,一般会有日志文件和索引文件组成,消息存储在日志文件中,通过索引文件对消息进行索引。
基于关系型数据库存储的消息,受限于关系型数据库本身的能力,一般性能都比较差,应用数据修改可能会触发数据库数据结构修改,带来共享数据的应用改造,增加维护集成难度。基于文件系统存储的消息,一般存储和索引结构设计复杂,维护难度较高。
发明内容
本发明实施例提供一种消息存储方法、装置、设备及存储介质,能够提高消息存储系统的性能,减少消息存储系统维护难度,提高消息存储系统的处理效率。
一方面,本发明实施例提供了一种消息存储方法,方法包括:
获得待存储消息;
将待存储消息存储在消息日志文件中;
从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址;
根据偏移地址,获取偏移地址对应的消息的自增消息序列值;
比较获得的自增消息序列值与待存储消息对应的自增消息序列值;
根据比较结果,生成待存储消息对应的消息索引信息;
将消息索引信息存储在消息索引文件中。
在本发明的一个实施例中,根据比较结果,生成待存储消息对应的消息索引信息,包括:
若获得的自增消息序列值小于待存储消息对应的自增消息序列值,根据待存储消息对应的自增消息序列值、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,本发明实施例提供的消息存储方法还包括:
将检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为待存储消息在消息日志文件中的偏移地址。
在本发明的一个实施例中,根据比较结果,生成待存储消息对应的消息索引信息,包括:
若获得的自增消息序列值不小于待存储消息对应的自增消息序列值,将待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据标识信息、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,消息日志文件的文件大小为M字节,消息索引文件的文件大小为N字节,消息索引文件中每条消息索引信息占用的字节数相同。
在本发明的一个实施例中,消息日志文件的文件名称为消息日志文件的起始偏移量;消息索引文件的文件名称为消息索引文件的起始偏移量。
另一方面,本发明实施例提供了一种消息存储装置,装置包括:
第一获取模块,用于获取待存储消息;
第一存储模块,用于将待存储消息存储在消息日志文件中;
提取模块,用于从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址;
第二获取模块,用于根据偏移地址,获取偏移地址对应的消息的自增消息序列值;
比较模块,用于比较获得的自增消息序列值与待存储消息对应的自增消息序列值;
生成模块,用于根据比较结果,生成待存储消息对应的消息索引信息;
第二存储模块,用于将消息索引信息存储在消息索引文件中。
在本发明的一个实施例中,生成模块,具体用于:
若获得的自增消息序列值小于待存储消息对应的自增消息序列值,根据待存储消息对应的自增消息序列值、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,本发明实施例提供的消息存储装置还包括:
修改模块,用于将检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为待存储消息在消息日志文件中的偏移地址。
在本发明的一个实施例中,生成模块,具体用于:
若获得的自增消息序列值不小于待存储消息对应的自增消息序列值,将待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据标识信息、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,消息日志文件的文件大小为M字节,消息索引文件的文件大小为N字节,消息索引文件中每条消息索引信息占用的字节数相同。
在本发明的一个实施例中,消息日志文件的文件名称为消息日志文件的起始偏移量;消息索引文件的文件名称为消息索引文件的起始偏移量。
再一方面,本发明实施例提供一种消息存储设备,设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;
处理器执行计算机程序时实现本发明实施例提供的消息存储方法。
再一方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现本发明实施例提供的消息存储方法。
本发明实施例的消息存储方法、装置、设备及存储介质,能够提高消息存储系统的性能,减少消息存储系统维护难度,提高消息存储系统的处理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提供的消息存储方法的流程示意图;
图2示出了本发明实施例提供的消息存储的目录结构;
图3示出了本发明实施例提供的消息存储装置的结构示意图;
图4示出了能够实现根据本发明实施例的消息存储方法及装置的计算设备的示例性硬件架构的结构图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
图1示出了本发明实施例提供的消息存储方法的流程示意图。消息存储方法可以包括:
S101:获得待存储消息。
S102:将待存储消息存储在消息日志文件中。
S103:从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址。
S104:根据偏移地址,获取偏移地址对应的消息的自增消息序列值。
S105:比较获得的自增消息序列值与待存储消息对应的自增消息序列值。
S106:根据比较结果,生成待存储消息对应的消息索引信息。
S107:将消息索引信息存储在消息索引文件中。
在本发明的一个实施例中,消息生产者在生产消息时,可以在消息中设置一个自增消息序列值,用于校验该消息是否为重复消息。
在本发明的一个实施例中,本发明实施例创建三个文件,分别为消息日志文件、消息索引文件和检查点文件。
其中,消息日志文件用于存储消息;消息索引文件用于存储消息对应的消息索引信息;检查点文件用于存储最大自增消息序列值对应的消息在消息日志文件中的偏移地址。
在本发明的一个实施例中,消息日志文件采用定长文件结构,每个消息日志文件大小固定为M字节(比如1GB);消息日志文件的文件名固定为20个字符,以所在文件的起始偏移量作为文件名,不足20字符的左面填充0。
以每个消息日志文件大小为1GB为例,前三个消息日志文件的文件名分别为:00000000000000000000、00000000001073741824和00000000002147483648。
可以理解的是,名称为00000000000000000000的消息日志文件的起始偏移量为0;名称为00000000001073741824的消息日志文件的起始偏移量为00000000001073741824;名称为00000000002147483648的消息日志文件的起始偏移量为00000000002147483648。
在本发明的一个实施例中,消息日志文件依次存储消息,每条消息的存储格式如表1所示。
表1
4字节 | 4字节 | X字节 |
Size | ChechSum | msg |
其中,Size为消息占用的字节数与消息对应的校验和(ChechSum)占用的字节数之和,占用4个字节;ChechSum为消息对应的校验和,占用4个字节;msg为消息本身,占用X字节。
在本发明的一个实施例中,将新消息存储在消息日志文件中时,采用顺序写的方式,新消息依次添加在消息日志文件尾部。
在本发明的一个实施例中,可以根据公式(1)计算消息所在的消息日志文件和公式(2)计算消息在消息日志文件中的偏移地址。
d1=(a1-c1)/b1 (1)
e1=a1%b1 (2)
其中,公式(1)和公式(2)中,d1为消息所在的消息日志文件,e1为消息在消息日志文件中的偏移地址,a1为消息物理偏移地址,b1为消息日志文件大小,c1为当前消息日志文件列表中第一个消息日志文件的起始偏移地址。公式(1)中的/表示除取整运算,公式(2)中的%表示除取余运算。
在本发明的一个实施例中,消息索引文件采用定长文件结构,每个消息索引文件大小固定为N字节。假设每个消息索引文件固定存储500万条消息索引信息,每条消息索引信息占用20字节,则每个消息索引文件大小为5000000*20/1024/1024=96MB,每条消息索引信息占用的字节数相同均为20字节。
在本发明的一个实施例中,消息索引文件的文件名固定为20个字符,以所在文件的起始偏移量作为文件名,不足20字符的左面填充0。
以每个消息日志文件大小为96MB为例,前三个消息索引文件的文件名分别为:00000000000000000000、00000000000100663296和00000000000201326592。
可以理解的是,名称为00000000000000000000的消息索引文件的起始偏移量为0;名称为00000000000100663296的消息索引文件的起始偏移量为00000000000100663296;名称为00000000000201326592的消息索引文件的起始偏移量为00000000000201326592。
在本发明的一个实施例中,消息索引文件依次存储消息索引信息,每条消息索引信息的存储格式如表2所示。
表2
8字节 | 4字节 | 8字节 |
Offset | Size | Seq |
其中,Offset为消息在消息日志文件中的偏移地址,占用8个字节;Size为消息占用的字节数与消息对应的校验和(ChechSum)占用的字节数之和,占用4个字节;Seq为消息对应的自增消息序列值,占用8字节。
在本发明的一个实施例中,将新消息对应消息索引信息的存储在消息索引文件中时,采用顺序写的方式,新消息对应消息索引信息依次添加在消息索引文件尾部。
在本发明的一个实施例中,可以根据公式(3)计算消息索引信息所在的消息索引文件和公式(4)计算消息索引信息在消息索引文件中的偏移地址。
d2=(a2×20-c2)/b2 (3)
e2=a2×20%b2 (4)
其中,公式(3)和公式(4)中,d2为消息索引信息所在的消息索引文件,e2为消息索引信息在消息索引文件中的偏移地址,a2为消息索引信息逻辑偏移地址,b2为消息索引文件大小,c2为当前消息索引文件列表中第一个消息索引文件的起始偏移地址。公式(3)和公式(4)中的20为每条消息索引信息的长度,即每条消息索引信息占用20个字节。公式(3)中的/表示除取整运算,公式(4)中的%表示除取余运算。
在本发明的一个实施例中,检查点文件采用定长文件结构,大小为512K;文件名固定为checkpoint,检查点文件中存储最大自增消息序列值对应的消息在消息日志文件中的偏移地址。
基于上述,本发明实施例提供的消息存储对应的文件目录结构如图2所示。图2示出了本发明实施例提供的消息存储的目录结构。
其中,图2所示的目录结构中包括:消息日志文件、消息索引文件、和检查点文件checkpoint。其中,前三个消息日志文件的文件名分别为:00000000000000000000、00000000001073741824、00000000002147483648。前三个消息索引文件的文件名分别为:00000000000000000000、00000000000100663296和00000000000201326592。
在本发明的一个实施例中,根据比较结果,生成待存储消息对应的消息索引信息,可以包括:若获得的自增消息序列值小于待存储消息对应的自增消息序列值,根据待存储消息对应的自增消息序列值、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
当消息生产者在生产消息时,可以在消息中设置一个自增消息序列值Seq。假设待存储消息的自增消息序列值Seq为100。按照上述表1的格式将该待存储消息存储在消息日志文件中。从检查点文件checkpoint中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址,然后根据该偏移地址,从消息日志文件获取该偏移地址对应的消息,进而可以获得该消息对应的自增消息序列值Seq,假设此时获取到的自增消息序列值Seq为99。待存储消息的自增消息序列值Seq大于此时获取到的自增消息序列值Seq 99,表示待存储消息不是重复消息,则按照上述表2的格式将该待存储消息对应的消息索引信息存储在消息索引文件。
在本发明的一个实施例中,本发明实施例提供的消息存储方法还可以包括:将检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为待存储消息在消息日志文件中的偏移地址。
在本发明的一个实施例中,根据比较结果,生成待存储消息对应的消息索引信息,可以包括:若获得的自增消息序列值不小于待存储消息对应的自增消息序列值,将待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据标识信息、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
示例性的,假设待存储消息的自增消息序列值Seq为100。按照上述表1的格式将该待存储消息存储在消息日志文件中。从检查点文件checkpoint中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址,然后根据该偏移地址,从消息日志文件获取该偏移地址对应的消息,进而可以获得该消息对应的自增消息序列值Seq,假设此时获取到的自增消息序列值Seq为200。待存储消息的自增消息序列值Seq小于此时获取到的自增消息序列值Seq 200,表示待存储消息是重复消息,则待存储消息的自增消息序列值Seq修改为用于表示消息为重复消息的标识信息(比如-1),然后按照上述表2的格式将该待存储消息对应的消息索引信息存储在消息索引文件。
本发明实施例中的每条消息索引信息仅占用20字节,消息索引文件中的消息索引信息能够全部映射到内存中,因此能够提高消息存储系统的处理效率。
通过本发明实施例提供的三文件(消息日志文件、消息索引文件和检查点文件)结构进行消息存储,便于维护,减少了消息系统维护难度。
本发明实施例的消息存储方法,能够提高消息存储系统的性能,减少消息存储系统维护难度,提高消息存储系统的处理效率。
与上述的方法实施例相对应,本发明实施例还提供一种消息存储装置。如图3所示,图3示出了本发明实施例提供的消息存储装置的结构示意图。消息存储装置可以包括:
第一获取模块301,用于获取待存储消息;
第一存储模块302,用于将待存储消息存储在消息日志文件中。
提取模块303,用于从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址。
第二获取模块304,用于根据偏移地址,获取偏移地址对应的消息的自增消息序列值。
比较模块305,用于比较获得的自增消息序列值与待存储消息对应的自增消息序列值。
生成模块306,用于根据比较结果,生成待存储消息对应的消息索引信息。
第二存储模块307,用于将消息索引信息存储在消息索引文件中。
在本发明的一个实施例中,生成模块306,具体可以用于:
若获得的自增消息序列值小于待存储消息对应的自增消息序列值,根据待存储消息对应的自增消息序列值、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,本发明实施例提供的消息存储装置还可以包括:
修改模块,用于将检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为待存储消息在消息日志文件中的偏移地址。
在本发明的一个实施例中,生成模块306,具体可以用于:
若获得的自增消息序列值不小于待存储消息对应的自增消息序列值,将待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据标识信息、待存储消息在消息日志文件中的偏移地址、待存储消息占用的字节数与待存储消息对应的校验和占用的字节数之和,生成待存储消息对应的消息索引信息。
在本发明的一个实施例中,消息日志文件的文件大小为M字节,消息索引文件的文件大小为N字节,消息索引文件中每条消息索引信息占用的字节数相同。
在本发明的一个实施例中,消息日志文件的文件名称为消息日志文件的起始偏移量;消息索引文件的文件名称为消息索引文件的起始偏移量。
本发明实施例的消息存储装置,能够提高消息存储系统的性能,减少消息存储系统维护难度,提高消息存储系统的处理效率。
图4示出了能够实现根据本发明实施例的消息存储方法及装置的计算设备的示例性硬件架构的结构图。如图4所示,计算设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。
具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。
也就是说,图4所示的计算设备也可以被实现为消息存储设备,该消息存储设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图3描述的消息存储方法和装置。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的消息存储方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种消息存储方法,其特征在于,所述方法包括:
获得待存储消息;
将所述待存储消息存储在消息日志文件中;
从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址;
根据所述偏移地址,获取所述偏移地址对应的消息的自增消息序列值;
比较获得的自增消息序列值与所述待存储消息对应的自增消息序列值;
若所述获得的自增消息序列值不小于所述待存储消息对应的自增消息序列值,则生成所述待存储消息对应的消息索引信息;
将所述消息索引信息存储在消息索引文件中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述获得的自增消息序列值小于所述待存储消息对应的自增消息序列值,则根据所述待存储消息对应的自增消息序列值、所述待存储消息在所述消息日志文件中的偏移地址、所述待存储消息占用的字节数与所述待存储消息对应的校验和占用的字节数之和,生成所述待存储消息对应的消息索引信息。
3.权利要求2所述的方法,其特征在于,所述方法还包括:
将所述检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为所述待存储消息在所述消息日志文件中的偏移地址。
4.根据权利要求1所述的方法,其特征在于,所述若所述获得的自增消息序列值不小于所述待存储消息对应的自增消息序列值,则生成所述待存储消息对应的消息索引信息,包括:
若所述获得的自增消息序列值不小于所述待存储消息对应的自增消息序列值,则将所述待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据所述标识信息、所述待存储消息在所述消息日志文件中的偏移地址、所述待存储消息占用的字节数与所述待存储消息对应的校验和占用的字节数之和,生成所述待存储消息对应的消息索引信息。
5.根据权利要求1所述的方法,其特征在于,消息日志文件的文件大小为M字节,消息索引文件的文件大小为N字节,消息索引文件中每条消息索引信息占用的字节数相同。
6.根据权利要求1所述的方法,其特征在于,消息日志文件的文件名称为消息日志文件的起始偏移量;消息索引文件的文件名称为消息索引文件的起始偏移量。
7.一种消息存储装置,其特征在于,所述装置包括:
第一获取模块,用于获取待存储消息;
第一存储模块,用于将所述待存储消息存储在消息日志文件中;
提取模块,用于从检查点文件中提取最大自增消息序列值对应的消息在消息日志文件中的偏移地址;
第二获取模块,用于根据所述偏移地址,获取所述偏移地址对应的消息的自增消息序列值;
比较模块,用于比较获得的自增消息序列值与所述待存储消息对应的自增消息序列值;
生成模块,用于若所述获得的自增消息序列值不小于所述待存储消息对应的自增消息序列值,则生成所述待存储消息对应的消息索引信息;
第二存储模块,用于将所述消息索引信息存储在消息索引文件中。
8.根据权利要求7所述的装置,其特征在于,所述生成模块,具体还用于:
若所述获得的自增消息序列值小于所述待存储消息对应的自增消息序列值,则根据所述待存储消息对应的自增消息序列值、所述待存储消息在所述消息日志文件中的偏移地址、所述待存储消息占用的字节数与所述待存储消息对应的校验和占用的字节数之和,生成所述待存储消息对应的消息索引信息。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
修改模块,用于将所述检查点文件中存储的最大自增消息序列值对应的消息在消息日志文件中的偏移地址,修改为所述待存储消息在所述消息日志文件中的偏移地址。
10.根据权利要求7所述的装置,其特征在于,所述生成模块,具体用于:
若所述获得的自增消息序列值不小于所述待存储消息对应的自增消息序列值,则将所述待存储消息对应的自增消息序列值修改为用于表示消息为重复消息的标识信息,根据所述标识信息、所述待存储消息在所述消息日志文件中的偏移地址、所述待存储消息占用的字节数与所述待存储消息对应的校验和占用的字节数之和,生成所述待存储消息对应的消息索引信息。
11.根据权利要求7所述的装置,其特征在于,消息日志文件的文件大小为M字节,消息索引文件的文件大小为N字节,消息索引文件中每条消息索引信息占用的字节数相同。
12.一种消息存储设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;
所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的消息存储方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的消息存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811597366.6A CN109739822B (zh) | 2018-12-26 | 2018-12-26 | 消息存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811597366.6A CN109739822B (zh) | 2018-12-26 | 2018-12-26 | 消息存储方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739822A CN109739822A (zh) | 2019-05-10 |
CN109739822B true CN109739822B (zh) | 2021-04-13 |
Family
ID=66361264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811597366.6A Active CN109739822B (zh) | 2018-12-26 | 2018-12-26 | 消息存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739822B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114091121B (zh) * | 2022-01-18 | 2022-04-26 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、系统、存储介质及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656825A (zh) * | 2017-09-01 | 2018-02-02 | 上海艾融软件股份有限公司 | 消息处理方法、装置及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145946B (zh) * | 2007-09-17 | 2010-09-01 | 中兴通讯股份有限公司 | 一种基于消息日志的容错集群系统和方法 |
CN101686209B (zh) * | 2008-09-24 | 2013-10-09 | 阿里巴巴集团控股有限公司 | 消息转发系统中存储消息的方法和装置 |
US9710535B2 (en) * | 2011-08-12 | 2017-07-18 | Nexenta Systems, Inc. | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories |
CN108268336B (zh) * | 2016-12-30 | 2023-06-23 | 北京忆恒创源科技股份有限公司 | 保证元数据一致性的方法及装置 |
-
2018
- 2018-12-26 CN CN201811597366.6A patent/CN109739822B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656825A (zh) * | 2017-09-01 | 2018-02-02 | 上海艾融软件股份有限公司 | 消息处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109739822A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101686209B (zh) | 消息转发系统中存储消息的方法和装置 | |
CN110113196B (zh) | 一种协议配置方法、装置、设备及介质 | |
CN110968431B (zh) | 一种消息处理方法、装置及设备 | |
CN105373595B (zh) | 一种数据自分类存储方法及终端 | |
US11955992B2 (en) | Rate matching method and apparatus for polar code | |
CN109739822B (zh) | 消息存储方法、装置、设备及存储介质 | |
CN103593442B (zh) | 日志数据的去重方法及装置 | |
CN103997760B (zh) | 一种用户用电信息采集系统的数据打包采集方法 | |
CN112115039B (zh) | 测试用例生成方法、装置及设备 | |
CN115567589A (zh) | Json数据的压缩传输方法、装置、设备及存储介质 | |
CN114490060A (zh) | 内存分配方法、装置、计算机设备和计算机可读存储介质 | |
CN113535226B (zh) | 应用下载方法、终端、服务器、计算机设备以及存储介质 | |
CN112803950A (zh) | 一种数据压缩方法、装置、设备及计算机存储介质 | |
CN112306748A (zh) | 数据恢复方法、设备及存储介质 | |
CN116865766A (zh) | 一种波形数据压缩方法、系统、设备及介质 | |
CN110782238B (zh) | 异常资源转移组合识别方法、装置、设备及介质 | |
CN116263770A (zh) | 基于数据库的业务数据存储方法、装置、终端设备及介质 | |
CN110990640B (zh) | 一种数据判定方法、装置、设备及计算机可读存储介质 | |
CN110990611B (zh) | 图片缓存方法、装置、电子设备及存储介质 | |
CN109981540B (zh) | 防火墙数据优化方法、装置、计算机设备及可读存储介质 | |
CN113434525A (zh) | 缓存数据的更新方法和装置、存储介质及电子装置 | |
CN113535067A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN109002480A (zh) | 一种数据处理方法和服务器 | |
CN111191473B (zh) | 一种翻译文本文件获取方法及装置 | |
CN116312509B (zh) | 一种基于语音识别的终端id文本的校正方法、设备及介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |