CN113296897B - 一种分布式事务的处理方法、装置、设备和机器可读介质 - Google Patents

一种分布式事务的处理方法、装置、设备和机器可读介质 Download PDF

Info

Publication number
CN113296897B
CN113296897B CN202010706300.7A CN202010706300A CN113296897B CN 113296897 B CN113296897 B CN 113296897B CN 202010706300 A CN202010706300 A CN 202010706300A CN 113296897 B CN113296897 B CN 113296897B
Authority
CN
China
Prior art keywords
transaction
node
branch
request
action
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.)
Active
Application number
CN202010706300.7A
Other languages
English (en)
Other versions
CN113296897A (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010706300.7A priority Critical patent/CN113296897B/zh
Publication of CN113296897A publication Critical patent/CN113296897A/zh
Application granted granted Critical
Publication of CN113296897B publication Critical patent/CN113296897B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种分布式事务的处理方法、装置、设备和机器可读介质,所述的方法包括:拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;在所述相关动作为提交动作的情况下,不执行所述提交动作;根据所述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求。本申请实施例可以提高分布式事务的处理性能。

Description

一种分布式事务的处理方法、装置、设备和机器可读介质
技术领域
本申请涉及通信技术领域,特别是涉及一种分布式事务的处理方法、一种分布式事务的处理装置、一种设备和一种机器可读介质。
背景技术
事务(Transaction)是一个操作序列为实现特定服务功能而访问数据库的逻辑工作单位,通常包含本地事务和分布式事务。分布式事务是指在分布式***中有若干个事务分支构成的事务,这些事务分支可能横跨不同的资源,分布式事务要求在事务的执行过程中多个事务分支间保持相对一致。
在一个分布式事务结束的情况下,事务的一致性要求涉及到的数据库操作要么全部提交,要么全部中止。为了实现上述需求,分布式事务的处理通常采用二阶段提交方式。在第一阶段,由发起者(或称协调者)向参与者发送准备请求,用来询问参与者是否可以完成由其负责的分布式事务分支,参与者向发起者回复一阶段处理成功或失败的结果。在第二阶段,如果所有的参与者都回复一阶段处理成功,则发起者向所有参与者发送二阶段提交请求;否则发起者向所有参与者发送二阶段回滚请求,参与者根据发起者的二阶段请求执行提交或回滚操作。
发明人在实施本申请实施例的过程中发现,在第一阶段,参与者在收到准备请求后,如果可以提交自身的事务分支,则会将undo(撤销还原)和redo(重做)信息记录到事务日志中;上述日志操作将会影响分布式事务的处理性能。
并且,为了实现分布式事务的隔离性,例如,为了避免一个事务未提交的数据被另一个事务读取,参与者会设置全局锁,具体地,针对读操作设置读锁、以及针对写操作设置写锁,这样实现较高的隔离级别。然而,上述全局锁将会影响分布式事务的处理性能。
发明内容
本申请实施例所要解决的技术问题是提供一种分布式事务的处理方法,可以提高分布式事务的处理性能。
相对应的,本申请实施例还提供了一种分布式事务的处理装置、一种设备、以及一种机器可读介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第一节点,所述方法包括:
拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
根据所述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第二节点,所述方法包括:
拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第三节点,所述方法包括:
接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据库操作命令的执行结果得到;
向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在所述数据库操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第一节点,所述方法包括:
拦截本地事务分支对应数据操作命令的相关动作;所述数据操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
根据所述分布式事务中事务分支对应数据操作命令的执行结果,向第三节点发送全局请求。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第二节点,所述方法包括:
拦截本地事务分支对应数据操作命令的相关动作;所述数据操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作。
为了解决上述问题,本申请实施例公开了一种分布式事务的处理方法,应用于第三节点,所述方法包括:
接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据操作命令的执行结果得到;
向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据操作命令,并在所述数据操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
另一方面,本申请实施例还公开了一种分布式事务的处理装置,应用于第一节点,包括:
拦截模块,用于拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
不提交模块,用于在所述相关动作为提交动作的情况下,不执行所述提交动作;
全局请求发送模块,用于根据所述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求。
另一方面,本申请实施例还公开了一种分布式事务的处理装置,应用于第二节点,所述装置包括:
拦截模块,用于拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
不提交模块,用于在所述相关动作为提交动作的情况下,不执行所述提交动作。
另一方面,本申请实施例还公开了一种分布式事务的处理装置,应用于第三节点,所述装置包括:
全局请求接收模块,用于接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据库操作命令的执行结果得到;
分支请求发送模块,用于向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在所述数据库操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
再一方面,本申请实施例还公开了一种设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由上述一个或多个处理器执行时,使得上述设备执行前述一个或多个上述的方法。
又一方面,本申请实施例公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得设备执行前述一个或多个上述的方法。
本申请实施例包括以下优点:
本申请实施例拦截本地事务分支对应数据库操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读(RR,REPEATABLEREAD)的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
并且,在数据库的连接对象的环境中执行本地事务分支后,在不提交本地事务分支的情况下,可以依据提交方法进行本地事务分支的提交,或者,可以依据回滚方法进行本地事务分支的回滚,或者,在发生宕机的情况下,可以自动进行本地事务分支的回滚。这样,本申请实施例可以在不执行undo信息和redo信息对应的日志操作的情况下,实现本地事务分支后续的提交动作或回滚动作。由于本申请实施例可以节省本地事务分支的日志操作对应的成本,因此能够提高分布式事务的处理性能。
附图说明
图1是本申请实施例的一种分布式***的示意图;
图2是本申请的一种分布式事务的处理方法实施例一的步骤流程图;
图3是本申请的一种分布式事务的处理方法实施例二的步骤流程图;
图4是本申请的一种分布式事务的处理方法实施例三的步骤流程图;
图5是本申请的一种分布式事务的处理方法实施例四的步骤流程图;
图6是本申请的一种分布式事务的处理方法实施例二的步骤流程图;
图7是本申请的一种分布式事务的处理方法实施例三的步骤流程图;
图8是本申请的一种分布式事务的处理方法实施例四的步骤流程图;
图9是本申请的一种分布式事务的处理装置实施例的结构框图;
图10是本申请的一种分布式事务的处理装置实施例的结构框图;
图11是本申请的一种分布式事务的处理装置实施例的结构框图;以及
图12是可被用于实现本申请中上述的各个实施例的示例性设备1300。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的构思易于进行各种修改和替代形式,其具体实施例已经通过附图的方式示出,并将在这里详细描述。然而,应该理解,上述内容并不是用来将本申请的构思限制为所公开的具体形式,相反地,本申请的说明书和权利要求书意欲覆盖所有的修改、等同和替代的形式。
本说明书中的“一个实施例”,“实施例”,“一个具体实施例”等,表示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以包括或可以不必然包括该特定特征、结构或特性。此外,这样的短语不一定指的是同一实施例。另外,在联系一个实施例描述特定特征、结构或特性的情况下,无论是否明确描述,可以认为本领域技术人员所知的范围内,这样的特征、结构或特性也与其他实施例有关。另外,应该理解的是,“在A,B和C的至少一个”这种形式所包括的列表中的条目中,可以包括如下可能的项目:(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。同样,“A,B或C中的至少一个”这种形式列出的项目可能意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。
在一些情况下,所公开的实施例可以被实施为硬件、固件、软件或其任意组合。所公开的实施例也可以实现为携带或存储在一个或多个暂时的或者非暂时的机器可读(例如计算机可读)存储介质中的指令,该指令可以被一个或多个处理器执行。机器可读存储介质可以实施为用于以能够被机器读取的形式存储或者传输信息的存储装置、机构或其他物理结构(例如易失性或非易失性存储器、介质盘、或其他媒体其它物理结构装置)。
在附图中,一些结构或方法特征可以以特定的安排和/或排序显示。然而,优选地,这样的具体安排和/或排序并不是必要的。相反,在一些实施方案中,这样的特征可以以不同的方式和/或顺序排列,而不是如附图中所示。此外,特定的附图中的结构或方法特征中所包含的内容,不意味着暗示这种特征是在所有实施例是必须的,并且在一些实施方案中,可能不包括这些特征,或者可能将这些特征与其它特征相结合。
本申请实施例可以应用于分布式事务的处理场景,用于提高分布式事务的处理性能。分布式事务可以涉及多次数据库操作的事务,多次数据操作可以是对不同数据库的操作,也可以是对一个数据库的多次操作。
分布式事务的处理场景的例子可以包括:交易场景、或者用户管理场景等。
以交易场景为例,假设一个交易为用户A向用户B转账200元,该交易的处理流程可以包括:交易开始;调用转出服务,A转出200元;调用转入服务,B转入200元;交易结束。由于转出服务或转入服务可能位于不同的进程,或者,用户A的账户和用户B的账户位于不同的数据库,因此,该交易涉及分布式事务。
假设用户管理场景为新用户送积分场景,对应的处理流程可以包括:开始;调用新增用户服务;调用增加积分服务;结束。由于新增用户服务或增加积分服务可能位于不同的进程、或者涉及不同的数据库,因此,该处理流程涉及分布式事务。
传统的分布式事务的处理方法,通常会将undo信息和redo信息记录到事务日志中,并且设置全局锁,以实现分布式事务的隔离性。上述日志操作和全局锁,将会影响分布式事务的处理性能。
针对日记操作和全局锁影响分布式事务的处理性能的技术问题,本申请实施例提供了一种分布式事务的处理方法,该方法具体包括:拦截本地事务分支对应数据库操作命令的相关动作;上述数据库操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;上述数据库的连接对象与上述分布式事务相匹配;在上述相关动作为提交动作的情况下,不执行上述提交动作。
本申请实施例在数据库的连接对象的环境中,执行本地事务分支对应的数据库操作命令(以下简称执行本地事务分支)。连接对象可以表征与数据库进行的会话。
在数据库的连接对象的环境中执行本地事务分支后,可以依据提交(commit)方法进行本地事务分支的提交,或者,可以依据回滚(rollback)方法进行本地事务分支的回滚,如果不提交,则本地事务分支对应的数据不会真正的***到连接对象对应的数据库中。
本申请实施例拦截本地事务分支对应数据库操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读(RR,REPEATABLEREAD)的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
并且,在数据库的连接对象的环境中执行本地事务分支后,在不提交本地事务分支的情况下,可以依据提交方法进行本地事务分支的提交,或者,可以依据回滚方法进行本地事务分支的回滚。这样,本申请实施例可以在不执行undo信息和redo信息对应的日志操作的情况下,实现本地事务分支后续的提交动作或回滚动作。由于本申请实施例可以节省本地事务分支的日志操作对应的成本,因此能够提高分布式事务的处理性能。
参照图1,示出了本申请实施例的一种分布式***的示意图,该分布式***具体可以包括:第一节点101、第二节点102和第三节点103。
其中,第一节点101可以为分布式事务的全局管理节点,其上可以运行有GTM(全局事务管理器,global transaction manager),以管理分布式事务的全局事务。第一节点101还可以管理分布式事务的事务分支,如图1中的事务分支1。
至少一个第二节点102可以为分布式事务的本地管理节点,其上可以运行有LTM(本地事务管理器,local transaction manager),以管理分布式事务的事务分支,如图1中的事务分支2~事务分支n,其中,n可以为大于1的自然数。
第三节点103可以为分布式事务的事务协调节点,其上可以运行有TC(事务协调器,transaction coordinator),以维护分布式事务的运行状态,以及协调并驱动分布式事务的提交或回滚。
本发明实施例中,可以利用调用服务的方式,触发事务分支2~事务分支n。
例如,第一节点101依据事务分支1,调用事务分支2对应的服务,以及,调用事务分支3对应的服务。
又如,第一节点101依据事务分支1,调用事务分支2对应的服务,以及,第二节点102依据事务分支i,调用事务分支(i+1)对应的服务,其中,i可以为大于1的自然数。
可以理解,本申请实施例对于事务分支2~事务分支n的具体触发方式不加以限制。
本申请实施例可以经由二阶段进行分布式事务的处理。
其中,在第一阶段,第一节点101和第二节点102向第三节点103注册事务分支;在数据库的连接对象的环境中执行本地事务分支,并向对应的调用节点返回本地事务分支对应的执行结果,以使第一节点101获得所有事务分支对应的执行结果。
在第二阶段,第一节点101对上述分布式事务中所有事务分支对应数据库操作命令的执行结果进行判断,并依据对应的判断结果,向第三节点103发送全局请求,全局请求可以包括:全局提交请求或全局回滚请求。第三节点103可以向第一节点101和第二节点102发送全局请求对应的分支请求,以在全局范围内同步全局请求。
对于第一节点101和第二节点102而言,其可以在数据库的连接对象的环境中执行本地事务分支,并拦截本地事务分支对应数据库操作命令的相关动作,以及在上述相关动作为提交动作的情况下,不执行上述提交动作。由于不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以依据本地事务分支的隔离级别,实现分布式事务的隔离级别。
并且,在不提交本地事务分支的情况下,可以依据提交方法进行本地事务分支的提交,或者,可以依据回滚方法进行本地事务分支的回滚,或者,在发生宕机的情况下,可以自动进行本地事务分支的回滚。这样,本申请实施例可以在不执行undo信息和redo信息对应的日志操作的情况下,实现本地事务分支后续的提交动作或回滚动作。
另外,本申请实施例可以经由例如SQL(结构化查询语言,Structured QueryLanguage)语句的数据库语句,携带数据库操作命令。本申请实施例的第一节点101和第二节点102利用数据库的连接对象的环境中执行SQL语句,可以不进行SQL语句的解析和前后镜像的保存,因此可以增强数据库的适用范围,且可以提高分布式事务的处理性能。
方法实施例一
参照图2,示出了本申请的一种分布式事务的处理方法实施例一的步骤流程图,应用于第一节点,该方法具体可以包括如下步骤:
步骤201、拦截本地事务分支对应数据库操作命令的相关动作;上述数据库操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;
步骤202、在上述相关动作为提交动作的情况下,不执行上述提交动作;
步骤203、根据上述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求。
第一节点可以为分布式事务的全局管理节点,其可以基于与第三节点之间的数据交互,触发分布式事务的发起动作、提交动作或回滚动作、以及结束动作。
在本申请的一种可选实施例中,上述方法还可以包括:向第三节点发送事务发起请求;接收上述第一节点依据上述事务发起请求返回的xid(事务标识符,transactionid);将上述事务标识符保存至上述分布式事务的事务上下文中。
xid可以具有全局唯一性。可选地,第三节点可以利用雪花算法或全部递增序列方法,生成xid。可以理解,本申请实施例对xid的具体生成方法不加以限制。
事务上下文(Transaction Context)记录了其所代表的事务的相关信息。通过事务上下文,可以唯一确定所参与的事务以及该事务的状态。
可选地,可以利用线程本地变量(ThreadLocal)将事务上下文绑定到线程上,可以理解,本申请实施例对于事务上下文的具体的保存方式不加以限制。
在发起分布式事务后,一方面,第一节点触发本地事务分支,并对本地事务分支进行管理;另一方面,第一节点利用调用服务的方式,触发远程事务分支。
在此提供触发远程事务分支的实施例。
在一种实施例中,上述方法还可以包括:向上述分布式事务的第一相关服务发送第一调用请求;上述第一调用请求中携带有上述分布式事务的事务上下文,以使上述第一相关服务执行上述分布式事务的第一远程事务分支。例如,本地事务分支为事务A,第一远程事务分支为事务B,和/或,本地事务分支为事务A,第一远程事务分支为事务C等。
本申请实施例在第一调用请求中携带事务上下文,事务上下文中可以包括:xid、事务的处理逻辑等信息。事务上下文中的xid可以将不同的事务分支关联到相同的分布式事务之上。处理逻辑可以使第一远程事务分支依据处理逻辑进行处理,例如,可以使第一远程事务分支执行自身的事务分支信息。可选地,还可以使第一远程事务分支调用相关的第三远程事务分支等。
可选地,本申请实施例的第一调用请求可以为RPC(过程远程调用,RemoteProcedure Call)请求、或者HTTP(超文本传输协议,Hyper Text Transfer Protocol)请求等。
可选地,上述方法还可以包括:接收上述第一相关服务依据上述第一调用请求返回的、第一远程事务分支对应数据库操作命令的执行结果;判断上述第一远程事务分支对应的执行结果是否符合第一预设条件。
在实际应用中,可以对第一调用请求中的参数进行回调,以返回上述执行结果。可以在连接对象的环境中执行第一远程事务分支对应数据库操作命令,以得到对应的执行结果,在此不作赘述。
执行结果的格式可以包括:JSON(JS对象简谱,JavaScript Object Notation)、XML(可扩展标记语言,Extensible Markup Language)、结构体、集合对象等。
第一预设条件可以表征事务分支对应的执行结果符合预期所满足的条件。可以理解,不同的事务分支可以对应不同的第一预设条件,本申请实施例对于具体的第一预设条件不加以限制。
根据一种实施例,上述执行结果包括结果的包装类,上述包装类包括结果代码和/或执行消息,若结果代码符合预期,则可以认为执行结果符合第一预设条件。
根据另一种实施例,上述执行结果中的结果代码不符合预期,则可以认为执行结果不符合第一预设条件。或者,上述执行结果包括异常代码,如因为超时、连接关闭导致的异常代码等,则可以认为执行结果不符合第一预设条件。
根据一种实施例,上述方法还可以包括:若上述第一远程事务分支对应的执行结果符合第一预设条件,则依据上述第一远程事务分支对应的执行结果,向上述分布式事务的第二相关服务发送第二调用请求;上述第二调用请求中携带有上述分布式事务的事务上下文,以使上述第二相关服务执行上述分布式事务的第二远程事务分支。依据分布式事务的处理逻辑,在第一远程事务分支对应的执行结果符合第一预设条件的情况下,可以继续触发第二远程事务分支。
可以理解,上述在第一远程事务分支对应的执行结果符合第一预设条件的情况下、触发第二远程事务分支,只是作为可选实施例,实际上,可以依据分布式事务的处理逻辑,判断是否触发第二远程事务分支,本申请实施例对于具体的处理逻辑不加以限制。
可以理解,可以继续接收上述第二相关服务依据上述第二调用请求返回的、第一远程事务分支对应数据库操作命令的执行结果;判断上述第二远程事务分支对应的执行结果是否符合第一预设条件。第二远程事务分支对应的执行结果的处理过程与第一远程事务分支对应的执行结果的处理过程类似,在此不做赘述,相互参照即可。
在此提供对本地事务分支进行管理的实施例。
本申请实施例可以获取本地事务分支对应数据库的连接对象,并在数据库的连接对象的环境中执行本地事务分支对应的数据库操作命令。
本申请实施例中,连接对象的类别可以包括:JDBC(Java数据库连接,JavaDatabase Connectivity)、或者ODBC(开放数据库连接,Open Database Connectivity)等。
其中,JDBC是JAVA语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。ODBC可以提供对数据库访问的标准API(应用程序编程接口,APPlication Interface),这些API通过SQL来完成数据库的访问任务。
本申请实施例中,在JDBC中通过连接对象进行事务分支的管理。在执行事务分支后,利用commit方法进行事务分支的提交,利用rollback方法进行事务分支的回滚,如果不提交,则数据不会真正的***到数据库中。
在本申请的一种可选实施例中,可以拦截本地事务分支对应数据库操作命令的相关动作,在上述相关动作为执行动作的情况下,向第三节点注册事务分支。第三节点可以返回事务分支标识,以对一个分布式事务对应的多个事务分支进行协调。可选地,该事务分支标识可以具有全局唯一性。
在本申请的一种可选实施例中,可以拦截本地事务分支对应数据库操作命令的相关动作,在上述相关动作为提交动作的情况下,不执行上述提交动作。
根据一种实施例,上述不执行上述提交动作,具体包括:在上述相关动作为提交动作的情况下,将上述提交动作置换为空动作。当然,将提交动作置换为空动作只是作为可选实施例,实际上,可以不对提交动作进行处理。
第一节点在执行本地事务分支对应的数据库操作命令后,可以获得相应的执行结果。另外,作为分布式事务的发起节点,第一节点可以还可以获得其他事务分支的执行结果。
在一种示例1中,分布式事务包括:事务分支A和事务分支B。第一节点首先在本地触发了事务分支A,则可以获得事务分支的执行结果。假设第一节点利用调用服务的方式,触发了事务分支B,则事务分支B对应的第二节点可以利用回调的方式,返回事务分支B的执行结果。
在一种示例2中,分布式事务包括:事务分支A、事务分支B和事务分支C。示例1和示例2中事务分支A、事务分支B的触发方式类似,在此不作赘述。假设第一节点利用调用服务的方式,触发了事务分支C,则事务分支C对应的第二节点可以利用回调的方式,返回事务分支C的执行结果。
在一种示例3中,分布式事务包括:事务分支A、事务分支B和事务分支C。示例1和示例2中事务分支A、事务分支B的触发方式类似,在此不作赘述。假设事务分支B对应的第二节点利用调用服务的方式,触发了事务分支C,则事务分支C对应的第二节点可以利用回调的方式,返回事务分支C的执行结果。而事务分支B对应的第二节点可以向第一节点直接或间接反馈事务分支C的执行结果。
本申请实施例中,可选的是,可以对上述分布式事务中所有事务分支对应数据库操作命令的执行结果进行判断,并依据对应的判断结果,向第三节点发送全局请求。相应地,上述向第三节点发送全局请求所采用的发送方式,具体包括:
发送方式1、若上述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
发送方式2、若上述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
对于发送方式1,若上述分布式事务中所有事务分支的执行结果均符合第一预设条件,则可以认为分布式事务中所有事务分支被成功执行,这将使得整个分布式事务被成功执行;因此可以向第三节点发送全局提交请求,以实现整个分布式事务的提交。
对于发送方式2,若上述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则可以认为任一事务分支未被成功执行,这将使得整个分布式事务无法被成执行;因此,为了实现分布式事务的一致性,可以向第三节点发送全局回滚请求,以实现整个分布式事务的回滚。
在本申请的一种可选实施例中,上述方法还可以包括:接收第三节点发送的分支提交请求;响应于上述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
本申请实施例中,提交动作的执行结果可以包括:提交成功或提交失败。第一节点可以向第三节点发送提交动作的执行结果。若提交动作的执行结果为提交失败,则第三节点可以继续向第一节点发送分支提交请求,直至第一节点对应提交动作的执行结果为提交成功。
在本申请的另一种可选实施例中,上述方法还可以包括:接收第三节点发送的分支回滚请求;响应于上述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
需要说明的是,在执行分支提交请求或分支回滚请求的过程中,若发生宕机,则可以采用事务补偿的方法,进行补救处理。事务补偿即在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务。
本申请实施例中,回滚动作的执行结果可以包括:回滚成功或回滚失败。第一节点可以向第三节点发送回滚动作的执行结果。若回滚动作的执行结果为回滚失败,则第三节点可以继续向第一节点发送分支回滚请求,直至第一节点对应回滚动作的执行结果为回滚成功。
在本申请的再一种可选实施例中,上述方法还可以包括:从第三节点接收全局事务动作成功的结果,此种情况下,可以结束分布式事务。
上述全局事务动作成功的结果可以包括:全局提交成功、或全局回滚成功。在分布式事务中所有事务分支对应的分支请求执行结果均符合第二预设条件的情况下,第三节点可以向第一节点发送上述全局事务动作成功的结果。
第二预设条件可用于表征分支请求执行成功的情况下分支请求执行结果所满足的条件。分支提交请求或分支回滚请求可以对应有不同的第二预设条件。
综上,本申请实施例的分布式事务的处理方法,拦截本地事务分支对应数据库操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
并且,在数据库的连接对象的环境中执行本地事务分支后,在不提交本地事务分支的情况下,可以依据提交方法进行本地事务分支的提交,或者,可以依据回滚方法进行本地事务分支的回滚,或者,在发生宕机的情况下,可以自动进行本地事务分支的回滚。这样,本申请实施例可以在不执行undo信息和redo信息对应的日志操作的情况下,实现本地事务分支后续的提交动作或回滚动作。由于本申请实施例可以节省本地事务分支的日志操作对应的成本,因此能够提高分布式事务的处理性能。
方法实施例二
参照图3,示出了本申请的一种分布式事务的处理方法实施例二的步骤流程图,应用于第二节点,该方法具体可以包括如下步骤:
步骤301、拦截本地事务分支对应数据库操作命令的相关动作;上述数据库操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;
步骤302、在上述相关动作为提交动作的情况下,不执行上述提交动作。
第二节点可以为分布式事务的本地管理节点,其可以管理分布式事务的事务分支。
本申请实施例中,第二节点可以依据第一节点或其他第二节点发送的调用请求,触发本地事务分支。可以理解,本申请实施例对于调用请求的调用节点不加以限制。
根据一种实施例,可以接收第一节点发送的第一调用请求;上述第一调用请求中携带有上述分布式事务的事务上下文,这样,可以依据第一调用请求,触发并执行上述分布式事务的对应事务分支。例如,第一节点触发了事务A,第一节点可以依据第一调用请求,调用与事务A相关的事务B;而第二节点可以依据第一调用请求,触发并执行事务B。
根据另一种实施例,可以接收其他节点发送的调用请求。例如,第一节点触发了事务A,第一节点可以依据第一调用请求,调用与事务A相关的事务B;而第二节点a可以继续调用与事务B相关的事务C;而第二节点b可以触发并执行事务C等。
本申请实施例中,可选的是,还可以采用调用服务的方式,调用与本地事务分支相关的事务分支,例如,本地事务分支为事务B,则可以调用与事务A相关的事务B等。相应地,上述方法还可以包括:向上述分布式事务的第三相关服务发送第三调用请求;上述第三调用请求中携带有上述分布式事务的事务上下文,以使上述第三相关服务执行上述分布式事务的第三远程事务分支。
本申请实施例中,可选的是,上述方法还可以包括:接收上述第三相关服务依据上述第三调用请求返回的、第三远程事务分支对应数据库操作命令的执行结果;判断上述第三远程事务分支对应的执行结果是否符合第一预设条件。
本申请实施例中,第二节点可以判断其调用的远程事务分支对应的执行结果是否符合第一预设条件,若是,则可以继续执行分布式事务的处理逻辑;否则,可以向上层的调用节点(如第i层调用节点)返回对应的通知消息,该通知信息可以提示某事务分支对应的执行结果不符合第一预设条件。可以理解,上层的调用节点可以为第一节点;或者,上层的调用节点可以不同于第一节点,此种情况下,第i层调用节点可以继续向第(i-1)层调用节点返回对应的通知消息,直至第一节点获知上述通知消息。
本申请实施例可以获取本地事务分支对应数据库的连接对象,并在数据库的连接对象的环境中执行本地事务分支对应的数据库操作命令。
本申请实施例中,通过连接对象进行事务分支的管理。在执行事务分支后,利用commit方法进行事务分支的提交,利用rollback方法进行事务分支的回滚,如果不提交,则数据不会真正的***到数据库中。
在本申请的一种可选实施例中,可以拦截本地事务分支对应数据库操作命令的相关动作,在上述相关动作为执行动作的情况下,向第三节点注册事务分支。第三节点可以返回事务分支标识,以对一个分布式事务对应的多个事务分支进行协调。可选地,该事务分支标识可以具有全局唯一性。
在本申请的一种可选实施例中,可以拦截本地事务分支对应数据库操作命令的相关动作,在上述相关动作为提交动作的情况下,不执行上述提交动作。
根据一种实施例,上述不执行上述提交动作,具体包括:在上述相关动作为提交动作的情况下,将上述提交动作置换为空动作。当然,将提交动作置换为空动作只是作为可选实施例,实际上,可以不对提交动作进行处理。
第二节点在执行本地事务分支对应的数据库操作命令后,可以获得相应的执行结果。可选地,可以对第一调用请求中的参数进行回调,以向调用节点返回上述执行结果。上述执行结果可供调用节点判断,以判断执行结果是否符合第一预设条件。
在本申请的一种可选实施例中,上述方法还可以包括:接收第三节点发送的分支提交请求;响应于上述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
本申请实施例中,提交动作的执行结果可以包括:提交成功或提交失败。第二节点可以向第三节点发送提交动作的执行结果。若提交动作的执行结果为提交失败,则第三节点可以继续向第二节点发送分支提交请求,直至第二节点对应提交动作的执行结果为提交成功。
在本申请的另一种可选实施例中,上述方法还可以包括:接收第三节点发送的分支回滚请求;响应于上述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
需要说明的是,在执行分支提交请求或分支回滚请求的过程中,若发生宕机,则可以采用事务补偿的方法,进行补救处理。事务补偿即在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务。
本申请实施例中,回滚动作的执行结果可以包括:回滚成功或回滚失败。第二节点可以向第三节点发送回滚动作的执行结果。若回滚动作的执行结果为回滚失败,则第三节点可以继续向第二节点发送分支回滚请求,直至第二节点对应回滚动作的执行结果为回滚成功。
综上,本申请实施例的分布式事务的处理方法,拦截本地事务分支对应数据库操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
并且,在数据库的连接对象的环境中执行本地事务分支后,在不提交本地事务分支的情况下,可以依据提交方法进行本地事务分支的提交,或者,可以依据回滚方法进行本地事务分支的回滚,或者,在发生宕机的情况下,可以自动进行本地事务分支的回滚。这样,本申请实施例可以在不执行undo信息和redo信息对应的日志操作的情况下,实现本地事务分支后续的提交动作或回滚动作。由于本申请实施例可以节省本地事务分支的日志操作对应的成本,因此能够提高分布式事务的处理性能。
方法实施例三
参照图4,示出了本申请的一种分布式事务的处理方法实施例三的步骤流程图,应用于第三节点,该方法具体可以包括如下步骤:
步骤401、接收第一节点发送的全局请求;上述全局请求可以为根据上述分布式事务中事务分支对应数据库操作命令的执行结果得到;
步骤402、向上述分布式事务中所有事务分支对应的第一节点或第二节点,发送上述分支请求;
其中,上述第一节点或上述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在上述数据库操作命令的相关动作为提交动作的情况下,不执行上述提交动作;上述数据库的连接对象与上述分布式事务相匹配。
本申请实施例中,第三节点可以为分布式事务的事务协调节点,其可以维护分布式事务的运行状态,以及协调并驱动分布式事务的提交或回滚。
本申请实施例中,第三节点可以针对分布式事务,提供对应数据库的连接对象,以使第一节点或第二节点获取本地事务分支对应的连接对象。可以理解,其他节点也可以针对分布式事务,提供对应数据库的连接对象,本申请实施例对于连接对象的具体提供节点不加以限制。
本申请实施例中,第三节点可以提供事务分支的注册服务。相应地,第三节点可以接收第一节点或第二节点的注册请求,并向返回事务分支标识,以对一个分布式事务对应的多个事务分支进行协调。可选地,该事务分支标识可以具有全局唯一性。
本申请实施例中,可选的是,上述接收第一节点发送的全局请求,具体包括:
若上述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则从第一节点接收全局提交请求;或者
若上述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则从第一节点接收全局回滚请求。
本申请实施例中,可选的是,上述方法还可以包括:接收第一节点或第二节点发送的分支请求执行结果;若上述分支请求执行结果不符合第二预设条件,则向对应的节点发送对应的分支请求,直至第一节点对应提交动作的执行结果为提交成功。
本申请实施例中,可选的是,上述方法还可以包括:接收第一节点或第二节点发送的分支请求执行结果;若上述分布式事务中所有事务分支对应的分支请求执行结果均符合第二预设条件,则向第一节点发送全局事务动作成功的结果,此种情况下,第一节点可以结束分布式事务的处理。
方法实施例四
参照图5,示出了本申请的一种分布式事务的处理方法实施例四的步骤流程图,该方法可以在第一节点、第二节点和第三节点之间进行数据交互,该方法具体可以包括如下步骤:
步骤501、第一节点向第三节点发送事务发起请求;
步骤502、第三节点向第一节点返回xid;
步骤503、第一节点存储xid至事务上下文;
步骤504、第一节点拦截事务分支1对应的数据库操作命令,并注册事务分支1;
第一节点可以在数据库的连接对象的环境中执行事务分支1对应的数据库操作命令。
步骤505、第一节点向第二节点发送调用请求,上述调用请求中携带有事务上下文,以触发事务分支2,并将事务分支1和事务分支2关联到相同的xid;
可以理解,第二节点可以将事务上下文绑定到事务分支2的事务上下文中。
步骤506、第二节点拦截事务分支2对应的数据库操作命令,并注册事务分支2;
第二节点可以在数据库的连接对象的环境中执行事务分支2对应的数据库操作命令。
步骤507、第二节点拦截事务分支2的提交动作,并将提交动作置换为空操作;
在事务分支2执行完成后,连接对象可以自动发起对应的提交动作,第二节点可以拦截该提交动作。
步骤508、第二节点向第一节点返回事务分支2的执行结果2;
步骤509、若执行结果2符合第一预设条件,则第一节点继续执行处理逻辑;例如,可以依据执行结果2执行事务分支1,或者,可以依据执行结果2,触发其他事务分支,如事务分支3、事务分支4等。
步骤510、第一节点拦截事务分支1的提交动作,并将提交动作置换为空操作;
步骤511、若执行结果1符合第一预设条件,则第一节点向第三节点发送全局提交请求;
或者,在分布式事务包括除了事务分支1和事务分支2之外的事务分支的情况下,第一节点可以在完成分布式事务的处理逻辑后,判断所有事务分支是否均符合第一预设条件,若是,则向第三节点发送全局提交请求。
步骤512、第三节点向第一节点发送第一分支提交请求;
步骤513、第一节点执行事务分支1的提交动作;
步骤514、第一节点向第三节点发送第一提交执行结果;
需要说明的是,在第一提交执行结果不符合第二预设条件的情况下,第三节点可以继续向第一节点发送第一分支提交请求,直至第一提交执行结果不符合第二预设条件。
步骤515、第三节点向第二节点发送第二分支提交请求;
步骤516、第二节点执行事务分支2的提交动作;
步骤517、第二节点向第三节点发送第二提交执行结果;
需要说明的是,在第二提交执行结果不符合第二预设条件的情况下,第三节点可以继续向第二节点发送第二分支提交请求,直至第二提交执行结果不符合第二预设条件。
步骤518、在第一提交执行结果和第二提交执行结果均符合第二预设条件的情况下,第三节点向第一节点发送全局提交成功的结果。
可以理解,图5所示实施例中,分布式事务包括事务分支1和事务分支,只是作为示例,实际上,分布式事务还可以包括:除了事务分支1和事务分支2之外的事务分支。
另外,可以理解,图5上述实施例中,步骤描述的动作顺序只是作为示例,实际上本申请实施例并不受所描述的动作顺序的限制。例如,本申请实施例并不受步骤504和步骤505所描述的动作顺序的限制;又如,本申请实施例并不受步骤512和步骤515所描述的动作顺序的限制.
图5上述实施例中,描述了执行结果2和执行结果1均符合第一预设条件的情况。
在其他实施例中,若执行结果2和执行结果1中任一不符合第一预设条件,则第一节点向第三节点发送全局回滚请求。
例如,在执行结果2不符合第一预设条件的情况下,可以节省步骤510,并跳转至第一节点向第三节点发送全局回滚请求对应的步骤。
又如,在执行结果2符合第一预设条件、且执行结果1符合第一预设条件的情况下,可以跳转至第一节点向第三节点发送全局回滚请求对应的步骤。
方法实施例五
参照图6,示出了本申请的一种分布式事务的处理方法实施例五的步骤流程图,应用于第一节点,该方法具体可以包括如下步骤:
步骤601、拦截本地事务分支对应数据操作命令的相关动作;所述数据操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
步骤602、在所述相关动作为提交动作的情况下,不执行所述提交动作;
步骤603、根据所述分布式事务中事务分支对应数据操作命令的执行结果,向第三节点发送全局请求。
本实施例可以拦截本地事务分支对应数据操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
本实施例的数据操作命令可以表征与数据操作相关的命令。该数据操作命令可以为数据库操作命令,也可以为其他操作命令。其他操作命令可以为应用层的操作命令,如交易操作命令,交易操作可以包括:金额的转入或转出操作、商品的下单或者支付操作、用户管理操作等,可以理解,本申请实施例对于具体的数据操作命令不加以限制。
本实施例的数据操作命令与本地事务分支相应。数据操作命令应用于数据库的连接对象的环境中,可以指在数据库的连接对象的环境中,执行本地事务分支。例如,在数据操作命令为数据库操作命令的情况下,可以直接执行数据操作命令。或者,在数据操作命令不为数据库操作命令的情况下,可以执行与数据操作命令相关联的数据库操作命令。
对于图6所示方法实施例五而言,由于其处理过程与图2所示方法实施例一相似,故在此不作赘述,相互参照即可。
可选地,上述向第三节点发送全局请求,可以包括:
若上述分布式事务中所有事务分支对应数据操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
若上述分布式事务中任一事务分支对应数据操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
可选地,上述方法还可以包括:
接收第三节点发送的分支提交请求;
响应于上述分支提交请求,执行本地事务分支对应数据操作命令的提交动作。
可选地,上述方法还可以包括:
接收第三节点发送的分支回滚请求;
响应于上述分支回滚请求,执行本地事务分支对应数据操作命令的回滚动作。
可选地,上述方法还可以包括:
在上述相关动作为执行动作的情况下,向第三节点注册事务分支。
可选地,上述不执行上述提交动作,可以包括:
在上述相关动作为提交动作的情况下,将上述提交动作置换为空动作。
可选地,上述方法还可以包括:
向第三节点发送事务发起请求;
接收上述第一节点依据上述事务发起请求返回的事务标识符;
将上述事务标识符保存至上述分布式事务的事务上下文中。
可选地,上述方法还可以包括:
向上述分布式事务的第一相关服务发送第一调用请求;上述第一调用请求中携带有上述分布式事务的事务上下文,以使上述第一相关服务执行上述分布式事务的第一远程事务分支。
可选地,上述方法还可以包括:
接收上述第一相关服务依据上述第一调用请求返回的、第一远程事务分支对应数据操作命令的执行结果;
判断上述第一远程事务分支对应的执行结果是否符合第一预设条件。
可选地,上述方法还可以包括:
若上述第一远程事务分支对应的执行结果符合第一预设条件,则依据上述第一远程事务分支对应的执行结果,向上述分布式事务的第二相关服务发送第二调用请求;上述第二调用请求中携带有上述分布式事务的事务上下文,以使上述第二相关服务执行上述分布式事务的第二远程事务分支。
方法实施例六
参照图7,示出了本申请的一种分布式事务的处理方法实施例六的步骤流程图,应用于第二节点,该方法具体可以包括如下步骤:
步骤701、拦截本地事务分支对应数据操作命令的相关动作;上述数据操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;上述数据库的连接对象与上述分布式事务相匹配;
步骤702、在上述相关动作为提交动作的情况下,不执行上述提交动作。
本申请实施例拦截本地事务分支对应数据操作命令的相关动作,并在上述相关动作为提交动作的情况下,不执行上述提交动作。由于本申请实施例不执行实际的提交动作,而在不提交本地事务分支的情况下,本地事务分支对应的数据不会真正的***到连接对象对应的数据库中;这样,本申请实施例可以在不设置全局锁的情况下,依据本地事务分支的隔离级别,实现分布式事务的隔离级别,例如,可以实现不可重复读的隔离级别。由于本申请实施例可以节省全局锁对应的成本,因此能够提高布式事务的处理性能。
对于图7所示方法实施例六而言,由于其处理过程与图3所示方法实施例二相似,故在此不作赘述,相互参照即可。
可选地,上述方法还可以包括:
接收第三节点发送的分支提交请求;
响应于上述分支提交请求,执行本地事务分支对应数据操作命令的提交动作。
可选地,上述方法还可以包括:
接收第三节点发送的分支回滚请求;
响应于上述分支回滚请求,执行本地事务分支对应数据操作命令的回滚动作。
可选地,上述方法还可以包括:
在上述相关动作为执行动作的情况下,向第三节点注册事务分支。
可选地,上述不执行上述提交动作,可以包括:
在上述相关动作为提交动作的情况下,将上述提交动作置换为空动作。
可选地,上述方法还可以包括:
向上述分布式事务的第三相关服务发送第三调用请求;上述第三调用请求中携带有上述分布式事务的事务上下文,以使上述第三相关服务执行上述分布式事务的第三远程事务分支。
可选地,上述方法还可以包括:
接收上述第三相关服务依据上述第三调用请求返回的、第三远程事务分支对应数据操作命令的执行结果;
判断上述第三远程事务分支对应的执行结果是否符合第一预设条件。
方法实施例七
参照图8,示出了本申请的一种分布式事务的处理方法实施例七的步骤流程图,应用于第三节点,该方法具体可以包括如下步骤:
步骤801、接收第一节点发送的全局请求;上述全局请求可以为根据上述分布式事务中事务分支对应数据操作命令的执行结果得到;
步骤802、向上述分布式事务中所有事务分支对应的第一节点或第二节点,发送上述分支请求;其中,上述第一节点或上述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据操作命令,并在上述数据操作命令的相关动作为提交动作的情况下,不执行上述提交动作;上述数据库的连接对象与上述分布式事务相匹配。
本申请实施例中,第三节点可以为分布式事务的事务协调节点,其可以维护分布式事务的运行状态,以及协调并驱动分布式事务的提交或回滚。
对于图8所示方法实施例七而言,由于其处理过程与图4所示方法实施例三相似,故在此不作赘述,相互参照即可。
可选地,上述接收第一节点发送的全局请求,可以包括:
若上述分布式事务中所有事务分支对应数据操作命令的执行结果均符合第一预设条件,则从第一节点接收全局提交请求;或者
若上述分布式事务中任一事务分支对应数据操作命令的执行结果不符合第一预设条件,则从第一节点接收全局回滚请求。
可选地,上述方法还可以包括:
接收第一节点或第二节点发送的分支请求执行结果;
若上述分支请求执行结果不符合第二预设条件,则向对应的节点发送对应的分支请求。
可选地,上述方法还可以包括:
接收第一节点或第二节点发送的分支请求执行结果;
若上述分布式事务中所有事务分支对应的分支请求执行结果均符合第二预设条件,则向第一节点发送全局事务动作成功的结果。
可选地,上述方法还可以包括:
针对分布式事务,提供对应数据库的连接对象。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
本申请实施例还提供了一种分布式事务的处理装置。
参照图9,示出了本申请的一种分布式事务的处理装置实施例的结构框图,应用于第一节点,具体可以包括如下模块:
拦截模块901,用于拦截本地事务分支对应数据库操作命令的相关动作;上述数据库操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;
不提交模块902,用于在上述相关动作为提交动作的情况下,不执行上述提交动作;
全局请求发送模块903,用于根据上述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求。
可选地,全局请求发送模块903可以包括:
若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
可选地,所述装置还可以包括:
第一接收模块,用于接收第三节点发送的分支提交请求;
提交模块,用于响应于所述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
可选地,所述装置还可以包括:
第二接收模块,用于接收第三节点发送的分支回滚请求;
回滚模块,用于响应于所述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
可选地,所述装置还可以包括:
注册模块,用于在所述相关动作为执行动作的情况下,向第三节点注册事务分支。
可选地,所述不提交模块可以包括:
置换模块,用于在所述相关动作为提交动作的情况下,将所述提交动作置换为空动作。
可选地,所述装置还可以包括:
发起请求发送模块,用于向第三节点发送事务发起请求;
第三接收模块,用于接收所述第一节点依据所述事务发起请求返回的事务标识符;
保存模块,用于将所述事务标识符保存至所述分布式事务的事务上下文中。
可选地,所述装置还可以包括:
第一调用请求发送模块,用于向所述分布式事务的第一相关服务发送第一调用请求;所述第一调用请求中携带有所述分布式事务的事务上下文,以使所述第一相关服务执行所述分布式事务的第一远程事务分支。
可选地,所述装置还可以包括:
第四接收模块,用于接收所述第一相关服务依据所述第一调用请求返回的、第一远程事务分支对应数据库操作命令的执行结果;
判断模块,用于判断所述第一远程事务分支对应的执行结果是否符合第一预设条件。
可选地,所述装置还可以包括:
第二调用请求发送模块,用于若所述第一远程事务分支对应的执行结果符合第一预设条件,则依据所述第一远程事务分支对应的执行结果,向所述分布式事务的第二相关服务发送第二调用请求;所述第二调用请求中携带有所述分布式事务的事务上下文,以使所述第二相关服务执行所述分布式事务的第二远程事务分支。
参照图10,示出了本申请的一种分布式事务的处理装置实施例的结构框图,应用于第二节点,具体可以包括如下模块:
拦截模块1001,用于拦截本地事务分支对应数据库操作命令的相关动作;上述数据库操作命令应用于数据库的连接对象的环境中;上述数据库的连接对象与上述分布式事务相匹配;
不提交模块1002,用于在上述相关动作为提交动作的情况下,不执行上述提交动作。
可选地,所述装置还可以包括:
第一接收模块,用于接收第三节点发送的分支提交请求;
提交模块,用于响应于所述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
可选地,所述装置还可以包括:
第二接收模块,用于接收第三节点发送的分支回滚请求;
回滚模块,用于响应于所述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
可选地,所述装置还可以包括:
注册模块,用于在所述相关动作为执行动作的情况下,向第三节点注册事务分支。
可选地,所述不提交模块可以包括:
置换模块,用于在所述相关动作为提交动作的情况下,将所述提交动作置换为空动作。
可选地,所述装置还可以包括:
第三调用请求发送模块,用于向所述分布式事务的第三相关服务发送第三调用请求;所述第三调用请求中携带有所述分布式事务的事务上下文,以使所述第三相关服务执行所述分布式事务的第三远程事务分支。
可选地,所述装置还可以包括:
第三接收模块,用于接收所述第三相关服务依据所述第三调用请求返回的、第三远程事务分支对应数据库操作命令的执行结果;
判断模块,用于判断所述第三远程事务分支对应的执行结果是否符合第一预设条件。
参照图11,示出了本申请的一种分布式事务的处理装置实施例的结构框图,应用于第三节点,具体可以包括如下模块:
全局请求接收模块1101,用于接收第一节点发送的全局请求;上述全局请求为根据上述分布式事务中事务分支对应数据库操作命令的执行结果得到;
分支请求发送模块1102,用于向上述分布式事务中所有事务分支对应的第一节点或第二节点,发送上述分支请求;其中,上述第一节点或上述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在上述数据库操作命令的相关动作为提交动作的情况下,不执行上述提交动作;上述数据库的连接对象与上述分布式事务相匹配。
可选地,全局请求接收模块1101可以包括:
第一全局请求接收模块,用于若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则从第一节点接收全局提交请求;或者
第二全局请求接收模块,用于若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则从第一节点接收全局回滚请求。
可选地,所述装置还可以包括:
第一结果接收模块,用于接收第一节点或第二节点发送的分支请求执行结果;
分支请求发送模块1102,还用于若所述分支请求执行结果不符合第二预设条件,则向对应的节点发送对应的分支请求。
可选地,所述装置还可以包括:
第二结果接收模块,用于接收第一节点或第二节点发送的分支请求执行结果;
结果发送模块,用于若所述分布式事务中所有事务分支对应的分支请求执行结果均符合第二预设条件,则向第一节点发送全局事务动作成功的结果。
可选地,所述装置还可以包括:
提供模块,用于针对分布式事务,提供对应数据库的连接对象。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例的实施例可被实现为使用任意适当的硬件和/或软件进行想要的配置的***或装置。图12示意性地示出了可被用于实现本申请中所述的各个实施例的示例性设备1300。
对于一个实施例,图12示出了示例性设备1300,该设备1300可以包括:一个或多个处理器1302、与处理器1302中的至少一个耦合的***控制模块(芯片组)1304、与***控制模块1304耦合的***存储器1306、与***控制模块1304耦合的非易失性存储器(NVM)/存储装置1308、与***控制模块1304耦合的一个或多个输入/输出设备1310,以及与***控制模块1304耦合的网络接口1312。该***存储器1306可以包括:指令1362,该指令1362可被一个或多个处理器1302执行。
处理器1302可包括一个或多个单核或多核处理器,处理器1302可包括通用处理器或专用处理器(例如图形处理器、应用程序处理器、基带处理器等)的任意组合。在一些实施例中,设备1300 能够作为本申请实施例中所述的服务端、目标设备、无线设备等。
在一些实施例中,设备1300可包括具有指令的一个或多个机器可读介质(例如,***存储器1306或NVM/ 存储装置1308) 以及与该一个或多个机器可读介质相合并被配置为执行指令、以实现前述装置包括的模块、从而执行本申请实施例中所述的动作的一个或多个处理器1302。
一个实施例的***控制模块1304可包括任何适合的接口控制器,用于提供任何适合的接口给处理器1302中的至少一个和/或与***控制模块1304通信的任意适合的装置或部件。
一个实施例的***控制模块1304可包括一个或多个存储器控制器,用于提供接口给***存储器1306。存储器控制器可以是硬件模块、软件模块和/或固件模块。
一个实施例的***存储器1306可被用于加载和存储数据和/或指令1362。对于一个实施例,***存储器1306可包括任何适合的易失性存储器,例如,适合的DRAM(动态随机存取存储器)。在一些实施例中,***存储器1306可包括:双倍数据速率类型四同步动态随机存取存储器(DDR4 SDRAM) 。
一个实施例的***控制模块1304可包括一个或多个输入/输出控制器,以向NVM/存储装置1308及(一个或多个)输入/输出设备1310 提供接口。
一个实施例的NVM/存储装置1308可被用于存储数据和/或指令1382。NVM/存储装置1308可包括任何适合的非易失性存储器(例如闪存等)和/或可包括任何适合的(一个或多个)非易失性存储设备,例如,一个或多个硬盘驱动器(HDD) 、一个或多个光盘(CD) 驱动器和/或一个或多个数字通用光盘(DVD) 驱动器等。
NVM/存储装置1308可包括在物理上是设备1300 被安装在其上的装置的一部分的存储资源,或者其可被该装置访问而不必作为该装置的一部分。例如,NVM/存储装置1308可经由网络接口1312通过网络和/或通过输入/输出设备1310进行访问。
一个实施例的(一个或多个)输入/输出设备1310 可为设备1300 提供接口以与任意其他适当的设备通信,输入/输出设备1310可以包括通信组件、音频组件、传感器组件等。
一个实施例的网络接口1312可为设备1300 提供接口以通过一个或多个网络和/或与任何其他适合的装置通信,设备1300 可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi(无线保真,Wireless Fidelity),2G或3G或4G或5G,或它们的组合进行无线通信。
对于一个实施例,处理器1302中的至少一个可与***控制模块1304的一个或多个控制器(例如,存储器控制器) 的逻辑封装在一起。对于一个实施例,处理器1302中的至少一个可与***控制模块1304的一个或多个控制器的逻辑封装在一起以形成***级封装(SiP) 。对于一个实施例,处理器1302中的至少一个可与***控制模块1304的一个或多个控制器的逻辑集成在同一新品上。对于一个实施例,处理器1302中的至少一个可与***控制模块1304的一个或多个控制器的逻辑集成在同一芯片上以形成片上***(SoC)。
在各个实施例中,设备1300可以包括但不限于:台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等计算设备。在各个实施例中,设备1300 可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,设备1300可以包括一个或多个摄像机、键盘、液晶显示器(LCD) 屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC) 和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在装置时,可以使得该装置执行本申请实施例中各方法的指令(instructions)。
在一个示例中提供了一种设备,包括:一个或多个处理器;和,其上存储的一个或多个机器可读介质中的指令,由所述一个或多个处理器执行时,导致所述装置执行如本申请实施例中的方法,该方法可以包括:图1或图2或图3或图4或图5所示的方法。
在一个示例中还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如本申请实施例中的方法,该方法可以包括:图1或图2或图3或图4或图5所示的方法。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程装置的处理器以产生一个机器,使得通过计算机或其他可编程装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程装置上,使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物流对象或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物流对象或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物流对象或者装置中还存在另外的相同要素。
以上对本申请所提供的一种分布式事务的处理方法、一种分布式事务的处理装置、一种设备、以及一种机器可读介质介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (28)

1.一种分布式事务的处理方法,其特征在于,应用于第一节点,所述方法包括:
拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
根据所述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求;
其中,所述向第三节点发送全局请求,包括:
若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第三节点发送的分支提交请求;
响应于所述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第三节点发送的分支回滚请求;
响应于所述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述相关动作为执行动作的情况下,向第三节点注册事务分支。
5.根据权利要求1所述的方法,其特征在于,所述不执行所述提交动作,包括:
在所述相关动作为提交动作的情况下,将所述提交动作置换为空动作。
6.根据权利要求1至5中任一所述的方法,其特征在于,所述方法还包括:
向第三节点发送事务发起请求;
接收所述第一节点依据所述事务发起请求返回的事务标识符;
将所述事务标识符保存至所述分布式事务的事务上下文中。
7.根据权利要求1至5中任一所述的方法,其特征在于,所述方法还包括:
向所述分布式事务的第一相关服务发送第一调用请求;所述第一调用请求中携带有所述分布式事务的事务上下文,以使所述第一相关服务执行所述分布式事务的第一远程事务分支。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收所述第一相关服务依据所述第一调用请求返回的、第一远程事务分支对应数据库操作命令的执行结果;
判断所述第一远程事务分支对应的执行结果是否符合第一预设条件。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述第一远程事务分支对应的执行结果符合第一预设条件,则依据所述第一远程事务分支对应的执行结果,向所述分布式事务的第二相关服务发送第二调用请求;所述第二调用请求中携带有所述分布式事务的事务上下文,以使所述第二相关服务执行所述分布式事务的第二远程事务分支。
10.一种分布式事务的处理方法,其特征在于,应用于第二节点,所述方法包括:
拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
向所述分布式事务的第三相关服务发送第三调用请求;所述第三调用请求中携带有所述分布式事务的事务上下文,以使所述第三相关服务执行所述分布式事务的第三远程事务分支。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
接收第三节点发送的分支提交请求;
响应于所述分支提交请求,执行本地事务分支对应数据库操作命令的提交动作。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
接收第三节点发送的分支回滚请求;
响应于所述分支回滚请求,执行本地事务分支对应数据库操作命令的回滚动作。
13.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述相关动作为执行动作的情况下,向第三节点注册事务分支。
14.根据权利要求10所述的方法,其特征在于,所述不执行所述提交动作,包括:
在所述相关动作为提交动作的情况下,将所述提交动作置换为空动作。
15.根据权利要求10所述的方法,其特征在于,所述方法还包括:
接收所述第三相关服务依据所述第三调用请求返回的、第三远程事务分支对应数据库操作命令的执行结果;
判断所述第三远程事务分支对应的执行结果是否符合第一预设条件。
16.一种分布式事务的处理方法,其特征在于,应用于第三节点,所述方法包括:
接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据库操作命令的执行结果得到;
向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在所述数据库操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
17.根据权利要求16所述的方法,其特征在于,所述接收第一节点发送的全局请求,包括:
若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则从第一节点接收全局提交请求;或者
若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则从第一节点接收全局回滚请求。
18.根据权利要求16所述的方法,其特征在于,所述方法还包括:
接收第一节点或第二节点发送的分支请求执行结果;
若所述分支请求执行结果不符合第二预设条件,则向对应的节点发送对应的分支请求。
19.根据权利要求16所述的方法,其特征在于,所述方法还包括:
接收第一节点或第二节点发送的分支请求执行结果;
若所述分布式事务中所有事务分支对应的分支请求执行结果均符合第二预设条件,则向第一节点发送全局事务动作成功的结果。
20.根据权利要求16至19中任一所述的方法,其特征在于,所述方法还包括:
针对分布式事务,提供对应数据库的连接对象。
21.一种分布式事务的处理装置,其特征在于,应用于第一节点,所述装置包括:
拦截模块,用于拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
不提交模块,用于在所述相关动作为提交动作的情况下,不执行所述提交动作;
全局请求发送模块,用于根据所述分布式事务中事务分支对应数据库操作命令的执行结果,向第三节点发送全局请求;
其中,所述向第三节点发送全局请求,包括:
若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
22.一种分布式事务的处理装置,其特征在于,应用于第二节点,所述装置包括:
拦截模块,用于拦截本地事务分支对应数据库操作命令的相关动作;所述数据库操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
不提交模块,用于在所述相关动作为提交动作的情况下,不执行所述提交动作;
向所述分布式事务的第三相关服务发送第三调用请求;所述第三调用请求中携带有所述分布式事务的事务上下文,以使所述第三相关服务执行所述分布式事务的第三远程事务分支。
23.一种分布式事务的处理装置,其特征在于,应用于第三节点,所述装置包括:
全局请求接收模块,用于接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据库操作命令的执行结果得到;
分支请求发送模块,用于向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据库操作命令,并在所述数据库操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
24.一种设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述设备执行如权利要求1-10中一个或多个所述的方法。
25.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-10中一个或多个所述的方法。
26.一种分布式事务的处理方法,其特征在于,应用于第一节点,所述方法包括:
拦截本地事务分支对应数据操作命令的相关动作;所述数据操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
根据所述分布式事务中事务分支对应数据操作命令的执行结果,向第三节点发送全局请求;
其中,所述向第三节点发送全局请求,包括:
若所述分布式事务中所有事务分支对应数据库操作命令的执行结果均符合第一预设条件,则向第三节点发送全局提交请求;或者
若所述分布式事务中任一事务分支对应数据库操作命令的执行结果不符合第一预设条件,则向第三节点发送全局回滚请求。
27.一种分布式事务的处理方法,其特征在于,应用于第二节点,所述方法包括:
拦截本地事务分支对应数据操作命令的相关动作;所述数据操作命令应用于数据库的连接对象的环境中;所述数据库的连接对象与所述分布式事务相匹配;
在所述相关动作为提交动作的情况下,不执行所述提交动作;
向所述分布式事务的第三相关服务发送第三调用请求;所述第三调用请求中携带有所述分布式事务的事务上下文,以使所述第三相关服务执行所述分布式事务的第三远程事务分支。
28.一种分布式事务的处理方法,其特征在于,应用于第三节点,所述方法包括:
接收第一节点发送的全局请求;所述全局请求为根据所述分布式事务中事务分支对应数据操作命令的执行结果得到;
向所述分布式事务中所有事务分支对应的第一节点或第二节点,发送所述分支请求;其中,所述第一节点或所述第二节点在数据库的连接对象的环境中执行本地事务分支对应数据操作命令,并在所述数据操作命令的相关动作为提交动作的情况下,不执行所述提交动作;所述数据库的连接对象与所述分布式事务相匹配。
CN202010706300.7A 2020-07-21 2020-07-21 一种分布式事务的处理方法、装置、设备和机器可读介质 Active CN113296897B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010706300.7A CN113296897B (zh) 2020-07-21 2020-07-21 一种分布式事务的处理方法、装置、设备和机器可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010706300.7A CN113296897B (zh) 2020-07-21 2020-07-21 一种分布式事务的处理方法、装置、设备和机器可读介质

Publications (2)

Publication Number Publication Date
CN113296897A CN113296897A (zh) 2021-08-24
CN113296897B true CN113296897B (zh) 2023-12-26

Family

ID=77318643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010706300.7A Active CN113296897B (zh) 2020-07-21 2020-07-21 一种分布式事务的处理方法、装置、设备和机器可读介质

Country Status (1)

Country Link
CN (1) CN113296897B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114138888B (zh) * 2021-12-03 2022-07-05 北京宇信科技集团股份有限公司 一种分布式数据路由的处理方法、***、介质和设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7767387A (en) * 1986-08-29 1988-03-03 Tolerant Systems, Inc. Distributed multiprocess transaction processing system
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN105988862A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 分布式事务处理方法及装置
WO2016180164A1 (zh) * 2015-09-29 2016-11-17 中兴通讯股份有限公司 一种分布式事务回滚方法及装置
WO2017132621A1 (en) * 2016-01-28 2017-08-03 Oracle International Corporation Guaranteed commit outcome in a distributed transaction processing system
CN108446167A (zh) * 2018-02-09 2018-08-24 烽火通信科技股份有限公司 一种分布式事务处理方法及***
CN109240738A (zh) * 2018-08-30 2019-01-18 广州虎牙信息科技有限公司 数据库权限管理方法、装置以及计算机设备
CN111259083A (zh) * 2020-02-13 2020-06-09 神州数码融信软件有限公司 分布式事务处理方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7767387A (en) * 1986-08-29 1988-03-03 Tolerant Systems, Inc. Distributed multiprocess transaction processing system
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN105988862A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 分布式事务处理方法及装置
WO2016180164A1 (zh) * 2015-09-29 2016-11-17 中兴通讯股份有限公司 一种分布式事务回滚方法及装置
WO2017132621A1 (en) * 2016-01-28 2017-08-03 Oracle International Corporation Guaranteed commit outcome in a distributed transaction processing system
CN108446167A (zh) * 2018-02-09 2018-08-24 烽火通信科技股份有限公司 一种分布式事务处理方法及***
CN109240738A (zh) * 2018-08-30 2019-01-18 广州虎牙信息科技有限公司 数据库权限管理方法、装置以及计算机设备
CN111259083A (zh) * 2020-02-13 2020-06-09 神州数码融信软件有限公司 分布式事务处理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
The Study of the Distributed Transaction in the Service Bearer Network;Lingjia G.等;2010 First International Conference on Networking and Distributed Computing;全文 *
基于分布式事务流的动态可串行调度算法;梁雄友;薛永生;;计算机工程与应用(第08期);全文 *

Also Published As

Publication number Publication date
CN113296897A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
US11829349B2 (en) Direct-connect functionality in a distributed database grid
US20190354539A1 (en) Asynchronous Notifications for a Datastore of a Distributed System
US8352421B2 (en) Recording distributed transactions using probabalistic data structures
CN107016016B (zh) 一种数据处理的方法及装置
CN114925084B (zh) 分布式事务处理方法、***、设备及可读存储介质
CN110018884B (zh) 分布式事务处理方法、协调装置、数据库及电子设备
CN111414266B (zh) 一种分布式事务的同步异步通信方法和装置
US20220229822A1 (en) Data processing method and device for distributed database, storage medium, and electronic device
CN112817995B (zh) 数据处理方法和装置、电子设备及存储介质
US9170837B2 (en) Transaction concurrent execution control system, method and program for carrying out a control of concurrently executing a transaction, including measuring execution time from starting to ending of transaction execution
CN113296897B (zh) 一种分布式事务的处理方法、装置、设备和机器可读介质
US11797523B2 (en) Schema and data modification concurrency in query processing pushdown
US9218386B2 (en) Dual locking mechanism for a domain
CN113296896A (zh) 分布式事务处理方法、装置及设备
WO2022206429A1 (zh) 一种分布式事务实现方法及分布式***
CN108153796B (zh) 一种电子红包的数据处理方法、装置和***
US10728323B2 (en) Method and apparatus for operating infrastructure layer in cloud computing architecture
CN113961253A (zh) 驱动程序调用方法、装置、电子设备和存储介质
CN113077241A (zh) 审批处理方法、装置、设备及存储介质
CN113872781A (zh) 事务处理方法、装置、设备和存储介质
CN116401022A (zh) 一种分布式事务的操作日志数据的处理方法及装置
CN105574020B (zh) 一种数据库操作方法和装置
CN116302845B (zh) 事务运行方式的确定方法、装置、电子设备及存储介质
US12007847B2 (en) Reporting for database backups
US20230164243A1 (en) Systems and methods for context-aware event ordering protocol for distributed service systems

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40058001

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant