分布式事务处理方法及装置制造方法及图纸

技术编号:24456090 阅读:17 留言:0更新日期:2020-06-10 15:35
本发明专利技术提供了一种分布式事务处理方法及装置。该方法包括:请求全局事务管理器记录事务的全局事务信息,并获取全局事务管理器返回的全局事务唯一标识;执行全局事务中所有事务分支操作;如果全局事务任意一个事务分支执行失败,请求全局事务管理器进行全局事务回滚;如果全局事务所有事务分支对应的本地事务都提交成功,请求全局事务管理器进行全局事务提交。本发明专利技术提供的分布式事务处理方法及装置能够在保持对业务无侵入、只需要数据库支持本地事务的情况下保证分布式系统的事务一致性。

Distributed transaction processing method and device

【技术实现步骤摘要】
分布式事务处理方法及装置
本专利技术涉及分布式系统
,特别是涉及一种分布式事务处理方法及装置。
技术介绍
随着分布式技术在银行交易系统的逐渐使用,不可避免的会出现一个交易需要跨多个数据库或者跨多个子系统(微服务)并保证事务的情况。由于这些资源在物理上是完全独立的,所以要保证分布式下事务的原子性、一致性、隔离性以及持久性的控制就变得非常复杂。举例来说,假设有一个交易为A给B转账200元,大致流程如下:1)交易开始2)调用转出服务,A转出200元;3)调用转入服务,B转入200元;4)交易结束在分布式系统中,转入、转出服务可能位于不同的进程;或者A、B账户位于不同的数据库。并且每个步骤都有失败或异常的可能。这种情况下数据库自身的本地事务无法保证上述的两个步骤全部成功或全部失败。业内目前现有的解决分布式事务问题的方案有:XA两阶段提交协议(2PC),TCC(Try-Confirm-Cancel)等。XA两阶段提交协议:基于2PC的分布式事务处理过程如下:在第一阶段,事务协调节点向所有事务参与者发送“准备”请求,如果所有事务参与者均返回“准备成功”,则在第二阶段,协调节点向所有参与者发送“提交”请求。各参与者在接收到上述“提交”请求之后,执行相应的数据处理子操作。如果在第一阶段,有任一参与者返回“准备失败”,则协调节点向所有参与者发送“回滚”请求。TCC(Try-Confirm-Cancel):TCC方案在服务层实现两阶段协议,将一个完整的流程从业务上划分为两个阶段。第一阶段(Try)进行对应的合法性检查以及为事务执行预留所需的资源,确保第二阶段能够执行成功。事务中所有的第一阶段执行成功后,在进入第二阶段提交(Confirm)阶段,使用使用预留的资源进行正式的业务操作;如果第一阶段执行出现异常等需要回滚分布式事务,则进行第二阶段回滚(Cancel)阶段,将预留的资源解除预留。针对上述两种分布式解决方案分析如下:XA两阶段提交协议:1)XA两阶段提交协议是一种阻塞协议,在业务执行以及提交的第一阶段需要等待最慢的一个事务分支完成。在此期间所有参与者一直占用系统资源,如锁资源、数据库连接资源等,导致系统资源的浪费,进而影响整体性能,无法实现高性能的分布式事务处理。2)需要数据库支持XA协议,并且性能与保证度都依赖于数据库的实现。例如MySQL从5.0开始部分支持XA协议,但在一定场景下,MySQL的XA事务处理存在数据不一致的风险。3)目前基于XA的分布式解决方案,大都依托于重量级的应用服务器(Tuxedo/WebLogic/WebSphere等),不适用于微服务架构TCC(Try-Confirm-Cancel):1)对业务系统侵入性大,业务需要按Try、Confirm、Cancel进行开发,成本较高;资源预留不易处理,需要根据业务特征设计,处理不当难以保证一致性,或降低系统性能,当业务需求发生变更时难以及时响应变化。对业务开发人员的设计能力要求较高。综上所述,需要提出一种能够在业务较低侵入的情况下,实现与数据库无关且资源占用周期较短的分布式事务的处理方案,以满足分布式系统下对数据一致性与高性能的需求。
技术实现思路
本专利技术要解决的技术问题是提供一种分布式事务处理方法及装置,能够在保持对业务无侵入、只需要数据库支持本地事务的情况下保证分布式系统的事务一致性。为解决上述技术问题,本专利技术提供了一种分布式事务处理方法,应用于全局事务应用服务器,包括:请求全局事务管理器记录事务的全局事务信息,并获取全局事务管理器返回的全局事务唯一标识;执行全局事务中所有事务分支操作;如果全局事务任意一个事务分支执行失败,请求全局事务管理器进行全局事务回滚;如果全局事务所有事务分支对应的本地事务都提交成功,请求全局事务管理器进行全局事务提交。在一些实施方式中,还包括:向全局事务管理器请求全局事务回滚。此外,本专利技术还提供了一种分布式事务处理方法,应用于事务分支应用服务器,包括:请求全局事务管理器记录事务分支的事务分支信息,并获取全局事务管理器返回的事务分支唯一标识;对事务分支数据源执行的SQL进行拦截并解析;根据解析结果生成SQL的前镜像记录;执行SQL;根据执行结果生成SQL的后镜像记录;根据全局事务唯一标识向全局事务管理器注册事务分支,并获取全局事务管理器返回的事务分支唯一标识;根据事务分支唯一标识,持久化当前事务分支中的前镜像记录及后镜像记录,作为回滚日志;提交本地事务,并释放本地事务对应的连接资源。在一些实施方式中,对事务分支数据源执行的SQL进行拦截并解析,包括:根据SQL的解析结果,向逻辑锁模块查询所需数据是否被其它事务锁定。在一些实施方式中,还包括:在提交本地事务之前,根据SQL的前镜像记录及后镜像记录,请求逻辑锁模块加锁。在一些实施方式中,还包括:如果事务分支执行失败,根据回滚日志进行事务回滚。在一些实施方式中,还包括:获取全局事务管理器根据事务分支注册信息下发的事务分支提交命令;根据事务分支提交命令,清除回滚日志。在一些实施方式中,还包括:获取全局事务管理器根据事务分支注册信息下发的事务分支回滚命令;根据事务分支回滚命令,锁定查询此事务分支修改过的任意一行记录数据;如果锁定查询失败,中断当前事务分支回滚,并等待全局事务管理器重新发起事务分支回滚命令;根据事务分支回滚命令,匹配对应的回滚日志;根据回滚日志,执行事务分支回滚操作。在一些实施方式中,根据执行结果生成SQL的后镜像记录,包括:如果所执行SQL为INSERT或UPDATE语句,尝试根据前像数据及SQL解析结果进行计算;无法计算或计算失败,再根据SQL解析结果生成后像查询语句进行后像查询。在一些实施方式中,根据执行结果生成SQL的后镜像记录,包括:如果所执行SQL为INSERT语句,且未包含所有主键信息,则通过连接获取所插入行缺失的主键值,再根据获取的主键值进行后像计算或后像查询。在一些实施方式中,执行SQL,包括:如果所执行SQL为UPDATE或DELETE语句,且无法命中唯一记录,则在查询前像后,根据查询结果,修改SQL为根据前像结果进行UPDATE或DELETE。此外,本专利技术还提供了一种分布式事务处理方法,应用于全局事务管理器,包括:获取全局事务应用服务器提交的,请求记录全局事务信息的全局记录请求,并向全局事务应用服务器返回全局事务唯一标识;获取事务分支应用服务器提交的,请求记录事务分支信息的分支记录请求,并向事务分支应用服务器返回事务分支唯一标识;根据全局事务应用服务器的请求,进行全局事务提交。在一些实施方式中,还包括:根据事务分支应用服务器的请求,反馈所需数据是否被其它事务锁定。在一些实施方式中,还包括:根据事务分支应用服务器的请求,给对应事务加锁。在一些实施方式中,还包括:获取全局事务应用服务器发起的全局事务提交请求;根据事本文档来自技高网
...

