一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式事务处理方法、装置、设备及存储介质与流程

2023-09-16 15:22:16 来源:中国专利 TAG:


1.本技术涉及分布式架构领域,尤其涉及一种分布式事务处理方法、装置、设备及存储介质。


背景技术:

2.saga模型是分布式事务中常用的解决方案,其满足了一致性,且并发度高,不会长期锁定资源,适合企业的运营场景。saga模型中,将长时间运行的事务(long lived transactions,llts),即全局事务,按机器节点将全局事务切分成若干个分支事务,每个分支事务包括若干个分支事务节点,每个分支事务节点都有各自的操作以及补偿操作。根据运营场景,可以对分支事务节点启用状态确认、红线标记、结束标记、异步扩展和异步重试功能,这些功能之间可以相互依存。
3.不可避免的是,网络故障或单点故障等因素,导致在分支事务节点执行时未明,进而导致分支事务处于未明状态,从而导致全局事务处于执行中状态;或,导致在分支事务节点执行补偿操作时未明,进而导致分支事务处于补偿未明状态,从而导致全局事务处于补偿中状态;技术人员的错误操作,或执行逻辑的差异等因素,导致在分支事务节点执行补偿操作时失败,进而导致分支事务处于补偿失败状态,从而导致全局事务处于补偿中状态。
4.总的来说,异常的分支事务导致全局事务处于执行中或补偿中状态,进而导致分布式事务的一致性受到影响。


技术实现要素:

5.本技术提供一种分布式事务处理方法、装置、设备及存储介质,用以解决异常的分支事务导致全局事务处于执行中或补偿中状态,进而导致分布式事务的一致性受到影响的问题。
6.第一方面,本技术提供一种分布式事务处理方法,该方法包括:
7.获取存在异常的分支事务的异常信息,异常信息用于指示分支事务的异常状态;
8.若分支事务不具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果,其中,标记分支事务节点为执行成功且具备红线标记的节点;
9.在自检结果指示自检处理失败时,将分支事务写入消息队列。
10.在一种可能的设计中,根据异常信息,对分支事务执行自检处理,得到自检结果,包括:
11.从分支事务中确定异常分支事务节点;
12.根据异常信息,对异常分支事务节点执行重试操作,并确定执行结果。
13.在一种可能的设计中,若若异常信息用于指示分支事务的异常状态为未明状态,则根据异常信息,对异常分支事务节点执行重试操作,包括:
14.根据异常信息,控制异常分支事务节点重新执行;
15.若异常信息用于指示分支事务的异常状态为补偿未明状态或补偿失败状态,则根
据异常信息,对异常分支事务节点执行重试操作,包括:
16.根据异常信息,控制异常分支事务节点重新执行补偿操作。
17.在一种可能的设计中,获取存在异常的分支事务的异常信息,包括:
18.从事务流水数据库中定时采集得到存在异常的全局事务流水;
19.根据全局事务流水,确定存在异常的分支事务,并确定分支事务的异常信息。
20.在一种可能的设计中,将分支事务写入消息队列之后,方法还包括:
21.将写入消息队列的分支事务对应的全局事务流水写入事务流水差错库,并在消息队列中删除写入消息队列的分支事务。
22.在一种可能的设计中,该方法还包括:
23.若分支事务具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果;
24.在自检结果指示自检处理成功时,调用异步扩展接口处理异常分支事务节点。
25.在一种可能的设计中,若异常信息用于指示分支事务的异常状态为未明状态,则根据异常信息,对分支事务执行自检处理,得到自检结果,包括:
26.从分支事务中确定异常分支事务节点;
27.根据异常信息,控制异常分支事务节点重新执行,并确定执行结果。
28.第二方面,本技术提供一种分布式事务处理装置,包括:
29.获取模块,用于获取存在异常的分支事务的异常信息,异常信息用于指示分支事务的异常状态;
30.处理模块,用于若分支事务不具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果,其中,标记分支事务节点为执行成功且具备红线标记的节点;
31.写入模块,用于在自检结果指示自检处理失败时,将分支事务写入消息队列。
32.第三方面,本技术提供一种电子设备,包括处理器,以及与处理器通信连接的存储器;
33.存储器存储计算机执行指令;
34.处理器执行存储器存储的计算机执行指令,以实现一种分布式事务处理方法。
35.第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现一种分布式事务处理方法。
36.第五方面,本技术提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时用于实现一种分布式事务处理方法。
37.本技术提供的一种分布式事务处理方法、装置、设备及存储介质,通过获取存在异常的分支事务的异常信息,根据该异常信息对该分支事务执行自检处理,得到自检结果,将自检结果指示自检处理失败的分支事务写入消息队列,实现了如下技术效果:将自检结果指示自检处理失败的分支事务写入消息队列,以便于后续人工处理,尽可能地保证了基于saga模型分布式事务的一致性;不具备标记分支事务节点时,提交自检结果指示自检处理成功的分支事务,让其在原本的流程中继续执行,减少人工处理的异常事务数量;具备标记分支事务节点时,在自检结果指示自检处理成功时,调用异步扩展接口进行后续扩展逻辑处理,避免了金融交易的贷记服务所在的分支事务回滚,影响分布式事务的一致性。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
39.图1为本技术实施例提供的获取存在异常的分支事务的原理示意图一;
40.图2为本技术实施例提供的分布式事务处理方法的流程示意图一;
41.图3为本技术实施例提供的分布式事务处理方法的流程示意图二;
42.图4为本技术实施例提供的分布式事务处理装置的结构示意图一;
43.图5为本技术实施例提供的电子设备硬件的结构示意图一。
44.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
45.附图标记:
46.10-分布式事务处理装置;11-获取模块;12-处理模块;13-写入模块;14-修改模块;15-异步扩展模块;
47.111-采集模块;112-第二确定模块;121-第一确定模块;122-重试模块;
48.20-电子设备;21-处理器;22-存储器;23-通信部件;24-总线。
具体实施方式
49.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
50.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
51.在企业运营场景中,通常采用单元化架构进行业务处理,在保证系统容量的同时,尽可能的减少跨单元的访问。但随着业务的精细化和复杂化,以银行为代表的企业运营场景中,需要拆分数据库和服务,因此采用基于saga模型的分布式架构进行业务处理。其中会出现各服务间跨网络远程调用的场景,每个服务都有自己的数据源,即自己的本地事务。这将会导致各数据源的数据不一致,产生分布式事务。
52.分布式事务执行过程中,网络故障或单点故障等因素,导致分支事务处于未明状态,或导致分支事务处于补偿未明状态;技术人员的错误操作或执行逻辑的差异等因素,导致分支事务处于补偿失败状态。其中,未明状态是指,执行时未明的分支事务节点所在的分支事务的状态;补偿未明状态是指,执行补偿操作时未明的分支事务节点所在的分支事务的状态;补偿未明状态是指,执行补偿操作时失败的分支事务节点所在的分支事务的状态;执行补偿操作的流程为,分支事务不具备标记分支事务节点时,即不具备红线标记的节点,其中包括,未执行的红线标记的节点,未执行成功的红线标记的节点,以及红线标记的节点之后的分支事务节点。执行时失败的分支事务节点,此时依据执行顺序,从执行时失败的分
支事务节点的上一个分支事务节点开始,反向调用各接口的补偿方法,补偿过程中根据补偿方法的返回状态执行不同的逻辑。若返回成功,则继续补充后续待补偿的分支事务节点;若返回失败,则停止补偿后续待补偿的分支事务节点,并交由人工进行后续处理。分支事务具备标记分支事务节点时,执行时失败的分支事务节点,直接交由人工进行后续处理。
53.图1为本技术实施例提供的获取存在异常的分支事务的原理示意图一。如图1所示,执行一不具备标记分支事务节点的全局事务时,需要按顺序依次执行分支事务1、分支事务2,一直到分支事务n,其中,n为不小于1的正整数。只有这n个分支事务均执行并提交成功,该全局事务才执行成功;若有一个分支事务执行失败,则所有已执行的分支事务按反方向顺序补偿。执行分支事务i之前,全局事务的状态为执行中,分支事务1至分支事务i-1的状态均为成功状态,其中i为大于1且小于n的正整数。
54.执行分支事务i之后,获取分支事务i的状态。
55.若分支事务i的状态为未明状态,则既无法执行分支事务i 1,也无法进行补偿。此时,全局事务的状态为执行中,分支事务1至分支事务i-1的状态均为成功状态,分支事务i的状态为未明状态。
56.若分支事务i的状态为失败,则分支事务i-1按反方向顺序补偿。此时,全局事务的状态为补偿中,分支事务1至分支事务i-2的状态均为成功状态。
57.执行分支事务i-1之后,获取分支事务i-1的状态。
58.若分支事务i-1的状态为补偿未明状态,则无法执行分支事务i-2。此时,全局事务的状态为补偿中,分支事务1至分支事务i-2的状态均为成功状态,分支事务i-1的状态为补偿未明状态。
59.若分支事务i-1的状态为补偿失败状态,则无法执行分支事务i-2。此时,全局事务,分支事务1至分支事务i-2,以及分支事务i的状态同上,分支事务i-1的状态为补偿失败状态。
60.总的来说,saga模型虽然满足了一致性,但是异常的分支事务导致全局事务处于执行中或补偿中状态,进而导致分布式事务的一致性受到影响
61.针对上述问题,本技术提供的分布式事务处理方法、装置、设备及存储介质,通过对分支事务执行自检处理,在自检结果指示自检处理失败时,将该分支事务标记为高可靠消息,减少了存在异常的分支事务,提高了分布式事务的一致性。具体的,网络故障或单点故障等因素,导致在分支事务节点执行时未明,进而导致分支事务处于未明状态,从而导致全局事务处于执行中状态;或,导致在分支事务节点执行补偿操作时未明,进而导致分支事务处于补偿未明状态,从而导致全局事务处于补偿中状态;技术人员的错误操作,或执行逻辑的差异等因素,导致在分支事务节点执行补偿操作时失败,进而导致分支事务处于补偿失败状态,从而导致全局事务处于补偿中状态。考虑到这些问题,提供一种分布式事务的自检服务,来提高分支事务的处理效率。基于此,提出本技术的技术方案。
62.需要说明的是,本技术提供一种分布式事务处理方法和装置可用于分布式架构领域,也可用于除分布式架构领域之外的任意领域,本技术提供一种分布式事务处理方法和装置的应用领域不做限定。
63.首先对本技术所涉及的相关概念或名词进行解释:
64.分布式事务:是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器
分别位于不同的分布式系统的不同节点之上,且一般分属于不同的应用。如果分布式事务中所有分支事务都执行并提交成功,则全局事务执行成功;如果其中某个分支事务执行或提交失败,通过数据回查接口,对分支事务节点按反向顺序依次执行补偿操作。
65.自检处理:是指在存在异常的分支事务中,确定异常分支事务节点,并对该节点执行重试操作的步骤。自检处理的作用是,从获取到的状态为执行中或补偿中的全局事务中,确定状态为未明状态、补偿未明状态或补偿失败状态的分支事务。
66.红线标记的节点:是指对分支事务节点进行红线标记。红线标记的节点一旦执行成功,该节点所在的分支事务便不再触发回滚机制。金融交易的贷记服务通常需要红线标记,其他维护类交易不会出现资金交易的,无需红线标记,其中,一借多贷中将第一个贷记服务所在的节点进行红线标记。红线标记配置成功后,红线标记节点在展示时会进行醒目的展示。
67.异步扩展:是指在红线标记的节点或该节点之后的分支事务节点上的一种配置。联机交易执行过程中,若具备已执行成功且进行红线标记的节点,自检服务检查出该全局事务流水,在确认未明节点执行成功后,调用异步扩展接口进行后续扩展逻辑处理。
68.结束节点:是指结束节点标记接口标记的任一分支事务节点。若分支事务中存在结束节点,一旦执行到结束节点,无论结束节点所在的分支事务正在执行什么进程,均结束并提交;若分支事务中没有结束节点,该分支事务执行完成后结束并提交。
69.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
70.图2为本技术实施例提供的分布式事务处理方法的流程示意图一。如图2所示,该方法包括:
71.s101、获取存在异常的分支事务的异常信息,异常信息用于指示分支事务的异常状态;
72.具体来说,异常信息不仅指示了该分支事务是异常的分支事务,还指示了该分支事务的异常状态。执行自检处理的分支事务的异常状态包括:未明状态、补偿未明状态以及补偿失败状态
73.相应的,分支事务的状态除了异常状态,还包括正常状态。分支事务的正常状态包括:成功状态以及补偿成功状态。其中,成功状态是指,分支事务中所有分支事务节点均执行成功,且该分支事务提交成功;补偿提交状态是指,分支事务中所有分支事务节点均执行补偿操作成功,且该分支事务提交成功。
74.s102、若分支事务不具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果;
75.s103、在自检结果指示自检处理失败时,将分支事务写入消息队列。
76.具体来说,标记分支事务节点为已执行且具备红线标记的节点。事务一致性是通过联机处理、自检处理、差错监控三层共同保障的。自检处理是对联机交易时存在异常的分支事务进行再次尝试,尽可能保证最终事务一致性。自检服务通过比对事务组件记录的事务状态,检查异常状态的分布式事务流水,找出业务状态不一致的事务,进行自动调整或登记以便于人工后续处理。在自检结果指示自检处理失败时,说明自检处理后该事物仍不满
足一致性,将其写入消息队列中。
77.补偿未明状态或补偿失败状态的分支事务的自检处理的前提条件是,该分支事务不具备标记分支事务节点。红线标记的处理逻辑是,在全局事务开始执行之前,判断该全局事务中是否存在需要红线标记的节点,若存在,则由外部配置对该节点进行红线标记;若不存在,则不需要进行红线标记。联机交易执行过程中,若分支事务具备标记事务节点,此时分支事务出现未明状态,导致交易中断,则对该分支事务执行自检处理,自检结果指示自检处理成功时,调用异步扩展接口进行后续扩展逻辑处理。
78.对状态为未明状态的分支事务执行自检处理,若自检处理之后该分支事务的状态依然为未明状态,自检结果指示自检处理失败;若自检处理之后该分支事务的状态为成功状态,自检结果指示自检处理成功。对状态为补偿未明状态或补偿失败状态的分支事务执行自检处理,执行的操作以及达成的效果,与对状态为未明状态的分支事务执行自检处理时相同,本实施例中不再赘述。
79.提交自检结果指示自检处理成功的分支事务,让其在原本的流程中继续执行;将自检结果指示自检处理失败的分支事务,写入消息队列,以便于后续进行人工处理。
80.本实施例提供的分布式事务处理方法,通过获取存在异常的分支事务的异常信息,根据该异常信息对该分支事务执行自检处理,得到自检结果,将自检结果指示自检处理失败的分支事务写入消息队列,实现了如下技术效果:将自检结果指示自检处理失败的分支事务写入消息队列,以便于后续人工处理,尽可能地保证了基于saga模型分布式事务的一致性;不具备标记分支事务节点时,提交自检结果指示自检处理成功的分支事务,让其在原本的流程中继续执行,减少人工处理的异常事务数量;具备标记分支事务节点时,在自检结果指示自检处理成功时,调用异步扩展接口进行后续扩展逻辑处理,避免了金融交易的贷记服务所在的分支事务回滚,影响分布式事务的一致性。
81.图3为本技术实施例提供的分布式事务处理方法的流程示意图二。如图3所示,本实施例是在图2实施例的基础上,对分布式事务处理方法进行详细说明,分布式事务处理方法方法包括:
82.s201、从事务流水数据库中定时采集得到存在异常的全局事务流水;
83.具体来说,分布式事务处理方法实现的主要功能,包括事务信息采集功能。事务信息采集功能是指,执行该方法的装置与事务流水数据库通讯连接,进行数据交换,从中获取存在异常的全局事务流水。外部装置处理全局事务时,事务流水数据库以流水的形式记录全局事务,得到全局事务流水。技术人员预先设置好全局事务流水采集的间隔时间,每间隔该时间,执行该方法的装置便从事务流水数据库中采集这段时间新增的所有全局事务对应的全局事务流水,并从中获取存在异常的全局事务流水。
84.具体过程包括:首先,获取新增的全局事务的状态,全局事务的状态包括:执行中、补偿中、成功状态、失败状态、以及补偿成功状态。其中,执行中的全局事务是指,组成该全局事务的一分支事务正在执行,或处于未明状态;补偿中的全局事务是指,组成该全局事务的一分支事务正在补偿,或处于补偿未明状态,或处于补偿失败状态;成功状态的全局事务是指,组成该全局事务的所有分支事务均为成功状态;失败状态的全局事务是指,组成该全局事务的任一分支事务为失败状态;补偿成功状态的全局事务是指,组成该全局事务的任一分支事务为失败状态,但之前所有已执行的分支事务均为补偿成功状态。
85.其次,从这些状态的全局事务中,获取状态为执行中或补偿中的全局事务对应的全局事务流水。成功状态和补偿成功状态的分支事务已执行完成,因此不需要执行自检服务;失败状态的全局事务会自动进入补偿状态,因此也不需要执行自检服务。
86.最后,将获取到的存在异常的全局事务流水写入全局事务流水表中,以便于执行后续的分支事务自检服务,全局事务流水表存储在该装置的内存中。
87.s202、根据全局事务流水,确定存在异常的分支事务,并确定分支事务的异常信息;
88.具体来说,从全局事务流水中确定存在异常的分支事务。执行中的全局事务包括正在执行和处于未明状态的分支事务,从中获取处于未明状态的分支事务;补偿中的全局事务包括正在补偿、处于补偿未明状态和处于补偿失败状态的分支事务,从中获取处于补偿未明状态和处于补偿失败状态的分支事务。
89.确定分支事务是否具备标记分支事务节点,若不具备标记分支事务节点,则执行步骤s203;若具备标记分支事务节点,则执行步骤s207。
90.s203、若分支事务不具备标记分支事务节点,则从分支事务中确定异常分支事务节点;
91.具体来说,获取存在异常的分支事务的异常信息,以及分支事务不具备标记分支事务节点,实施例一中已进行详细阐述,本实施例中不再赘述。
92.以获取的分支事务的状态,包括未明状态、补偿未明状态以及补偿失败状态。状态为未明的分支事务,正在执行的分支事务节点执行未明,从该分支事务中确定该异常分支事务节点;状态为补偿未明状态的分支事务,正在执行的分支事务节点执行补偿操作时未明,从该分支事务中确定该异常分支事务节点;状态为补偿失败状态的分支事务,正在执行的分支事务节点执行补偿操作时失败,从该分支事务中确定该异常分支事务节点。
93.从全局事务流水表中获取存在异常的分支事务,并将存在异常的分支事务以流水的形式写入分支事务流水表中,以便于获取异常分支事务节点,分支事务流水表存储在该装置的内存中。
94.s204、若异常信息用于指示分支事务的异常状态为未明状态,则根据异常信息,控制异常分支事务节点重新执行;
95.若异常信息用于指示分支事务的异常状态为补偿未明状态或补偿失败状态,则根据异常信息,控制异常分支事务节点重新执行补偿操作;
96.具体来说,对异常分支事务执行重试操作,相当于对存在异常的分支事务执行自检处理,将异常状态可以更正的分支事务筛选掉,以减少人工处理的分支事务数量。
97.对执行时未明的异常分支事务节点重新执行,若依然执行未明,则执行结果指示重新执行失败,即自检结果指示自检处理失败;若执行成功,则执行结果指示重新执行成功,即自检结果指示自检处理成功。对执行补偿操作时未明或失败的异常分支事务节点重新执行补偿操作,执行的操作以及达成的效果,与对执行时未明的异常分支事务节点重新执行相同,本实施例中不再赘述。需要注意的是,控制异常分支事务节点重新执行或重新执行补偿操作时,根据预设的衰减重试规则,进行至少一次重试后,写入消息队列。
98.在分支事务处理过程中,启用了事务结束标记功能,处理人员可以预先将任何节点标记为结束标记的节点。执行过程中,执行到该结束标记的节点,则在该节点执行成功后
提交该节点所在的分支事务;在该节点执行未明时,重新执行该节点,并确定执行结果;在该节点执行失败时,执行该节点的补偿操作,若执行补偿操作时未明或失败,重新执行该节点,并确定执行结果;没有执行到该结束标记的节点,则在分支事务执行结束后提交该分支事务。
99.一个流程只允许一段分布式事务,即组合服务流程中结束节点后不能再有分支事务节点;当分支事务提交后,执行新的分支事务就会覆盖上一个分支事务,结束节点的作用是保证一个流程中不会出现多个分支事务。
100.s205、在自检结果指示自检处理失败时,将分支事务写入消息队列;
101.具体来说,将自检结果指示自检处理失败的分支事务,即执行结果指示重新执行失败,的异常分支事务节点所在的分支事务写入消息队列,以便于后续进行人工处理。
102.写入分支事务的消息队列,其存储能力有限,需要技术人员及时处理消息队列中的分支事务,并及时清理已处理的消息队列中的分支事务,以防止其内存溢出。执行该方法的装置与事务流水差错库通讯连接,进行数据交换,执行完s205之后,该方法还包括:
103.s206、将写入消息队列的分支事务对应的全局事务流水写入事务流水差错库,并在消息队列中删除写入消息队列的分支事务;
104.具体来说,分布式事务处理方法实现的主要功能,除了上述中的一致性状态维护以及事务信息采集,还包括数据清理。将写入消息队列的分支事务所在的全局事务,以流水的形式写入事务流水差错库中,避免由于技术人员未及时消息队列中的分支事务,导致其内存溢出。同时,删除该装置中存储的所有数据,包括消息队列中的分支事务、全局事务流水表和分支事务流水表的数据,以便于新增的全局事务流水的处理。
105.s207、若分支事务具备标记分支事务节点,且异常信息用于指示分支事务的异常状态为未明状态,则从分支事务中确定异常分支事务节点;
106.s208、根据异常信息,控制异常分支事务节点重新执行,并确定执行结果;
107.具体来说,标记分支事务节点为已执行成功且具备红线标记的节点。由于该分支事务不再触发回滚机制,因此,红线标记的节点执行成功后,即使后续分支事务节点执行失败,也不可以补偿,该分支事务要么写入消息队列,要么进行异步扩展。
108.若异常信息用于指示分支事务的异常状态为未明状态,则对分支事务执行自检处理。对该分支事务执行自检处理,与上述步骤s203的确定异常分支事务节点,以及步骤s204的控制异常分支事务节点重新执行类似,在此不再赘述。
109.若异常信息用于指示分支事务的异常状态不为未明状态,即失败状态,则不能对分支事务执行自检处理,而是直接将该分支事务写入消息队列,以便于人工处理。
110.s209、在自检结果指示自检处理成功时,调用异步扩展接口处理异常分支事务节点;
111.具体来说,对执行时未明的异常分支事务节点重新执行,
112.若执行成功,则执行结果指示重新执行成功,即自检结果指示自检处理成功,这种情况下,调用异步扩展接口处理异常分支事务节点。
113.若依然执行未明,则执行结果指示重新执行失败,即自检结果指示自检处理失败,这种情况下,将该分支事务写入消息队列。
114.以下对分布式事务处理方法进行具体的说明。
115.执行该方法的装置,即自检服务,从事务流水数据库中采集状态为执行中或补偿中的全局事务对应的全局事务流水,并对其中的状态为未明状态、补偿未明状态和补偿失败状态的分支事务执行自检处理,即对异常分支事务节点执行重试操作。不同状态的分支事务执行自检处理时步骤不同。
116.若分支事务不具备标记分支事务节点,则在分支事务的状态为未明状态时,控制异常分支事务节点重新执行;或,在分支事务的状态为补偿未明状态时,如配置衰减重试,控制异常分支事务节点重新执行补偿操作;或,在分支事务的状态为补偿失败状态时,控制异常分支事务节点重新执行补偿操作。当执行结果指示自检处理失败,将该异常分支事务节点所在的分支事务写入消息队列。
117.若分支事务具备标记分支事务节点,则在分支事务的状态为失败状态时,将该异常分支事务节点所在的分支事务写入消息队列;在分支事务的状态为未明状态时,控制异常分支事务节点重新执行,当执行结果指示自检处理成功,调用异步扩展接口处理异常分支事务节点;当执行结果指示自检处理失败,将该异常分支事务节点所在的分支事务写入消息队列。
118.若分支事务正在执行的节点为红线标记的节点,则在分支事务的状态为未明状态时,控制异常分支事务节点重新执行,与分支事务具备标记分支事务节点时类似,在此不再赘述;在分支事务的状态为失败状态时,控制异常分支事务节点重新执行补偿操作,与分支事务不具备标记分支事务节点时类似,在此不再赘述。
119.执行完步骤s209之后,继续执行步骤s205和步骤s206,具体的执行步骤与上述实施例相似,在此不再赘述。
120.本实施例提供的分布式事务处理方法,通过获取存在异常的分支事务的异常信息,根据该异常信息对该分支事务执行自检处理,得到自检结果,将自检结果指示自检处理失败的分支事务写入消息队列,实现了如下技术效果:自检结果指示自检处理失败的分支事务写入消息队列,以便于后续人工处理,尽可能地保证了基于saga模型分布式事务的一致性;不具备标记分支事务节点时,提交自检结果指示自检处理成功的分支事务,让其在原本的流程中继续执行,减少人工处理的异常事务数量;具备标记分支事务节点时,在自检结果指示自检处理成功时,调用异步扩展接口进行后续扩展逻辑处理,避免了金融交易的贷记服务所在的分支事务回滚,影响分布式事务的一致性;每间隔预设的间隔时间,便从事务流水数据库中采集存在异常的全局事务流水,并在写入消息队列后删除产生的全局事务流水表和分支事务流水表,以进行下一次的采集,确保所有存在异常的分支事务均执行自检处理;将写入消息队列的分支事务对应的全局事务流水写入事务流水差错库,避免了处理人员未及时处理自检处理失败的分支事务,导致内存溢出的问题。
121.本发明实施例可以根据上述方法示例对电子设备或主控设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
122.图4为本技术实施例提供的分布式事务处理装置的结构示意图一。如图4所示,本技术实施例提供的一种分布式事务处理装置10,包括:获取模块11、处理模块12和写入模块
13;
123.获取模块11,用于获取存在异常的分支事务的异常信息,异常信息用于指示分支事务的异常状态;
124.处理模块12,用于若分支事务不具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果,其中,标记分支事务节点为执行成功且具备红线标记的节点;
125.写入模块13,用于在自检结果指示自检处理失败时,将分支事务写入消息队列。
126.在一种可能的设计中,处理模块12,包括:第一确定模块121和重试模块122;
127.第一确定模块121,用于从分支事务中确定异常分支事务节点;
128.重试模块122,用于根据异常信息,对异常分支事务节点执行重试操作,并确定执行结果。
129.在一种可能的设计中,重试模块122,用于若异常信息用于指示分支事务的异常状态为未明状态,则根据异常信息,控制异常分支事务节点重新执行;若异常信息用于指示分支事务的异常状态为补偿未明状态或补偿失败状态,则根据异常信息,控制异常分支事务节点重新执行补偿操作。
130.在一种可能的设计中,获取模块11,包括:采集模块111和第二确定模块112;
131.采集模块111,用于从事务流水数据库中定时采集得到存在异常的全局事务流水;
132.第二确定模块112,用于根据全局事务流水,确定存在异常的分支事务,并确定分支事务的异常信息。
133.在一种可能的设计中,分布式事务处理装置10,还包括:修改模块14;
134.修改模块14,用于将写入消息队列的分支事务对应的全局事务流水写入事务流水差错库,并在消息队列中删除写入消息队列的分支事务。
135.在一种可能的设计中,分布式事务处理装置10,还包括:异步扩展模块15;
136.处理模块12,用于若分支事务具备标记分支事务节点,则根据异常信息,对分支事务执行自检处理,得到自检结果;
137.异步扩展模块15,用于在自检结果指示自检处理成功时,调用异步扩展接口处理异常分支事务节点。
138.在一种可能的设计中,第一确定模块121,用于从分支事务中确定异常分支事务节点;
139.重试模块122,用于若异常信息用于指示分支事务的异常状态为未明状态,根据异常信息,控制异常分支事务节点重新执行,并确定执行结果。
140.本实施例提供的一种分布式事务处理装置,可执行上述实施例的一种分布式事务处理方法,其实现原理和技术效果类似,本实施例此处不再赘述。
141.在前述的一种分布式事务处理方法的具体实现中,各模块可以被实现为处理器,处理器可以执行存储器中存储的计算机执行指令,使得处理器执行上述一种分布式事务处理方法。
142.图5为本技术实施例提供的电子设备硬件的结构示意图一。如图5所示,该电子设备20包括:至少一个处理器21和存储器22。该电子设备20还包括通信部件23。其中,处理器21、存储器22以及通信部件23通过总线24连接。
143.在具体实现过程中,至少一个处理器21执行存储器22存储的计算机执行指令,使得至少一个处理器21执行如上电子设备侧所执行的一种分布式事务处理方法。
144.处理器21的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
145.在上述实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
146.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。
147.总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
148.上述针对电子设备以及主控设备所实现的功能,对本发明实施例提供的方案进行了介绍。可以理解的是,电子设备或主控设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的技术方案的范围。
149.本技术还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上一种分布式事务处理方法。
150.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
151.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于电子设备或主控设备中。
152.本技术还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
153.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过
程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
154.在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
155.需要说明的是,本技术实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
156.在本技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。
157.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
158.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表