分布式事务的处理方法及装置、设备以及存储介质制造方法及图纸

技术编号:38756971 阅读:8 留言:0更新日期:2023-09-10 09:42
本申请提供的分布式事务的处理方法及装置、设备以及存储介质,用于分布式技术领域。该方法包括:响应于业务请求,开启目标分布式事务并记录事务流水;基于目标分布式事务的分支事务执行顺序,逐一执行分支事务,若执行成功,继续执行下一分支事务,执行失败,从上一分支事务开始补偿;通过查询接口在目标分布式事务相应的分支事务调用服务超时时,判断分支事务是否处于基于所述执行顺序反向补偿上一分支事务的状态,并基于分支事务对应的查询接口确定分支事务的当前执行状态;若是,且执行成功时基于执行顺序反向补偿上一分支事务;若是,且执行失败时悬挂目标分布式事务。本申请的方法实现了提高分布式事务处理效率和可靠性的技术效果。技术效果。技术效果。

【技术实现步骤摘要】
分布式事务的处理方法及装置、设备以及存储介质


[0001]本申请涉及分布式
,尤其涉及一种分布式事务的处理方法及装置、设备以及存储介质。

技术介绍

[0002]事务是指数据库执行过程中的一个逻辑单位,由一个有限的操作序列组成,操作序列中的操作对数据库的修改要么全部成功,要么全部失败。随着分布式微服务架构的兴起,企业已经或者正在进行数据库拆分和服务化,在微服务架构下完成某一项业务功能可能要横跨多个服务,多个服务可以分别对相应的业务库进行操作,且多个服务必须同时成功或同时失败,否则将发生数据不一致的问题,要保证这些服务之间业务数据的一致性就涉及了分布式事务。
[0003]现有技术中往往采用SAGA处理长活分布式事务,将一个分布式事务分解为多个分支事务,每个分支事务都有对应的正向接口和反向接口,当任何一个分支事务失败时,通过调用反向接口去冲正已执行成功分支事;微服务架构中要求参与分布式事务的微服务需要实现业务幂等,以避免产生因服务调用超时后重试导致业务重复执行的问题。然而银行机构在分批下移主机应用至微服务系统过程中,主机应用和微服务系统共存,存在微服务业务流程调用主机业务功能的现象,且主机功能不保证业务幂等,由于无法重新调用非幂等的分布式事务,因此即使在重试后非幂等的分布式事务执行成功,也会返回执行失败的结果,导致分布式事务挂起;现有技术中在主机应用下移过程中从方案设计上尽量避免存在主机应用功能参与微服务应用系统下的分布式事务,或者参与分布式事务的主机业务功能被调用超时后,立即中断交易执行,挂起分布式事务。<br/>[0004]由于方案设计上避免主机业务功能参与分布式事务,需要将涉及分布式事务的主机功能全部下移至微服务系统,扩大了下移范围,导致单批次下移工作量增加,延长了工期,不利于数字化转型整体规划,而在出现服务调用超时则立即挂起分布式事务,则会增加不一致分布式事务的数量,降低分布式事务一致性保障整体成功率,影响分布式事务装置可靠性;因此,现有的分布式事务的处理方法存在分布式事务的处理效率低且可靠性低的技术问题。

技术实现思路

