[发明专利]一种基于磁盘缓存的消息队列的实现方法及装置在审
申请号: | 201510547996.2 | 申请日: | 2015-08-31 |
公开(公告)号: | CN105138410A | 公开(公告)日: | 2015-12-09 |
发明(设计)人: | 贾高峰;田晋坤;虞平;万月亮;火一莽;曹晓飞 | 申请(专利权)人: | 北京锐安科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F3/06 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 胡彬;孟金喆 |
地址: | 100044 北京市海淀区西小口*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 磁盘 缓存 消息 队列 实现 方法 装置 | ||
技术领域
本发明实施例涉及数据传输技术,尤其涉及一种基于磁盘缓存的消息队列的实现方法及装置。
背景技术
随着互联网的快速发展,分布式系统的规模越来越大,应用范围也越来越广。在使用多个主机(可以是终端)组成的规模较大的分布式系统时,多个主机之间进行消息的可靠稳定传递往往是通过消息队列来实现。
目前,多个主机组成的分布式系统中各个主机之间的消息通过消息队列传递。例如:主机A、主机B和主机C组成分布式系统,主机A将要发送至主机B的消息写入在主机A中创建的消息队列a,主机B从消息队列a中获取主机A发送的消息。若主机B对所述消息进行处理后,需要发送至主机C,则在主机B中创建消息队列b,将处理后的消息写入主机B的消息队列b,主机C从消息队列b中获取主机B发送的消息。
仅使用内存的消息队列的存储空间是有限的,在大量消息连续传递至队列时,有可能出现队列写满的情况。当消息队列写满的时候,可能出现丢弃新数据、丢弃老数据或阻塞新数据的情况,而上述情况的出现必然影响消息的完整性。若消息队列不在内存中,则消息传递的速度则会较慢,不能保证消息传递的时效性。
发明内容
本发明提供一种基于磁盘缓存的消息队列的实现方法及装置,以实现在保障消息传递速度的同时保障消息完整性。
第一方面,本发明实施例提供了一种基于磁盘缓存的消息队列的实现方法,包括:
创建监控线程以按照预设的周期值周期性的监控消息队列中的消息量;
在所述消息量达到预设的消息上限值时,将再接收到的消息转换为二进制序列串,将所述二进制序列串顺序写入预先确定的磁盘文件,记录所述磁盘文件的写入的消息量和写入消息的偏移位置;
在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息,将所述消息写入所述消息队列,记录读取的消息量和读取消息的偏移位置。
第二方面,本发明实施例还提供了一种基于磁盘缓存的消息队列的实现装置,该装置包括:
消息监控单元,用于创建监控线程以按照预设的周期值周期性的监控消息队列中的消息量;
磁盘写入单元,用于在所述消息量达到预设的消息上限值时,将再接收到的消息转换为二进制序列串,将所述二进制序列串顺序写入预先确定的磁盘文件,记录所述磁盘文件的写入的消息量和写入消息的偏移位置;
消息写入单元,用于在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息,将所述消息写入所述消息队列,记录读取的消息量和读取消息的偏移位置。
本发明通过创建监控线程以按照预设的周期值周期性的监控消息队列中的消息量,将所述消息量达到预设的消息上限值之后接收到的消息转换为二进制序列串,将所述二进制序列串顺序写入预先确定的磁盘文件,在所述消息量达到预设的消息下限值时,从所述预先确定的磁盘文件中顺序读取消息,将所述消息写入所述消息队列,保证了在所述消息队列写满之后接收到的消息缓存于磁盘文件中,在所述消息队列中的消息量小于预设的下限值时,顺序读取上述预先确定的磁盘文件中的消息写入所述消息队列,而不会出现丢弃老数据、丢弃新数据或阻塞新数据的情况,解决分布式系统中多个主机之间快速传递消息时的完整性问题,实现在保障消息传递速度的同时保障消息完整性的效果。
附图说明
图1a是本发明实施例一中的基于磁盘缓存的消息队列的实现方法的流程图;
图1b是本发明实施例一中的基于磁盘缓存的消息队列的实现过程示意图;
图2是本发明实施例二中的基于磁盘缓存的消息队列的实现方法中写磁盘文件的方法的流程图;
图3是本发明实施例三中的基于磁盘缓存的消息队列的实现方法中写消息队列的方法的流程图;
图4是本发明实施例四中的基于磁盘缓存的消息队列的实现装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510547996.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种异地灾备的方法和系统
- 下一篇:跨平台移动Web应用运行引擎