The invention discloses a message persistence method, a server and a computer readable storage medium. In the method, data files are created for storing persistent messages, creating message index files and time index files for indexing and reading messages in data files. By creating a message index file so that only a data file needs to be read once, the required message can be obtained. The specified time message can be read by creating a time index file. Therefore, the method can easily and quickly read the message for the specified time from the data file.
【技术实现步骤摘要】
一种消息持久化方法、服务器和计算机可读存储介质
本专利技术涉及网络通信
,更具体地,涉及一种消息持久化方法、服务器和计算机可读存储介质。
技术介绍
随着信息技术的发展,以及分布式系统的广泛应用,在分布式软件系统中,消息中间件在许多行业的关键应用中扮演着至关重要的角色。消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。消息发布端将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给消息消费端。消息中间件系统中,需要将消息发布端的消息持久化保存在硬盘等存储中,一般持久化保存到文件或数据库中,以备其他消息消费端可以可靠的接收消息。为了更高效地进行消息交互,目前对消息中间件系统的发送接收的单位时间吞吐率要求很高,对消息持久化存储消息的速率要求很高,对消息恢复时读取消息的速率要求也很高,即需要很高的读写文件或数据库的速率。在现有的技术中,activeMQ是采用树的索引方式,在恢复指定消息序列号区间的消息时,需要遍历索引文件树的各个节点,再通过消息索引去查找数据文件,索引文件树的遍历效率较低,访问速率会比较慢。Kafka是一种高吞吐量的分布式发布订阅消息系统,在Kafka系统的持久化消息方法中索引文件设置了消息偏移地址,可以通过消息偏移地址比较快的找到消息所在的段文件。段文件中很多个日志记录,通过每个日志记录的消息长度字段去一次次跳转找到需要恢复的消息位置。如果段文件中有n条消息,按照二分法去查找待恢复的消息,需要log2n次,也不能满足目前快速高 ...
【技术保护点】
一种消息持久化方法,包括:接收需要持久化的消息后,获取所述消息所属的消息主题;将所述消息存储在所述消息主题对应的数据文件中;定时更新消息索引文件,建立所述消息对应的消息索引记录,所述消息索引文件包括索引头和消息索引记录;以及在时间索引文件中,每隔单位时间生成一条时间索引记录;其中,所述消息索引文件和所述时间索引文件是在预先设定的时间点创建的;所述索引头包括参考时间戳,所述参考时间戳对应的参考时间作为存储消息时间点的参考;所述消息索引记录包括对应的数据文件标识、所述消息在所述数据文件中的偏移地址和相对时间戳,所述相对时间戳是存储消息时间点相对所述参考时间而得到的;所述时间索引记录用于存储在当前单位时间内存储的第一条消息对应的消息索引记录在所述消息索引文件中的偏移地址。
【技术特征摘要】
1.一种消息持久化方法,包括:接收需要持久化的消息后,获取所述消息所属的消息主题;将所述消息存储在所述消息主题对应的数据文件中;定时更新消息索引文件,建立所述消息对应的消息索引记录,所述消息索引文件包括索引头和消息索引记录;以及在时间索引文件中,每隔单位时间生成一条时间索引记录;其中,所述消息索引文件和所述时间索引文件是在预先设定的时间点创建的;所述索引头包括参考时间戳,所述参考时间戳对应的参考时间作为存储消息时间点的参考;所述消息索引记录包括对应的数据文件标识、所述消息在所述数据文件中的偏移地址和相对时间戳,所述相对时间戳是存储消息时间点相对所述参考时间而得到的;所述时间索引记录用于存储在当前单位时间内存储的第一条消息对应的消息索引记录在所述消息索引文件中的偏移地址。2.根据权利要求1所述的消息持久化方法,其特征在于,所述方法还包括:在接收到读取指定时间段内消息的指令时根据所述时间索引文件和所述消息索引文件索引并读取对应数据文件中对应的消息。3.根据权利要求2所述的消息持久化方法,其特征在于,根据所述时间索引文件和所述消息索引文件索引并读取对应数据文件中对应的消息包括:根据所述参考时间戳获取所述指定时间段的相对起始单位时间和相对结束单位时间;根据所述相对起始单位时间和所述时间索引文件索引获取第一消息索引记录的偏移地址;根据所述相对结束单位时间和所述时间索引文件索引获取第二消息索引记录的偏移地址;在所述消息索引文件中获取所述第一消息索引记录的偏移地址和第二消息索引记录的偏移地址之间的所有消息索引记录;根据所获取的消息索引记录读取对应的数据文件获得指定时间段的所有消息;其中,根据所述第一消息索引记录的偏移地址依次加上一条消息索引记录的字节长度值直到得到所述第二消息索引记录的偏移地址可依次获取指定时间段内所有的消息索引记录的偏移地址。4.根据权利要求3所述的消息持久化方法,其特征在于,根据所述相对起始单位时间和所述时间索引文件索引获取第一消...
【专利技术属性】
技术研发人员:陈宇珽,许再越,熊璐,李正,茅廷,余波,李升先,李志斌,
申请(专利权)人:中汇信息技术上海有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。