[0005]本申请提供一种分布式事务的处理方法及装置、设备以及存储介质,用以解决现有的分布式事务的处理方法存在的处理效率低且可靠性低的问题。
[0006]第一方面,本申请提供一种目标分布式事务的处理方法,包括:
[0007]基于目标分布式事务,确定目标分布式事务对应的多个分支事务的执行顺序;其中,目标分布式事务包括执行多次产生的影响与执行一次产生的影响不相同的非幂等分支事务;
[0008]响应于业务请求,开启目标分布式事务并创建目标分布式事务流水;
[0009]基于执行顺序逐一确定待执行的分支事务,创建分支事务的分支事务流水,并执行分支事务,在分支事务执行结束后返回表征执行结果的状态码并基于状态码更新相应的分支事务流水;
[0010]在分支事务执行成功时,基于执行顺序执行下一分支事务;在分支事务执行失败时,基于执行顺序反向补偿上一分支事务,以撤销执行上一分支事务时所进行的操作;
[0011]在分支事务调用服务超时时,判断分支事务是否处于基于执行顺序反向补偿上一分支事务的状态,并基于分支事务对应的查询接口确定分支事务的当前执行状态;若是,且当前执行状态为执行成功时,基于执行顺序反向补偿上一分支事务。
[0012]可选地,在分支事务调用服务超时且分支事务不处于基于执行顺序反向补偿上一分支事务的状态时,该方法还包括:
[0013]在当前执行状态为执行成功时,基于分支事务对应微服务的正向接口根据执行顺序执行下一分支事务。
[0014]可选地,在分支事务调用服务超时且分支事务不处于基于执行顺序反向补偿上一分支事务的状态时,该方法还包括:
[0015]在当前执行状态为执行失败时,基于分支事务对应微服务的反向接口根据执行顺序反向补偿上一分支事务,以撤销执行上一分支事务时所进行的操作。
[0016]可选地,在分支事务执行成功时,返回表征分支事务执行成功的执行结果并基于执行顺序执行下一分支事务,包括:
[0017]在分支事务执行成功时,基于执行顺序确定分支事务的下一分支事务;
[0018]基于下一分支事务对应微服务的正向接口执行下一分支事务。
[0019]可选地,在分支事务执行失败时,基于执行顺序反向补偿上一分支事务,包括:
[0020]在分支事务执行失败时,基于执行顺序确定分支事务的上一分支事务;
[0021]基于上一分支事务对应微服务的反向接口反向补偿上一分支事务。
[0022]可选地,判断分支事务是否处于基于执行顺序反向补偿上一分支事务的状态,并基于分支事务对应的查询接口确定分支事务的当前执行状态,包括:
[0023]判断分支事务对应微服务的执行接口是否为正向接口;
[0024]若是,则基于分支事务对应微服务的正向查询接口确定分支事务的当前执行状态,并确定分支事务不处于基于执行顺序反向补偿上一分支事务的状态;
[0025]若否,则基于分支事务对应服务的反向查询接口确定分支事务的当前执行状态,并确定分支事务处于基于执行顺序反向补偿上一分支事务的状态。
[0026]可选地,在分支事务调用服务超时,分支事务处于基于执行顺序反向补偿上一分支事务的状态且当前执行状态为执行失败时,方法还包括:悬挂目标分布式事务。
[0027]第二方面,本申请提供一种分布式事务的处理装置,包括:
[0028]确定模块,用于基于目标分布式事务,确定目标分布式事务对应的多个分支事务的执行顺序;其中,目标分布式事务包括执行多次产生的影响与执行一次产生的影响不相同的非幂等分支事务;
[0029]开启模块,用于响应于业务请求,开启目标分布式事务并创建目标分布式事务流水;
[0030]第一处理模块,用于基于执行顺序逐一确定待执行的分支事务,创建分支事务的
分支事务流水,并执行分支事务,在分支事务执行结束后返回表征执行结果的状态码并基于状态码更新相应的分支事务流水;
[0031]第二处理模块,用于在分支事务执行成功时,基于执行顺序执行下一分支事务;在分支事务执行失败时,基于执行顺序反向补偿上一分支事务,以撤销执行上一分支事务时所进行的操作;
[0032]第三处理模块,用于在分支事务调用服务超时时,判断分支事务是否处于基于执行顺序反向补偿上一分支事务的状态,并基于分支事务对应的查询接口确定分支事务的当前执行状态;若是,且当前执行状态为执行成功时,基于执行顺序反向补偿上一分支事务。
[0033]可选地,在分支事务调用服务超时且分支事务不处于基于执行顺序反向补偿上一分支事务的状态时,该装置还用于:
[0034]在当前执行状态为执行成功时,基于分支事务对应微服务的正向接口根据执行顺序执行下一分支事务。
[0035]可选地,在分支事务调用服务超时且分支事务不处于基于执行顺序反向补偿上一分支事务的状态时,该装置还用于:...

【技术保护点】

【技术特征摘要】
1.一种分布式事务的处理方法,其特征在于,所述方法包括:基于目标分布式事务,确定所述目标分布式事务对应的多个分支事务的执行顺序;其中,所述目标分布式事务包括执行多次产生的影响与执行一次产生的影响不相同的非幂等分支事务;响应于业务请求,开启所述目标分布式事务并创建目标分布式事务流水;基于所述执行顺序逐一确定待执行的所述分支事务,创建所述分支事务的分支事务流水,并执行所述分支事务,在所述分支事务执行结束后返回表征执行结果的状态码并基于所述状态码更新相应的所述分支事务流水;在所述分支事务执行成功时,基于所述执行顺序执行下一分支事务;在所述分支事务执行失败时,基于所述执行顺序反向补偿上一分支事务,以撤销执行上一分支事务时所进行的操作;在所述分支事务调用服务超时时,判断所述分支事务是否处于基于所述执行顺序反向补偿上一分支事务的状态,并基于所述分支事务对应的查询接口确定所述分支事务的当前执行状态;若是,且所述当前执行状态为执行成功时,基于所述执行顺序反向补偿上一分支事务。2.根据权利要求1所述的处理方法,其特征在于,在所述分支事务调用服务超时且所述分支事务不处于基于所述执行顺序反向补偿上一分支事务的状态时,所述方法还包括:在所述当前执行状态为执行成功时,基于所述分支事务对应微服务的正向接口根据所述执行顺序执行下一分支事务。3.根据权利要求2所述的处理方法,其特征在于,在所述分支事务调用服务超时且所述分支事务不处于基于所述执行顺序反向补偿上一分支事务的状态时,所述方法还包括:在所述当前执行状态为执行失败时,基于所述分支事务对应微服务的反向接口根据所述执行顺序反向补偿上一分支事务,以撤销执行上一分支事务时所进行的操作。4.根据权利要求1所述的处理方法,其特征在于,所述在所述分支事务执行成功时,基于所述执行顺序执行下一分支事务,包括:在所述分支事务执行成功时,基于所述执行顺序确定所述分支事务的下一分支事务;基于下一分支事务对应微服务的正向接口执行下一分支事务。5.根据权利要求4所述的处理方法,其特征在于,所述在所述分支事务执行失败时,基于所述执行顺序反向补偿上一分支事务,包括:在所述分支事务执行失败时,基于所述执行顺序确定所述分支事务的上一分支事务;基于上一分支事务对应微服务的反向接口反向补偿上一分支事务。6.根据权利要求5所述的处理方法,其特征在于,所述判断所述分支事务是否处于基于所述执行...

【专利技术属性】
技术研发人员:石吕
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:

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

1