[发明专利]一种基于消息中间件的柔性事务处理方法在审
申请号: | 201811304916.0 | 申请日: | 2018-11-02 |
公开(公告)号: | CN109471704A | 公开(公告)日: | 2019-03-15 |
发明(设计)人: | 杨光润;郭春鹏;李志伟;宋伟强;乔光 | 申请(专利权)人: | 上海艾融软件股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/54 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 刘昕;南霆 |
地址: | 202150 上海市崇明*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息服务 消息中间件 事务处理 发送确认消息 中间人角色 发布消息 发送消息 业务执行 事务 | ||
本发明公开了一种基于消息中间件的柔性事务处理方法,由消息生产者发送消息到消息服务,待消息生产者本地业务执行后,再发送确认消息到消息服务,此时消息服务才真正发布消息,供消息消费者消费。本发明通过带有事务的消息中间件(消息服务)作为中间人角色,能够有效的保障各系统之间事务的一致性。
技术领域
本发明涉及互联网应用的分布式事务处理的技术领域,特别是涉及一种基于消息中间件的柔性事务处理。
背景技术
分布式系统一般由多个独立子系统组成,多个子系统通过进程间通信互相协作配合完成各个功能。有很多用例会跨多个子系统才能完成,比如电商购物网站的下单支付流程,会涉及到交易系统和支付系统,而这个过程中会涉及到事务的概念,即需要保证交易系统和支付系统的数据一致性。通常谈及的事务是指单机资源的ACID属性,无法满足多系统间的事务要求。
柔性事务处理发放中存在以下概念和名词:
柔性事务:指遵循BASE理论的事务,常见实现方式有:两阶段提交(2PC)、TCC补偿性提交、基于消息的异步确保型、最大努力通知型。
BASE:Base IC ally Available(基本可用)、Soft state(柔性状态)、Eventuallyconsistent(最终一致性)的三个短语的缩写。
TCC模式:Try-Confirm-Cancel
Try:完成所有业务检查(一致性),预留必须业务资源(准隔离性)。
Confirm:真正执行业务,不作任何业务检查,只使用Try阶段预留的业务资源,Confirm操作满足幂等性。
Cancel:释放Try阶段预留的业务资源,Cancel操作满足幂等性。
消息中间件:通过提供消息传递和消息排队模型,可以在分布式环境下扩展进程间的通信。
发明内容
针对现有技术的不足,本发明旨在提供一种基于消息中间件的柔性事务处理方法,通过带有事务的消息中间件作为中间人角色,能够有效的保障各系统之间事务的一致性。
为了实现上述目的,本发明采用如下技术方案:
一种基于消息中间件的柔性事务处理方法,包括如下步骤:
S1、消息生产者在执行本地事务前预发送事务消息到消息服务,此时消息服务只记录但不发布该事务消息;
S2、消息服务确认消息生产者预发送的事务消息接收成功后,返回接收成功的消息给消息生产者;
S3、消息生产者开始执行本地业务逻辑,如果执行失败,通知消息服务丢弃该事务消息,如果执行成功,则提交本地事务,并通知消息服务发布事务消息给消息消费者,消息消费者在接收该事务消息后执行其本地业务逻辑。
进一步地,步骤S3中,消息消费者如果执行本地业务逻辑成功,则提交本地事务,并向消息服务发送消费成功的确认消息,如果执行失败则向消息服务发送消费失败的确认消息。
更进一步地,消息服务如果接收到消息消费者发送的消费成功的确认消息,则进行该事务消息的移除,如果接收到消息消费者发送的消费失败的确认消息,则重启发布该事务消息到消息消费者,消息消费者再次执行本地业务逻辑,直至消息消费者消费该事务消息成功。
更进一步地,消息服务中设置定时消息状态确认扫描,针对已记录但未发布的事务消息定时向发送该事务消息的消息生产者进行事务状态确认。
本发明的有益效果在于:
1、本发明中,通过带有事务的消息中间件(消息服务)作为中间人角色,能够有效的保障各系统之间事务的一致性;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海艾融软件股份有限公司,未经上海艾融软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811304916.0/2.html,转载请声明来源钻瓜专利网。