[发明专利]基于数据库的分布式消息中间件系统及其运行方法有效
申请号: | 201310287640.0 | 申请日: | 2013-07-09 |
公开(公告)号: | CN103856393A | 公开(公告)日: | 2014-06-11 |
发明(设计)人: | 梁晓靖 | 申请(专利权)人: | 携程计算机技术(上海)有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58;H04L29/08;G06F17/30 |
代理公司: | 上海智信专利代理有限公司 31002 | 代理人: | 朱水平;王婧荷 |
地址: | 200335 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 数据库 分布式 消息 中间件 系统 及其 运行 方法 | ||
技术领域
本发明涉及一种分布式消息队列服务,尤其是涉及一种基于数据库的分布式消息中间件系统以及该分布式消息中间件系统的运行方法。
背景技术
关系型数据库是企业应用系统常用的数据存储方案,具有可靠性、可用性、事务、优化的资源竞争等特性,同时由于获得大量使用的缘故,企业通常都具有丰富的数据库运维经验,因而也易于运维和管理。但是关系型数据库在面对高并发、高吞吐量的业务时性能表现不佳。
消息队列服务是企业应用之间实现异步通信的常见方案,通常具有异步、高吞吐量、应用解耦等优点。为了支持消息的可靠递交,消息队列服务需要将消息进行持久化,但是由于关系型数据库的先天缺陷,在常用的消息队列服务系统中持久化方案一般都是自行开发的,很少利用现有的关系数据库,这大大提高了编程的复杂性,对消息系统的运维和监控也很不方便。而少量使用关系数据库实现持久化的方案,虽然在编程复杂度和后期运维上有便利性,但是在面对高并发的业务场景时会发生严重的性能问题。
发明内容
本发明要解决的技术问题是为了克服现有技术中在利用数据库实现消息的持久化时,在面对高并发的业务场景时会发生严重的性能问题的缺陷,提供一种基于数据库的分布式消息中间件系统以及该分布式消息中间件系统的运行方法,其结合了数据库的可靠性、高可用性、事务性和易于运维以及消息队列服务的异步性和应用解耦性等优点,并且显著地提高了在面对高并发的业务场景时的运行性能。
本发明是通过下述技术方案来解决上述技术问题:
一种基于数据库的分布式消息中间件系统,其特点在于,该分布式消息中间件系统包括消息采集组件、数据库、消息分发组件和消息交换组件,
数据库中包括消息容器,消息容器通过与数据库中存有消息的消息表对应而存储消息;
消息采集组件用于接收来自消息生产者的消息并交给消息交换组件;
消息分发组件用于接收来自消息消费者的消费请求并交给消息交换组件;
消息交换组件用于将来自消息采集组件的消息存入消息容器,还用于根据消费请求从消息容器中读出消息并交给消息分发组件以供给消息消费者进行消费。
在本发明中,消息交换组件与消息容器之间是相互绑定的,消息交换组件仅向绑定的消息容器中存入消息以及仅从绑定的消息容器中读出消息。
在消息采集过程中:消息生产者向消息采集组件发送消息,消息中包括有消息交换地址、消息主题以及消息内容等消息数据;消息采集组件根据接收到的消息交换地址选择消息交换组件,并将消息交给选定的消息交换组件进行处理;被选定的消息交换组件将消息存入消息容器,从而完成采集。
在消息分发过程中:消息消费者向消息分发组件发起消息消费请求,消费请求中包括有消费者标识、消息交换地址、消费的消息主题等信息;消息分发组件根据消息交换地址选择消息交换组件,并将消费请求交由选定的消息交换组件进行处理;被选定的消息交换组件从绑定的消息容器中取出符合条件的消息,并返回给消息消费者。
消息容器是对数据库的逻辑划分,其负责将消息数据持久化保存,以保证消息的可靠性。每个消息容器都与数据库中的一张存储有消息的物理数据表(即消息表)对应,因此也可以说,每个消息容器中均存储有其对应的那一张物理数据表中的所有消息。
本发明中的消息交换组件支持点对点(Queue)消息交换语义和发布/订阅(pub/sub)消息交换语义,此处与传统的消息组件内涵相同,故不做赘述。
较佳地,该分布式消息中间件系统还包括生产端消息代理和消费端消息代理,消息生产者通过生产端消息代理与消息采集组件通信,消息消费者通过消费端消息代理与消息分发组件通信。
消息代理主要提供应用集成所必须的数据的递送、收集、翻译、过滤、映射和路由等功能,其能够屏蔽不同的硬件平台、数据库、消息格式、通信协议之间的鸿沟与差异,提供应用到应用之间的高效、便捷的通信能力。
较佳地,消息交换组件的数量为一个或多个,每个消息交换组件与一个或多个数据库中的消息容器绑定,每个数据库中的消息容器的数量为一个或多个,消息采集组件和/或消息分发组件的数量为一个或多个。
同一个数据库中多个消息容器的分布能够分担不同消息交换地址上的压力,保证系统平稳运行;当数据库成为访问瓶颈时,多个数据库的分布能够分担系统压力,保证系统平稳运行。而每个消息交换组件则既可以与一个数据库中的一个或多个消息容器绑定,也可以与多个数据库中的消息容器(每个数据库中同样可以有一个或多个消息容器)绑定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于携程计算机技术(上海)有限公司,未经携程计算机技术(上海)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310287640.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:群组管理的方法及系统
- 下一篇:一种电子设备及应用于电子设备的文件分块方法