[发明专利]消息队列系统以及实现消息通信的方法有效
申请号: | 201510413284.1 | 申请日: | 2015-07-14 |
公开(公告)号: | CN107038075B | 公开(公告)日: | 2020-12-25 |
发明(设计)人: | 张俊;何乐;张杰 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 李辉 |
地址: | 英属开曼群岛大开曼*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 队列 系统 以及 实现 通信 方法 | ||
本申请实施例公开了一种消息队列系统。该系统包括:第一缓冲区、第二缓冲区和持久化存储区;第一缓冲区和第二缓冲区位于消息生产者和消息消费者所在的服务器的内存中,第二缓冲区包括主缓冲区和备缓冲区;第一缓冲区用于缓存消息生产者推送的消息,并存储在持久化存储区中,将已存储到持久化存储区的消息发送给第二缓冲区;持久化存储区用于对第一缓冲区发送的消息进行持久化存储;备缓冲区用于缓存第一缓冲区发送的消息;主缓冲区用于将自身的消息传递给消息消费者,在将自身的消息全部传递给消息消费者之后,与备缓冲区进行主备切换。通过本申请,可以提高消息在消息队列系统中传输的实时性。本申请实施例还公开了一种实现消息通信的方法。
技术领域
本申请涉及计算机领域,特别是涉及消息队列系统以及实现消息通信的方法。
背景技术
在计算机系统中,消息队列是实现不同进程间通信或者同一进程中的不同线程间通信的一种重要方式。也就是说,不同的进程之间或不同的线程之间在消息队列中完成消息传输。
在现有的相关技术中,已经存在多种关于消息队列系统的实现方案。其中一个方案为,消息队列系统由进程(或线程)所在的服务器上的缓存区以及本地磁盘构成。其中,先将消息生产者推送的消息存储在该缓存区中,当该缓存区中的消息个数达到配置值或者消息的发布时间超过阈值时,再将该缓存区中的消息存储到本地磁盘中,以保证消息的可靠性。并且只有存储到本地磁盘中的消息才可以被进一步传递给消息消费者。另外,由于本地磁盘的存储空间有限,存储在本地磁盘中的消息无论是否被传递给消息消费者,其在保留一定时间后就会被删除,以便释放本地磁盘的存储空间。所谓“可靠性”就是指,消息生产者推送到消息队列系统中的消息不丢失,即使消息队列系统故障也可以被恢复;并且,消息在未被传递给消息消费者之前可以一直保存在消息队列系统中,直到被传递给消息消费者为止。
在第一个方案中,只有位于本地磁盘的消息才可以被传递给消息消费者,而消息在被存储到本地磁盘之前,还必须先被存储在缓存区中,因此,消息传输的实时性会比较差。并且,消息是从本地磁盘传递给消息消费者的,受到本地磁盘的IO操作速度的影响,消息传输的实时性就会更差。另外,由于本地磁盘中的消息会被定期删除,因此消息的可靠性也非常差。
另一个方案为:消息队列系统由进程(或线程)所在的服务器上的内存以及位于该服务器外部的数据库构成。其中,先将消息生产者推送的消息存储在内存中,再将消息从内存中传递给消息消费者。并且,为了保证消息的可靠性,还将内存中的消息存储到数据库中。显然,在第二个方案中,消息直接从内存传递到消息消费者,并且,内存的IO操作速度比本地磁盘的IO操作速度快,因此,相较于第一个方案,消息传输的实时性更好。另外,由于数据库的存储空间比较大,存储在数据库中的消息不会被定期删除,因此,相较于第一个方案,消息的可靠性也更好。
但是,在实现本申请的过程中,本申请的发明人发现现有技术中至少存在如下问题:虽然在第二个方案中,内存的IO操作速度比较快,使其消息在消息队列系统中传输的实时性相较于第一个方案好。但是,由于内存不支持同时执行读/写操作,因此,在将消息生产者推送的消息存储在内存中的同时,就不能将消息从内存中传递给消息消费者,这样会很大程度地影响消息传输的实时性。
另外,在第二个方案中,如果消息消费者无法正常地从消息队列系统接收消息或者只能以很慢的速度接收消息,并且消息生产者生产消息的速度又非常快,这样就会有越来越多的消息占满内存,严重时会发生内存溢出。当发生内存溢出时,溢出的消息会被丢弃掉,以至于溢出的消息无法正常传递给消息消费者。
发明内容
为了解决上述技术问题,本申请实施例提供了消息队列系统、以及实现消息通信的方法,以解决现有技术中由于内存不支持同时执行读/写操作而影响消息在消息队列系统中传输的实时性的问题。另外,进一步解决现有技术中由于消息队列系统中的内存发生内存溢出而导致溢出的消息无法正常地被传递给消息消费者的问题。
本申请实施例公开了如下技术方案:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510413284.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:室内定位装置、方法和系统
- 下一篇:一种数据恢复方法和装置