CN117608771A - 一种分布式事务的处理方法、系统、设备及可读存储介质 - Google Patents

一种分布式事务的处理方法、系统、设备及可读存储介质 Download PDF

Info

Publication number
CN117608771A
CN117608771A CN202311630026.XA CN202311630026A CN117608771A CN 117608771 A CN117608771 A CN 117608771A CN 202311630026 A CN202311630026 A CN 202311630026A CN 117608771 A CN117608771 A CN 117608771A
Authority
CN
China
Prior art keywords
transaction
service subsystem
target
distributed transaction
distributed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311630026.XA
Other languages
English (en)
Inventor
李伏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202311630026.XA priority Critical patent/CN117608771A/zh
Publication of CN117608771A publication Critical patent/CN117608771A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种分布式事务的处理方法、系统、设备及可读存储介质,分布式事务的处理方法应用于分布式事务的处理系统,分布式事务的处理系统包括多个服务子系统,目标服务子系统获取分布式事务的交易信息和交易深度,基于交易信息执行分布式事务,得到分布式事务的执行结果,作为目标执行结果,基于目标执行结果生成分布式事务的消息要素,基于目标服务子系统的交易深度判断目标服务子系统是否为分布式事务的发起方;若目标服务子系统是分布式事务的发起方,且分布式事务的最终处理结果为成功,则发送消息,本申请实现由分布式事务的发起方在分布式事务的最终处理结果为成功的情况下发送消息,保证消息和分布式事务状态的一致性。

Description