【技术保护点】
1.一种分布式事务处理方法,应用于全局事务应用服务器,其特征在于,包括:/n请求全局事务管理器记录事务的全局事务信息,并获取全局事务管理器返回的全局事务唯一标识;/n执行全局事务中所有事务分支操作;/n如果全局事务任意一个事务分支执行失败,请求全局事务管理器进行全局事务回滚;/n如果全局事务所有事务分支对应的本地事务都提交成功,请求全局事务管理器进行全局事务提交。/n

【技术特征摘要】
1.一种分布式事务处理方法,应用于全局事务应用服务器,其特征在于,包括:
请求全局事务管理器记录事务的全局事务信息,并获取全局事务管理器返回的全局事务唯一标识;
执行全局事务中所有事务分支操作;
如果全局事务任意一个事务分支执行失败,请求全局事务管理器进行全局事务回滚;
如果全局事务所有事务分支对应的本地事务都提交成功,请求全局事务管理器进行全局事务提交。


2.根据权利要求1所述的分布式事务处理方法,其特征在于,还包括:
向全局事务管理器请求全局事务回滚。


3.一种分布式事务处理方法,应用于事务分支应用服务器,其特征在于,包括:
请求全局事务管理器记录事务分支的事务分支信息,并获取全局事务管理器返回的事务分支唯一标识;
对事务分支数据源执行的SQL进行拦截并解析;
根据解析结果生成SQL的前镜像记录;
执行SQL;
根据执行结果生成SQL的后镜像记录;
根据全局事务唯一标识向全局事务管理器注册事务分支,并获取全局事务管理器返回的事务分支唯一标识;
根据事务分支唯一标识,持久化当前事务分支中的前镜像记录及后镜像记录,作为回滚日志;
提交本地事务,并释放本地事务对应的连接资源。


