[发明专利]一种队列消息一致性的实现方法、装置、计算系统有效
申请号: | 201811294150.2 | 申请日: | 2018-11-01 |
公开(公告)号: | CN109408203B | 公开(公告)日: | 2019-10-18 |
发明(设计)人: | 许广彬;谭瑞忠;濮天晖;王明星 | 申请(专利权)人: | 无锡华云数据技术服务有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/54 |
代理公司: | 苏州友佳知识产权代理事务所(普通合伙) 32351 | 代理人: | 储振 |
地址: | 214000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 队列消息 事务管理模块 计算系统 消息管理模块 业务逻辑模块 消息中间件 事务 设备宕机 事件执行 网络故障 消息管理 心跳机制 不一致 数据源 监听 回滚 调用 投递 外部 申请 进程 管理 | ||
本发明提供了一种实现队列消息一致性的装置、实现方法及计算系统,该装置包括:业务逻辑模块、事务管理模块及消息管理管理;业务逻辑模块,请求打开消息中间件的本地事务,并在执行事务前调用事务管理模块开启本地事务,并独立地通过消息管理模块对事务管理模块所开启的所述消息中间件的本地事务所产生的提交事件或回滚事件执行监听,事务管理模块与消息管理模块基于心跳机制确保彼此处于同一进程。在本申请所揭示的一种队列消息一致性的实现方法、装置及计算系统中,克服了队列消息在不同数据源之间因网络故障、设备宕机等外部因素所导致的队列消息投递不一致的缺陷。
技术领域
本发明涉及队列消息业务处理技术领域,尤其涉及一种队列消息一致性的实现方法、装置及计算系统。
背景技术
在业务系统中,两个服务之间通常会使用消息中间件来进行通信,如Active MQ、Rabbit MQ等。消息通常包括队列消息(Queue)和订阅消息 (Topic)两种,本发明中主要关注队列消息。消息队列就是在消息的传输过程中,保存消息的容器。基于事务需要实现ACID的要求(即原子性、一致性、隔离性、持久性),所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式,并基于XA协议实现。
XA协议规定事务管理器(Transaction Manager,TM)和资源管理器 (ResourceManager,RM),采用二阶段提交协议。二阶段提交协议为了保证事务的一致性,不管是事务管理器还是各个资源管理器,每执行一步操作,都会记录日志,为出现故障后的恢复准备依据。二阶段提交协议的存在的弊端是阻塞,因为事务管理器要收集各个资源管理器的响应消息,如果其中一个或多个一直不返回消息,则事务管理器一直等待,应用程序也被阻塞,甚至可能永久阻塞。
更重要的是,采用XA协议确保队列消息一致性的方案中,一旦发生网络故障或者设备宕机,则会导致队列消息调用失败。于此场景中,队列消息无法保证一致性,并只能采用人工修复补偿的方式进行一致性的调整。这就导致了运维人员的工作量急剧增大。同时,即使采用人工修复补偿的方式对队列消息的一致性进行调整,也无法真正确保队列消息在不同数据源之间的一致性。
此外,采用XA协议确保队列消息一致性的方案中,对消息中间件所执行的事务管理机制过于依赖。因此,对于普通用户或者运维人员的技术要求过于苛刻。同时,用户或者运维人员不仅要考虑队列消息自身的业务逻辑,还要兼顾消息中间件的业务逻辑以及事务机制的实现。因此,在现有技术中,队列消息一致性的实现技术方案存在一定的技术缺陷。
有鉴于此,有必要对现有技术中的在不同数据源之间实现队列消息的一致性的实现方法予以改进,以解决上述问题。
发明内容
本发明的目的在于揭示一种队列消息一致性的实现方法、装置及计算系统,以克服队列消息在不同数据源之间因网络故障、设备宕机等外部因素所导致的队列消息投递不一致的缺陷,以确保不同数据源之间队列消息的强一致性。
为实现上述第一个发明目的,本发明提供了一种实现队列消息一致性的装置,包括:业务逻辑模块、事务管理模块及消息管理模块 ;所述业务逻辑模块,请求打开消息中间件的本地事务,并在执行事务前调用事务管理模块开启本地事务,并独立地通过消息管理模块对事务管理模块所开启的所述消息中间件的本地事务所产生的提交事件或回滚事件执行监听,所述事务管理模块与消息管理模块基于心跳机制确保彼此处于同一进程;所述消息管理模块保存并转发所述消息中间体的指定队列中的消息至事务管理模块,并将消息转发执行结果通知事务管理模块,事务管理模块根据所述转发执行结果执行提交事件或回滚事件,消息中间件的本地事务为所述消息中间件上运行的事务。
作为本发明的进一步改进,所述消息管理模块根据消息头查找消息中间体的指定队列中的消息的被执行转发结果,所述消息头包被执行转发的消息所对应的事务id。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡华云数据技术服务有限公司,未经无锡华云数据技术服务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811294150.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种LMDB扩展方法及装置
- 下一篇:一种分布式任务系统的任务调度方法及装置