一种分布式事务的处理方法、系统、设备及可读存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种分布式事务的处理方法、系统、设备及可读存储介质。
背景技术
Saga模式分布式事务有多个参与方,多个参与方按照事务处理顺序处理分布式事务,当一个参与方处理本地事务成功后,发送实时消息以通知用户本地事务的处理成功,如果在该参与方后面处理分布式事务的其他参与方处理本地事务失败,将导致整个分布式事务回退,因此,造成了实时消息和实际交易状态不一致的情况,影响客户体验。
发明内容
本申请提供了一种分布式事务的处理方法、系统、设备及可读存储介质,如下:
一种分布式事务的处理方法,应用于分布式事务的处理系统,所述分布式事务的处理系统包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述分布式事务的处理方法包括:
所述目标服务子系统获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;
所述目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;
所述目标服务子系统基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;
所述目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;
若所述目标服务子系统不是所述分布式事务的发起方,所述目标服务子系统发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;
若所述目标服务子系统是所述分布式事务的发起方,所述目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功,若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
可选地,目标服务子系统获取分布式事务的交易信息和交易深度,包括:
响应于接收到所述分布式事务的发起指令,所述目标服务子系统生成所述分布式事务的交易信息,并将所述目标服务子系统的交易深度置为1;
或者,所述目标服务子系统接收所述上游服务子系统发送的分布式事务的交易信息和交易深度,将所述目标服务子系统的交易深度置为所述上游服务子系统的交易深度加1。
可选地,目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果之后,还包括:
所述目标服务子系统将所述分布式事务的交易信息和交易深度发送至所述下游服务子系统。
可选地,目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方,包括:
所述目标服务子系统判断所述目标服务子系统的交易深度是否为1;
若是,则确定所述目标服务子系统为所述分布式事务的发起方;
若否,则确定所述目标服务子系统不是所述分布式事务的发起方。
可选地,事务处理结果还包括下游事务处理结果,所述下游事务处理结果包括对应的下游执行结果和下游消息要素;
所述下游执行结果为:所述下游服务子系统基于所述交易信息执行所述分布式事务,得到的分布式事务的执行结果,
所述下游消息要素为:所述下游服务子系统基于所述分布式事务的执行结果生成的消息要素。
可选地,目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功包括:
若满足预设的成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为成功,所述包括所有所述下游执行结果均为成功、且所述目标执行结果为成功;
若不满足所述成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为失败。
可选地,目标服务子系统基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息,包括:
目标服务子系统基于所述下游消息要素,生成并发送下游消息;
目标服务子系统基于所述目标消息要素,生成并发送目标消息。
一种分布式事务的处理系统,包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述目标服务子系统包括:
事务信息获取单元,用于用于获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;
事务执行单元,用于基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;
消息生成单元,用于基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;
系统身份确定单元,用于基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;
处理结果上送单元,用于若所述目标服务子系统不是所述分布式事务的发起方,发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;
执行结果确定单元,用于若所述目标服务子系统是所述分布式事务的发起方,基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功;
消息发送单元,用于若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
一种分布式事务的处理设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现分布式事务的处理方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现分布式事务的处理方法的各个步骤。
由上述技术方案可以看出,本申请实施例提供的分布式事务的处理方法、系统、设备及可读存储介质,应用于分布式事务的处理系统,分布式事务的处理系统包括多个服务子系统,目标服务子系统为任一服务子系统,目标服务子系统获取分布式事务的交易信息和交易深度,目标服务子系统基于交易信息执行分布式事务,得到分布式事务的执行结果,作为目标执行结果,目标服务子系统基于目标执行结果生成分布式事务的消息要素,作为目标消息要素。由于交易深度指示分布式事务的调用层级,因此,目标服务子系统基于目标服务子系统的交易深度判断目标服务子系统是否为分布式事务的发起方,若目标服务子系统不是分布式事务的发起方,目标服务子系统发送目标服务子系统的事务处理结果至上游服务子系统,事务处理结果包括目标事务处理结果,目标事务处理结果包括对应的目标执行结果和目标消息要素,若目标服务子系统是分布式事务的发起方,目标服务子系统基于下游服务子系统的事务处理结果和目标事务处理结果,判断分布式事务的最终处理结果是否为成功,若分布式事务的最终处理结果为成功,则基于下游服务子系统的事务处理结果和目标事务处理结果,发送消息。本申请实现由分布式事务的发起方在分布式事务的最终处理结果为成功的情况下发送消息,保证消息和分布式事务状态的一致性,提高用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式事务的处理系统的结构示意图;
图2为本申请实施例提供的一种分布式事务的处理方法的具体实施方式的流程示意图;
图3为本申请实施例提供的一种分布式事务的处理系统的结构示意图;
图4为本申请实施例提供的一种分布式事务的处理设备的结构示意图。
具体实施方式
分布式事务:事务需要处理的资源分布于不同的分布式服务上,分布式事务在分布式系统中负责进行所有操作的数据一致性。
Saga模式:核心思想是将长事务拆分为多个本地短事务,由Saga事务协调器协调,如果正常结束那就正常完成,如果某个步骤失败,则根据相反顺序一次调用补偿操作。
分布式事务的发起方:负责启动分布式事务,通过调用参与者的服务(分支事务),将参与者纳入到分布式事务当中,并决定整个分布式事务是提交还是回滚。一个分布式事务有且只能有一个发起方。分布式事务的发起方是全局事务的开启者和编排者,是一个逻辑概念。
分布式事务的参与方:参与方提供分支事务服务。当一个参与方被发起方调用后,该参与方会被纳入到该发起方启动的分布式事务中,成为该分布式事务的一个分支事务。一个分布式事务可以有多个参与方。
分布式事务嵌套交易:在分布式环境下,某个交易涉及分布式事务,而其中一个参与方提供的分支事务服务也通过分布式事务协议完成,那么该交易被称为分布式事务嵌套交易。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,为了解决由于部分参与方执行本地事务失败导致整个分布式事务回退,造成的实时消息和实际交易状态不一致的情况,通常会再次发送实时消息以通知用户本地事务的处理失败。
例如,saga模式的分布式事务有A、B两个参与方,其中A本地事务执行完成后需要给客户端发送消息。当A本地事务执行成功,并向客户端发送了a消息,但是B本地事务执行失败,根据saga模式,A本地事务需要回退,此时分布式事务的实际状态和客户端收到的a消息不一致。
现有技术下,当B本地事务执行失败,A本地事务回退时,可以向客户端发送补偿消息a’,补偿消息a’用于指示A本地事务的最终状态,也即执行失败。但是,在海量分布式事务以及参与方的场景下,向客户端二次发送消息的方法造成消息冗余和资源浪费,并且,客户体验比较差。
基于此,本申请实施例提供了一种分布式事务的处理方法,目的在于提高消息和事务状态的一致性,并且降低资源消耗和信息冗余,从而提高客户体验。
本申请实施例提供了一种分布式事务的处理方法应用于图1所示的分布式事务的处理系统,分布式事务的处理系统包括多个服务子系统。本实施例中,分布式事务的参与方包括发起方第一服务子系统和至少一个被调用方第i服务子系统,其中,i∈[2,N],且第i-1服务子系统直接调用第i服务子系统,也即,第i-1服务子系统是第i服务子系统的上游服务子系统,第i服务子系统是第i-1服务子系统的下游服务子系统。需要说明的是,第i服务子系统可以直接调用多个下游服务子系统,在这种情况下,可以将多个下游服务子系统统称为第i+1服务子系统。图2提供了一种基于分布式事务的处理系统的分布式事务的处理方法,以任意一个服务子系统称为目标服务子系统为例,本方法包括:
S201、目标服务子系统获取分布式事务的交易信息和交易深度。
本实施例中,交易深度指示分布式事务的调用层级,例如,对于第i服务子系统,分布式事务的调用层级等于i。
可选地,若目标服务子系统为第一服务子系统,第一服务子系统获取分布式事务的交易信息和交易深度的具体方法包括:响应于接收到分布式事务的发起指令,目标服务子系统生成分布式事务的交易信息,并将目标服务子系统的交易深度置为1。其中,分布式事务的发起指令为客户端发送的发起指令,例如,第一服务子系统接收退款指令,生成退款任务的交易信息,并将当前的交易深度置为1。
可选地,若目标服务子系统为第i服务子系统,第i服务子系统获取分布式事务的交易信息和交易深度的具体方法包括:接收上游服务子系统发送的分布式事务的交易信息和交易深度,将目标服务子系统的交易深度置为上游服务子系统的交易深度加1。其中,上游服务子系统指的是直接调用第i服务子系统的服务子系统,也即第i-1服务子系统,例如,第二服务子系统接收第一服务子系统发送的分布式事务的交易信息和交易深度=1,将当前的交易深度置为2。
需要说明的是,分布式事务的交易信息可以直接从上游服务子系统获取,也可以在接收上游服务子系统的交易信息后,自动生成本地事务的交易信息,也即分布式事务嵌套交易的交易信息,这部分交易信息的传递和生成基于分布式任务的具体内容确定,具体可以参见现有技术。
S202、目标服务子系统基于交易信息执行分布式事务,得到分布式事务的执行结果,作为目标执行结果。
本实施例中,执行结果包括成功或失败。
目标服务子系统基于交易信息执行分布式事务,也即,目标服务子系统执行本地任务的方法可以参见现有技术。
S203、目标服务子系统将分布式事务的交易信息和交易深度发送至下游服务子系统。
S204、目标服务子系统基于目标执行结果生成分布式事务的消息要素,作为目标消息要素。
本实施例中,当目标执行结果为成功时,生成分布式事务的消息要素,具体生成消息要素的方法参见现有技术。
S205、目标服务子系统基于目标服务子系统的交易深度判断目标服务子系统是否为分布式事务的发起方。
本实施例中,目标服务子系统判断目标服务子系统的交易深度是否为1。若是,则确定目标服务子系统为分布式事务的发起方。若否,则确定目标服务子系统不是分布式事务的发起方。
S206、若目标服务子系统不是分布式事务的发起方,目标服务子系统发送目标服务子系统的事务处理结果至上游服务子系统,
本实施例中,事务处理结果包括目标事务处理结果,目标事务处理结果包括对应的目标执行结果和目标消息要素,并且,事务处理结果还包括下游事务处理结果,下游事务处理结果包括对应的下游执行结果和下游消息要素。
其中,下游执行结果为:下游服务子系统基于交易信息执行分布式事务,得到的分布式事务的执行结果,下游消息要素为:下游服务子系统基于分布式事务的执行结果生成的消息要素。
例如,第i-1服务子系统的事务处理结果包括第i-1服务子系统的执行结果和消息要素、以及第i服务子系统的事务处理结果。
S207、若目标服务子系统是分布式事务的发起方,目标服务子系统基于下游服务子系统的事务处理结果和目标事务处理结果,判断分布式事务的最终处理结果是否为成功。
本实施例中,判断分布式事务的最终处理结果是否为成功的具体方法为:
若满足预设的成功条件,确定分布式事务的最终处理结果为成功,成功条件包括所有下游执行结果均为成功、且目标执行结果为成功。若不满足成功条件,确定分布式事务的最终处理结果为失败。
例如,第一服务子系统基于事务处理结果中第一服务子系统的执行结果和各个第i服务子系统的执行结果,确定所有执行结果是否都是成功,若是则确定分布式事务的最终处理结果为成功,若存在至少一个执行结果为失败,则确定分布式事务的最终处理结果为失败。
S208、若分布式事务的最终处理结果为成功,目标服务子系统基于下游服务子系统的事务处理结果和目标事务处理结果,发送消息。
本实施例中,目标服务子系统基于下游消息要素,生成并发送下游消息。并基于目标消息要素,生成并发送目标消息。
例如,第一服务子系统基于事务处理结果中第i服务子系统的消息要素生成对应于第i服务子系统的消息,且基于事务处理结果中第一服务子系统的消息要素生成对应于第一服务子系统的消息。进一步地,发送各条消息至客户端。
需要说明的是,发送消息的具体方法可以参见现有技术,例如,消息要素中包括消息字段以及消息接收方,基于消息字段生成消息内容后,发送至消息接收方对应的客户端即可。
由上述技术方案可以看出,本申请实施例提供的分布式事务的处理方法实现由分布式事务的发起方在分布式事务的最终处理结果为成功的情况下发送消息,保证消息和分布式事务状态的一致性,提高用户体验。
例如,第n(n∈[1,N])服务子系统生成的消息均由发起方第一服务子系统在所有参与方(N个服务子系统:第一服务子系统~第N服务子系统)均执行本地事务(分布式服务在服务子系统中的具体事务)成功,也即所有服务子系统的交易状态为成功之后发送,由此,保证消息与服务子系统的交易状态一致,也避免现有技术中服务子系统就同一本地事务发送多次消息造成的消息冗余和资源浪费。
需要说明的是,本申请实施例提供的分布式事务的处理系统中的服务子系统可以通过在现有的服务系统中添加消息发送组件和控制层,也即服务子系统包括1、用于执行本地事务的本地事务处理模块,2、用于存储、管理、以及发送消息的消息发送组件,以及3、用于与其他服务子系统机交互和管理交易深度的控制层,可选地,在Saga分布式事务的参与方中增加控制层,所有进入应用的请求,先经控制层进行前置处理后,再去执行应用的业务逻辑,最后再通过控制层完成后置处理后返回。
本实施例中,各个模块的功能具体如下:
消息发送组件的功能包括:
1、消息登记:将待发送消息,写入预设的消息登记表中,并将待发送消息的状态置为初始化。如果本地事务执行失败,事务回滚,删除消息登记表中的待发送消息。
2、消息发送(整合消息补发):定时启动发送线程,发送线程查询消息登记表中初始化以及发送失败状态的消息,如果发送成功,将数据更新为已发送状态,如果发送失败,将消息的状态更新为发送失败,并更新失败次数和失败原因。
3、状态监控:监控消息登记表中发送失败的消息数据量情况,监控发送线程池,当出现异常时进行告警,定时登记心跳信息到数据库中,接入监控平台,当心跳停止时,产生告警。
4、异常处理:通过定时心跳信息监控服务器是否还在运行,并在监控到应用服务器宕机重启后,先将最后一次心跳时间前1分钟的消息登记表中状态为初始化和已发送的消息的状态更新为发送失败,并开始重新发送。
控制层的功能包括:
1、在分布式事务过程中记录交易深度,事务的发起方深度为1,每一次调用深度加1,即发起方直接调用的参与方深度为2,参与方再嵌套分布式事务调用其他参与方深度为3,以此类推。
控制层提供供参与方调用的消息接口,参与方可以通过该消息接口将消息要素传递给控制层。事务参与方当本地事务完成后需要发送消息时,并不直接发送消息,而是调用控制层的消息接口,控制层将消息内容写入控制层上下文中。
2、判断当前交易深度,若当前交易深度>1,则将上下文中的消息要素写入返回报文的公有域,服务调用方接收返回报文后,调用控制层接口将服务方传递的消息要素写入控制层上下文。若当前交易深度=1,且控制层上下文中有消息要素,控制层应根据交易状态确定是否发消息(写消息登记表)。若交易状态为成功,则写入消息登记表后再返回。若交易状态为不确定或失败,则记录日志,不写消息登记表。
综上,通过本申请提供的一种分布式事务的处理系统,在Saga模式分布式事务过程中,通过控制层将分布式事务所有参与方的消息要素发送至分布式事务的发起方,分布式事务的发起方的控制层根据分布式事务的状态,也即最终处理结果(成功、失败、不确定),判断是否要发送消息,若需发送消息则由控制层将消息要素写入消息登记表,由分布式事务的发起方统一发送消息。可见,分布式事务的被调用方并不会直接发送消息,而是将消息通过控制层一层层传递给分布式事务的发起方,而只有分布式事务的发起方确定整个参与分布式事务的参与方事务是不是都已经执行本地事务成功。当分布式事务所有参与方的本地事务都执行成功后,发起方控制层从上下文中获取到所有参与方的消息要素,然后发送消息,保证一定是所有事务都成功后的消息。因此,一方面该方案可以保障客户收到的消息与交易的最终状态一致,一方面也不会使客户收到多条消息(原始消息和补偿消息),提升客户体验。
图3示出了本申请实施例提供的一种分布式事务的处理系统的结构示意图,如图3所示,该系统可以包括多个服务子系统30,目标服务子系统为任一所述服务子系统,所述目标服务子系统包括:
事务信息获取单元301,用于用于获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;
事务执行单元302,用于基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;
消息生成单元303,用于基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;
系统身份确定单元304,用于基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;
处理结果上送单元305,用于若所述目标服务子系统不是所述分布式事务的发起方,发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;
执行结果确定单元306,用于若所述目标服务子系统是所述分布式事务的发起方,基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功;
消息发送单元307,用于所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
可选地,事务信息获取单元用于获取分布式事务的交易信息和交易深度,包括:事务信息获取单元具体用于:
响应于接收到所述分布式事务的发起指令,生成所述分布式事务的交易信息,并将所述目标服务子系统的交易深度置为1;
或者,接收所述上游服务子系统发送的分布式事务的交易信息和交易深度,将所述目标服务子系统的交易深度置为所述上游服务子系统的交易深度加1。
可选地,所述目标服务子系统还包括事务信息发送单元,用于基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果之后,将所述分布式事务的交易信息和交易深度发送至所述下游服务子系统。
可选地,系统身份确定单元用于基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方,包括:系统身份确定单元具体用于判断所述目标服务子系统的交易深度是否为1;若是,则确定所述目标服务子系统为所述分布式事务的发起方;若否,则确定所述目标服务子系统不是所述分布式事务的发起方。
可选地,事务处理结果还包括下游事务处理结果,所述下游事务处理结果包括对应的下游执行结果和下游消息要素;所述下游执行结果为:所述下游服务子系统基于所述交易信息执行所述分布式事务,得到的分布式事务的执行结果,所述下游消息要素为:所述下游服务子系统基于所述分布式事务的执行结果生成的消息要素。
可选地,执行结果确定单元用于基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功包括:执行结果确定单元具体用于:
若满足预设的成功条件,确定所述分布式事务的最终处理结果为成功,所述成功条件包括所有所述下游执行结果均为成功、且所述目标执行结果为成功;若不满足所述成功条件,确定所述分布式事务的最终处理结果为失败。
可选地,消息发送单元用于基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息,包括:消息发送单元具体用于:
基于所述下游消息要素,生成并发送下游消息;基于所述目标消息要素,生成并发送目标消息。
图4示出了该分布式事务的处理设备的结构示意图,该设备可以包括:至少一个处理器401,至少一个通信接口402,至少一个存储器403和至少一个通信总线404;
在本申请实施例中,处理器401、通信接口402、存储器403、通信总线404的数量为至少一个,且处理器401、通信接口402、存储器403通过通信总线404完成相互间的通信;
处理器401可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器403可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可执行存储器存储的程序,实现本申请实施例提供的一种分布式事务的处理方法的各个步骤,如下:
一种分布式事务的处理方法,应用于分布式事务的处理系统,所述分布式事务的处理系统包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述分布式事务的处理方法包括:
所述目标服务子系统获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;所述目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;所述目标服务子系统基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;所述目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;若所述目标服务子系统不是所述分布式事务的发起方,所述目标服务子系统发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;若所述目标服务子系统是所述分布式事务的发起方,所述目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功,若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
可选地,目标服务子系统获取分布式事务的交易信息和交易深度,包括:响应于接收到所述分布式事务的发起指令,所述目标服务子系统生成所述分布式事务的交易信息,并将所述目标服务子系统的交易深度置为1;或者,所述目标服务子系统接收所述上游服务子系统发送的分布式事务的交易信息和交易深度,将所述目标服务子系统的交易深度置为所述上游服务子系统的交易深度加1。
可选地,目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果之后,还包括:所述目标服务子系统将所述分布式事务的交易信息和交易深度发送至所述下游服务子系统。
可选地,目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方,包括:所述目标服务子系统判断所述目标服务子系统的交易深度是否为1;若是,则确定所述目标服务子系统为所述分布式事务的发起方;若否,则确定所述目标服务子系统不是所述分布式事务的发起方。
可选地,事务处理结果还包括下游事务处理结果,所述下游事务处理结果包括对应的下游执行结果和下游消息要素;所述下游执行结果为:所述下游服务子系统基于所述交易信息执行所述分布式事务,得到的分布式事务的执行结果,所述下游消息要素为:所述下游服务子系统基于所述分布式事务的执行结果生成的消息要素。
可选地,目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功包括:若满足预设的成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为成功,所述包括所有所述下游执行结果均为成功、且所述目标执行结果为成功;若不满足所述成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为失败。
可选地,目标服务子系统基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息,包括:目标服务子系统基于所述下游消息要素,生成并发送下游消息;目标服务子系统基于所述目标消息要素,生成并发送目标消息。
本申请实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的计算机程序,计算机程序被处理器执行时,实现本申请实施例提供的一种分布式事务的处理方法的各个步骤,如下:
一种分布式事务的处理方法,应用于分布式事务的处理系统,所述分布式事务的处理系统包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述分布式事务的处理方法包括:
所述目标服务子系统获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;所述目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;所述目标服务子系统基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;所述目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;若所述目标服务子系统不是所述分布式事务的发起方,所述目标服务子系统发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;若所述目标服务子系统是所述分布式事务的发起方,所述目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功,若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
可选地,目标服务子系统获取分布式事务的交易信息和交易深度,包括:响应于接收到所述分布式事务的发起指令,所述目标服务子系统生成所述分布式事务的交易信息,并将所述目标服务子系统的交易深度置为1;或者,所述目标服务子系统接收所述上游服务子系统发送的分布式事务的交易信息和交易深度,将所述目标服务子系统的交易深度置为所述上游服务子系统的交易深度加1。
可选地,目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果之后,还包括:所述目标服务子系统将所述分布式事务的交易信息和交易深度发送至所述下游服务子系统。
可选地,目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方,包括:所述目标服务子系统判断所述目标服务子系统的交易深度是否为1;若是,则确定所述目标服务子系统为所述分布式事务的发起方;若否,则确定所述目标服务子系统不是所述分布式事务的发起方。
可选地,事务处理结果还包括下游事务处理结果,所述下游事务处理结果包括对应的下游执行结果和下游消息要素;所述下游执行结果为:所述下游服务子系统基于所述交易信息执行所述分布式事务,得到的分布式事务的执行结果,所述下游消息要素为:所述下游服务子系统基于所述分布式事务的执行结果生成的消息要素。
可选地,目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功包括:若满足预设的成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为成功,所述包括所有所述下游执行结果均为成功、且所述目标执行结果为成功;若不满足所述成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为失败。
可选地,目标服务子系统基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息,包括:目标服务子系统基于所述下游消息要素,生成并发送下游消息;目标服务子系统基于所述目标消息要素,生成并发送目标消息。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种采集的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种分布式事务的处理方法,其特征在于,应用于分布式事务的处理系统,所述分布式事务的处理系统包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述分布式事务的处理方法包括:
所述目标服务子系统获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;
所述目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;
所述目标服务子系统基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;
所述目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;
若所述目标服务子系统不是所述分布式事务的发起方,所述目标服务子系统发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;
若所述目标服务子系统是所述分布式事务的发起方,所述目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功,若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
2.根据权利要求1所述的分布式事务的处理方法,其特征在于,所述目标服务子系统获取分布式事务的交易信息和交易深度,包括:
响应于接收到所述分布式事务的发起指令,所述目标服务子系统生成所述分布式事务的交易信息,并将所述目标服务子系统的交易深度置为1;
或者,所述目标服务子系统接收所述上游服务子系统发送的分布式事务的交易信息和交易深度,将所述目标服务子系统的交易深度置为所述上游服务子系统的交易深度加1。
3.根据权利要求2所述的分布式事务的处理方法,其特征在于,所述目标服务子系统基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果之后,还包括:
所述目标服务子系统将所述分布式事务的交易信息和交易深度发送至所述下游服务子系统。
4.根据权利要求3所述的分布式事务的处理方法,其特征在于,所述目标服务子系统基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方,包括:
所述目标服务子系统判断所述目标服务子系统的交易深度是否为1;
若是,则确定所述目标服务子系统为所述分布式事务的发起方;
若否,则确定所述目标服务子系统不是所述分布式事务的发起方。
5.根据权利要求4所述的分布式事务的处理方法,其特征在于,所述事务处理结果还包括下游事务处理结果,所述下游事务处理结果包括对应的下游执行结果和下游消息要素;
所述下游执行结果为:所述下游服务子系统基于所述交易信息执行所述分布式事务,得到的分布式事务的执行结果,
所述下游消息要素为:所述下游服务子系统基于所述分布式事务的执行结果生成的消息要素。
6.根据权利要求5所述的分布式事务的处理方法,其特征在于,所述目标服务子系统基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功包括:
若满足预设的成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为成功,所述成功条件包括所有所述下游执行结果均为成功、且所述目标执行结果为成功;
若不满足所述成功条件,所述目标服务子系统确定所述分布式事务的最终处理结果为失败。
7.根据权利要求6所述的分布式事务的处理方法,其特征在于,所述目标服务子系统基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息,包括:
所述目标服务子系统基于所述下游消息要素,生成并发送下游消息;
所述目标服务子系统基于所述目标消息要素,生成并发送目标消息。
8.一种分布式事务的处理系统,其特征在于,包括多个服务子系统,目标服务子系统为任一所述服务子系统,所述目标服务子系统包括:
事务信息获取单元,用于获取分布式事务的交易信息和交易深度,所述交易深度指示所述分布式事务的调用层级;
事务执行单元,用于基于所述交易信息执行所述分布式事务,得到所述分布式事务的执行结果,作为目标执行结果,所述执行结果包括成功或失败;
消息生成单元,用于基于所述目标执行结果生成所述分布式事务的消息要素,作为目标消息要素;
系统身份确定单元,用于基于所述目标服务子系统的交易深度判断所述目标服务子系统是否为所述分布式事务的发起方;
处理结果上送单元,用于若所述目标服务子系统不是所述分布式事务的发起方,发送所述目标服务子系统的事务处理结果至上游服务子系统,所述事务处理结果包括目标事务处理结果,所述目标事务处理结果包括对应的所述目标执行结果和目标消息要素;
执行结果确定单元,用于若所述目标服务子系统是所述分布式事务的发起方,基于下游服务子系统的事务处理结果和所述目标事务处理结果,判断所述分布式事务的最终处理结果是否为成功;
消息发送单元,用于若所述分布式事务的最终处理结果为成功,则基于所述下游服务子系统的事务处理结果和所述目标事务处理结果,发送消息。
9.一种分布式事务的处理设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~7中任一项所述的分布式事务的处理方法的各个步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~7中任一项所述的分布式事务的处理方法的各个步骤。
CN202311630026.XA 2023-11-30 2023-11-30 一种分布式事务的处理方法、系统、设备及可读存储介质 Pending CN117608771A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311630026.XA CN117608771A (zh) 2023-11-30 2023-11-30 一种分布式事务的处理方法、系统、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311630026.XA CN117608771A (zh) 2023-11-30 2023-11-30 一种分布式事务的处理方法、系统、设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN117608771A true CN117608771A (zh) 2024-02-27