4.根据权利要求3所述的分布式事务处理方法,其特征在于,对事务分支数据源执行的SQL进行拦截并解析,包括:
根据SQL的解析结果,向逻辑锁模块查询所需数据是否被其它事务锁定。


5.根据权利要求3所述的分布式事务处理方法,其特征在于,还包括:
在提交本地事务之前,根据SQL的前镜像记录及后镜像记录,请求逻辑锁模块加锁。


6.根据权利要求3所述的分布式事务处理方法,其特征在于,还包括:
如果事务分支执行失败,根据回滚日志进行事务回滚。


7.根据权利要求3所述的分布式事务处理方法,其特征在于,还包括:
获取全局事务管理器根据事务分支注册信息下发的事务分支提交命令;
根据事务分支提交命令,清除回滚日志。


8.根据权利要求3所述的分布式事务处理方法,其特征在于,还包括:
获取全局事务管理器根据事务分支注册信息下发的事务分支回滚命令;
根据事务分支回滚命令,锁定查询此事务分支修改过的任意一行记录数据;
如果锁定查询失败,中断当前事务分支回滚,并等待全局事务管理器重新发起事务分支回滚命令;
根据事务分支回滚命令,匹配对应的回滚日志;
根据回滚日志,执行事务分支回滚操作。


9.根据权利要求3所述的分布式事务处理方法,其特征在于,根据执行结果生成SQL的后镜像记录,包括:
如果所执行SQL为INSERT或UPDATE语句,尝试根据前像数据及SQL解析结果进行计算;
无法计算或计算失败,再根据SQL解析结果生成后像查询语句进行后像查询。


10.根据权利要求3所述的分布式事务处理方法,其特征在于,根据执行...

【专利技术属性】
技术研发人员:范凯杰薛春雨
申请(专利权)人:神州数码融信软件有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1