[发明专利]一种基于文件系统的消息中间件持久消息的存储方法有效

专利信息
申请号: 200910230963.X 申请日: 2009-11-27
公开(公告)号: CN101707633A 公开(公告)日: 2010-05-12
发明(设计)人: 李景泽;谢钟扬 申请(专利权)人: 山东中创软件商用中间件股份有限公司
主分类号: H04L29/08 分类号: H04L29/08;H04L29/06;G06F17/30
代理公司: 济南舜源专利事务所有限公司 37205 代理人: 苗峻
地址: 250014 山*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 文件系统 消息 中间件 持久 存储 方法
【说明书】:

技术领域

发明涉及一种基于文件系统的消息中间件持久消息的存储方 法。

背景技术

以可靠传输为目的的消息中间件服务器,存储客户端发送给服务 器端的消息是一个非常关键的环节。对消息的存储一般需要达到以下 要求:

1)可靠性,能够将客户端发给服务器端的每条消息做持久化,能 根据消息标识符定位到消息的准确存储位置。

2)性能,能够快速将消息在非易失性存储器和内存之间进行置换。

目前实现消息存储最常用的两种方式:

1.内存存储

将所有客户端发送给服务器端的消息保存在内存之中,由于所有 消息均在内存中操作,采用这个方式的消息中间件吞吐性能非常高。 但是该种方式存在以下问题:

如果服务器宕机,所有保存在内存之中的消息都将丢失,再次重 启之后,这些消息无法被消费;

消息在内存中存储有容量限制,如果超出了可用的内存上限,将 阻塞客户端的发送进程,直到这些消息被接收者取得而被服务器释放 其所占用的内存。

2.数据库存储

将所有客户端发送给服务器端的消息保存在数据库之中,即使服 务器宕机,重启之后消息中间件依然可以从数据库中恢复所有未被客 户端接收的消息。但是该种方式存在以下问题:

在高负载的情况下,往数据库中频繁插入和删除消息记录的数据 库操作会导致整个消息中间件消息吞吐性能严重降低。

绑定额外的数据库系统会降低服务器的处理性能和网络性能,还 会增加用户的投资

综合以上两种方式,基于文件系统的消息中间件持久消息的存储 技术需要解决可靠性问题,性能问题等。

发明内容

本发明的目的就是针对上述的不足,提供了一种在保证消息存储 的可靠性的同时,还提高了持久消息的读写性能的基于文件系统的 消息中间件持久消息的存储方法。

一种基于文件系统的消息中间件持久消息的存储方法,包括如下 步骤:

第一步:以消息为参数创建AddMessageCommand。

即将AddMessageCommand的message字段设为需要存储的消息; 将RemoveMessageCommand中的messageId设为需要从存储中删除的消 息标识符。Visitor则提供了以访问者模式处理所有Command对象的 方法,Visitor的子类IndexVisitor会根据不同的Command子类建立 索引。

第二步:把AddMessageCommand对象序列化为字节流。

Command类提供了write和read序列化和反序列化的方法,write 方法可以将Command对象序列化成字节流,read方法可以将字节流反 序列化成Command对象。通过这样的方式,就可以将Command对象存 储在日志文件中,也可以从日志文件读取内容生成Command对象。

第三步:将字节流写入日志文件,如果设置为异步模式,则将多 个写入操作合并,将每个写入操作需写入的字节流合并,一次性写入 到日志文件中。

第四步:更新内存中的索引页,将消息标识符和消息对应于日志 文件中的位置插入到索引树中的节点。

索引信息存放在一个B+树的叶节点中,key对应于消息的标识符, value对应该消息在日志文件中的位置。每次在日志文件中添加一条 消息记录,都会更新B+树更新索引信息。

每一个B+树节点都存放在索引文件中,每个节点占用的磁盘容量 为4096个字节,在第一页中存放了整个索引的元数据,可以通过这个 元数据找到所有队列的消息索引。由于内存容量的限制,并非将所有 索引信息都存放在内存之中,而是通过设置索引页缓存保存最近使用 的索引页。

第五步:写回索引文件,将更新的索引树节点所对应的文件页以 双写的方式写回到索引文件。

每次更新索引文件都将需要更新的文件页全部顺序写入备份文 件,当写入备份文件成功之后,再将这些文件页写回到索引文件,通 过这样的方式来避免写回索引文件时宕机引起的索引文件不一致的问 题。当写入备份文件不成功时,就直接丢弃这些需要更新的索引页, 当写回索引页不成功时,则从备份文件恢复这些索引页。

然后设置一读取流程,具体来说为:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东中创软件商用中间件股份有限公司,未经山东中创软件商用中间件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200910230963.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top