Family

ID=89951284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311630026.XA Pending CN117608771A (zh) 2023-11-30 2023-11-30 一种分布式事务的处理方法、系统、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117608771A (zh)

Similar Documents

Publication Publication Date Title
CN112835688A (zh) 分布式事务处理方法、设备及存储介质
CN111062723B (zh) 一种虚拟账户转账方法、装置、系统及存储介质
CN108845866B (zh) 处理分布式事务的方法和装置
CN112995262A (zh) 分布式事务提交方法、系统及计算设备
CN109614271A (zh) 多个集群数据一致性的控制方法、装置、设备及存储介质
CN110941622A (zh) 一种数据处理方法及装置
CN111294377B (zh) 一种依赖关系的网络请求发送方法、终端装置及存储介质
CN115964198B (zh) 基于长事务的分布式柔性事务处理方法和装置
CN111143041B (zh) 一种数据一致性方法、分布式协调器及中央协调器
CN117608771A (zh) 一种分布式事务的处理方法、系统、设备及可读存储介质
CN109558254B (zh) 异步回调方法、系统、装置及计算机可读存储介质
CN113254467B (zh) 在区块链系统中执行交易的方法和区块链节点
CN116302368A (zh) 一种分布式事务处理方法、装置、设备及存储介质
CN114968498A (zh) 一种分布式事务处理方法及装置
CN116128491A (zh) 支付信息确定方法、装置、系统和电子设备
CN112598520B (zh) 交易管理的方法、装置、电子设备以及存储介质
US11500857B2 (en) Asynchronous remote calls with undo data structures
CN115292335A (zh) 事务处理方法、装置及电子设备
CN110008010A (zh) 系统调用方法、装置、设备及可读存储介质
CN116643733B (zh) 业务处理系统和方法
CN116775227A (zh) 分布式事务处理方法及系统
CN116069868B (zh) 基于企业微服务的分布式柔性事务处理方法和装置
CN116775325A (zh) 分布式事务处理方法及系统
US12105603B2 (en) Distributed transaction control system and distributed transaction control method
CN116932944A (zh) 前端资源更新方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination