[发明专利]一种消息处理方法及装置在审
申请号: | 201310130431.5 | 申请日: | 2013-04-15 |
公开(公告)号: | CN104102552A | 公开(公告)日: | 2014-10-15 |
发明(设计)人: | 封文进;田睿;张弛;吴振宇 | 申请(专利权)人: | 深圳中兴网信科技有限公司 |
主分类号: | G06F11/00 | 分类号: | G06F11/00 |
代理公司: | 北京派特恩知识产权代理有限公司 11270 | 代理人: | 张振伟;王黎延 |
地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 处理 方法 装置 | ||
技术领域
本发明涉及互联网通信技术,具体涉及一种消息处理方法及装置。
背景技术
目前,对消息队列的处理存在如下几种方案:
方案一:进程级内存缓冲消息,并将消息异步保存到数据库;
方案二:进程级内存缓冲消息,并将消息异步保存到数据文件;
方案三:将消息顺序写二进制文件,并将二进制文件异步保存到数据文件。
针对方案一,进程级的内存缓冲,可以实现消息的快速接收,但是如果保存到数据库的速度慢就会影响进程级内存缓冲消息的接收量,因为缓冲是有限制的,而且这种内存缓冲在进程异常导致退出时,缓冲的消息就全部丢失;此方案的消息吞吐量一般在每秒5000~8000条。
针对方案二,为了解决方案一保存到数据库的速度问题,采用直接保存到数据文件中的方式,所述数据文件为二进制文件,这样就避免了数据库的结构化查询语言(SQL,Structured Query Language)解析和事务控制导致存储的速度慢的问题,消息的吞吐量也可以提高20~30%,但是此方案还是避免不了内存缓冲在进程异常导致退出时,缓冲的消息丢失的问题。
针对方案三,为了解决内存缓冲在进程异常导致退出时,缓冲的消息丢失的问题,此方案就不做进程缓冲了,而改成先直接顺序写二进制文件,虽然这种方式大大减少了硬盘寻道的时间,但是比起进程的内存缓冲还是比较慢,因此该方案消息吞吐量不高,但保证了内存缓冲在进程异常导致退出时,缓冲的消息不会丢失。
发明内容
有鉴于此,本发明的主要目的在于提供一种消息处理方法及装置,能够保证在消息的高读写效率的同时,解决在进程异常导致退出时,消息丢失的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种消息处理方法,该方法包括:
创建数据文件以及与所述数据文件对应的索引文件,将所述数据文件及所述数据文件对应的索引文件映射到内存;
将待写入的消息数据写入数据文件中,并根据写入所述待写入的消息数据的数据文件的信息填写该数据文件对应的索引文件;以及,根据索引文件读取该索引文件对应的数据文件中的消息数据。
上述方案中,所述创建数据文件包括:
创建一个以上的大小相同的数据文件,使所述一个以上的大小相同的数据文件组成数据文件队列。
上述方案中,所述根据写入所述待写入的消息数据的数据文件的信息填写该数据文件对应的索引文件包括:
获取数据文件在数据文件队列中的序号、数据文件的位置信息、数据文件中当前写入的消息数据的总数,并写入该数据文件对应的索引文件中。
上述方案中,所述将待写入的消息数据写入数据文件中包括:
确定待写入的消息数据的长度信息,并将待写入的消息数据表示为二进制数据,在所述数据文件中记录所述待写入的消息数据的长度信息及其二进制数据。
上述方案中,该方法还包括:
读取完一个数据文件,删除该数据文件的映射,回收该数据文件的内存映射区。
本发明还提供了一种消息处理装置,该装置包括创建单元、控制单元、内存、数据读取单元和数据写入单元;其中,
所述创建单元,用于创建数据文件以及与所述数据文件对应的索引文件;
所述控制单元,用于将所述数据文件及所述数据文件对应的索引文件映射到所述内存;
所述数据读取单元,用于根据索引文件读取该索引文件对应的数据文件中的消息数据;
所述数据写入单元,用于将待写入的消息数据写入数据文件中,并根据写入所述待写入的消息数据的数据文件的信息填写该数据文件对应的索引文件。
上述方案中,所述创建单元,还用于创建一个以上的大小相同的数据文件,使所述一个以上的大小相同的数据文件组成数据文件队列。
上述方案中,所述控制单元,还用于获取数据文件在数据文件队列中的序号、数据文件的位置信息、数据文件中当前写入的消息数据的总数;
所述数据写入单元,还用于将所述控制单元获取的数据文件在数据文件队列中的序号、数据文件的位置信息、数据文件中当前写入的消息数据的总数写入该数据文件对应的索引文件中。
上述方案中,所述控制单元,还用于确定待写入的消息数据的长度信息;
所述数据写入单元,还用于将所述控制单元确定的待写入的消息数据的长度信息及二进制数据表示的消息数据写入数据文件中。
上述方案中,所述控制单元,还用于在读取完一个数据文件时,删除该数据文件的映射,回收该数据文件的内存映射区。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳中兴网信科技有限公司,未经深圳中兴网信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310130431.5/2.html,转载请声明来源钻瓜专利网。