CN112711466A - 悬挂事务巡检方法和装置、电子设备和存储介质 - Google Patents
悬挂事务巡检方法和装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112711466A CN112711466A CN202110317349.8A CN202110317349A CN112711466A CN 112711466 A CN112711466 A CN 112711466A CN 202110317349 A CN202110317349 A CN 202110317349A CN 112711466 A CN112711466 A CN 112711466A
- Authority
- CN
- China
- Prior art keywords
- target
- transaction
- branch
- global
- topology information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种悬挂事务巡检方法和装置、电子设备和存储介质,其中,该方法包括:通过目标数据库接收目标拓扑信息,目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息;将目标拓扑信息保存到目标存储对象中,目标存储对象用于记录多个全局事务中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,目标数据库用于处理与每个全局事务对应的多个分支事务中的一个分支事务;按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检。通过本申请,解决了悬挂事务控制方式存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种悬挂事务巡检方法和装置、电子设备和存储介质。
背景技术
事务作为数据库保证数据原子性的核心能力,在分布式数据库的设计中也是需要重点关注的点。分布式数据库可以有多种架构,例如,基于中间件路由的分片(sharding)架构,基于spanner(一种数据库系统)的分布式架构。在分布式数据库架构中,可以引入分布式事务机制来保证跨多节点修改数据的原子特性,以实现数据库的ACID特性。
在处理分布式事务时,可以通过悬挂事务巡检来兼容分布式环境下的局部故障(如节点宕机、网络故障等)场景,这里,悬挂事务是指全局事务的发起者(主控节点)在全局事务提交前故障,导致全局事务和其对应的分支事务无法继续推进。相关技术中,悬挂事务巡检采用的一般是基于全局事务管理器的悬挂事务管理机制。
基于全局事务管理器的悬挂事务管理机制(方案)通过集中的全局事务状态管理,可以实现悬挂事务的自动巡检并按照设定的策略推进事务的提交和回滚。然而,当集群规模较大,数据分散多分片时,全局事务管理器所管理的全局事务和分支事务的数量会大幅增加,导致存在悬挂事务处理效率低的问题。
因此,相关技术中的悬挂事务控制方式,存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题。
发明内容
本申请提供了一种悬挂事务巡检方法和装置、电子设备和存储介质,以至少解决相关技术中的悬挂事务控制方式存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题。
根据本申请实施例的一个方面,提供了一种悬挂事务巡检方法,包括:通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检。
可选地,通过所述目标数据库接收所述目标拓扑信息包括:通过所述目标数据库接收目标服务器发送的目标事务消息,其中,所述目标服务器为所述目标全局事务的事务协调者,所述目标事务消息中携带有所述目标拓扑信息和与所述目标数据库对应的待处理分支事务信息,所述待处理分支事务信息用于指示所述多个目标分支事务中,待所述目标数据库处理的分支事务。
可选地,按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检包括:按照所述目标存储对象中记录的所述目标拓扑信息,通过所述目标数据库确定与所述目标全局事务对应的第一状态信息;在根据所述第一状态信息确定出所述目标全局事务在提交之前发生异常的情况下,将所述目标全局事务确定为悬挂事务。
可选地,按照所述目标存储对象中记录的所述目标拓扑信息,通过所述目标数据库确定与所述目标全局事务对应的所述第一状态信息包括:按照所述目标拓扑信息,通过所述目标数据库检测目标心跳信息,其中,所述第一状态信息包含所述目标心跳信息,所述目标心跳信息为所述目标数据库与目标服务器之间的心跳信息,所述目标服务器为与所述目标全局事务对应的事务协调者;在按照所述目标拓扑信息,通过所述目标数据库检测所述目标心跳信息之后,所述方法还包括:在检测到所述目标心跳信息停止更新的情况下,确定出所述目标全局事务在提交之前发生异常。
可选地,在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,所述方法还包括:在将所述目标全局事务确定为悬挂事务的情况下,获取与所述多个目标分支事务中的各个目标分支事务对应的第二状态信息;按照与所述各个目标分支事务对应的所述第二状态信息控制对所述各个分支事务执行目标事务操作,其中,所述目标事务操作包括以下之一:事务提交,事务回滚。
可选地,按照与所述各个目标分支事务对应的所述第二状态信息控制对所述各个分支事务执行所述目标事务操作包括:在根据与所述各个目标分支事务对应的所述第二状态信息确定出所述各个目标分支事务均已预提交成功的情况下,控制对所述各个目标分支事务进行事务提交;在根据与所述各个目标分支事务对应的所述第二状态信息确定出存在预提交失败的分支事务的情况下,控制对所述各个目标分支事务进行事务回滚。
可选地,在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,所述方法还包括:在所述目标全局事务提交成功的情况下,将所述目标拓扑信息从所述目标存储对象中删除。
根据本申请实施例的另一个方面,还提供了一种悬挂事务巡检装置,包括:接收单元,用于通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;保存单元,用于将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;巡检单元,用于按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检。
可选地,所述接收单元包括:接收模块,用于通过所述目标数据库接收目标服务器发送的目标事务消息,其中,所述目标服务器为所述目标全局事务的事务协调者,所述目标事务消息中携带有所述目标拓扑信息和与所述目标数据库对应的待处理分支事务信息,所述待处理分支事务信息用于指示所述多个目标分支事务中,待所述目标数据库处理的分支事务。
可选地,所述巡检单元包括:第一确定模块,用于按照所述目标存储对象中记录的所述目标拓扑信息,通过所述目标数据库确定与所述目标全局事务对应的第一状态信息;第二确定模块,用于在根据所述第一状态信息确定出所述目标全局事务在提交之前发生异常的情况下,将所述目标全局事务确定为悬挂事务。
可选地,所述第一确定模块包括:确定子模块,所述装置还包括:确定单元,其中,所述确定子模块,用于按照所述目标拓扑信息,通过所述目标数据库检测目标心跳信息,其中,所述第一状态信息包含所述目标心跳信息,所述目标心跳信息为所述目标数据库与目标服务器之间的心跳信息,所述目标服务器为与所述目标全局事务对应的事务协调者;所述确定单元,用于在按照所述目标拓扑信息,通过所述目标数据库检测所述目标心跳信息之后,在检测到所述目标心跳信息停止更新的情况下,确定出所述目标全局事务在提交之前发生异常。
可选地,所述装置还包括:获取单元,用于在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,在将所述目标全局事务确定为悬挂事务的情况下,获取与所述多个目标分支事务中的各个目标分支事务对应的第二状态信息;控制单元,用于按照与所述各个目标分支事务对应的所述第二状态信息控制对所述各个分支事务执行目标事务操作,其中,所述目标事务操作包括以下之一:事务提交,事务回滚。
可选地,所述控制单元包括:第一控制模块,用于在根据与所述各个目标分支事务对应的所述第二状态信息确定出所述各个目标分支事务均已预提交成功的情况下,控制对所述各个目标分支事务进行事务提交;第二控制模块,用于在根据与所述各个目标分支事务对应的所述第二状态信息确定出存在预提交失败的分支事务的情况下,控制对所述各个目标分支事务进行事务回滚。
可选地,所述装置还包括:删除单元,用于在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,在所述目标全局事务提交成功的情况下,将所述目标拓扑信息从所述目标存储对象中删除。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用由事务的参与者进行悬挂事务管理的方式,通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检,由于数据库实例(数据库节点)通过系统表保存与本数据库实例关联的拓扑信息,每个全局事务及其对应的分支事务可以注册到至少一个关联的数据库实例中,不同的全局事务及其对应的分支事务注册到不同的数据库实例中,而不是由全局事务管理器统一进行全局事务管理,可以实现分布式的全局事务和分支事务注册管理的目的,达到了减少管理器的处理压力、提高悬挂事务处理效率的技术效果,进而解决了相关技术中的悬挂事务控制方式存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的悬挂事务巡检方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的悬挂事务巡检方法的流程示意图;
图3是根据本申请实施例的一种可选的悬挂事务巡检方法的示意图;
图4是根据本申请实施例的另一种可选的悬挂事务巡检方法的流程示意图;
图5是根据本申请实施例的又一种可选的悬挂事务巡检方法的流程示意图;
图6是根据本申请实施例的一种可选的悬挂事务巡检装置的结构框图;
图7是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
1、ACID特性,指以下四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability);
2、全局事务,是指发起数据修改的总控事务;
3、分支事务,是指全局事务修改的数据分散到若干个节点,对每个节点上的数据修改封装成的事务。
根据本申请实施例的一个方面,提供了一种悬挂事务巡检方法。可选地,在本实施例中,上述悬挂事务巡检方法可以应用于如图1所示的包含多个节点(例如,数据库服务器)的分布式存储系统,例如,包含第一节点102和第二节点104的硬件环境中。如图1所示,第一节点102通过网络与第二节点104进行连接,可用于为终端或终端上安装的客户端提供服务(例如,事务处理服务等)。在进行事务处理时,第一节点102可以是事务处理的协调者,可以用于处理全局事务,第二节点104可以是事务处理的参与者,用于处理分支事务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端102可以并不限定于为PC、手机、平板电脑等。
本申请实施例的悬挂事务巡检方法可以由第一节点102来执行,也可以由第二节点104来执行,还可以是由第一节点102和第二节点104共同执行。其中,第一节点102和/或第二节点104执行本申请实施例的悬挂事务巡检方法也可以是由安装在其上的客户端来执行。
以由第二节点104来执行本实施例中的悬挂事务巡检方法为例,图2是根据本申请实施例的一种可选的悬挂事务巡检方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,通过目标数据库接收目标拓扑信息,其中,目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息。
本实施例中的悬挂事务巡检方法可以应用于分布式存储系统中的悬挂事务巡检的场景中。分布式存储系统可以包括:客户端APP(Application,应用端),主控节点(协调者),数据节点(参与者),其中,主控节点可以是分布式数据库代理DS(Data Server,数据服务器),数据节点可以是DB(Data Base,数据库,数据库实例)。客户端可以通过网络与主控节点相连,不同的客户端可以连接到相同或者不同的主控节点,同一主控节点可以连接多个客户端。主控节点可以通过网络与数据节点相连,不同的数据节点可以连接到相同或者不同的主控节点,同一主控节点可以连接多个数据节点。
在有数据修改需求或者其他需求时,客户端可以向DS发起全局事务,即,发起数据修改的总控事务。例如,对于目标客户端,目标客户端可以向目标服务器(DS)发送目标全局事务,该目标全局事务用于对目标对象执行目标处理操作。
目标服务器可以确定与目标全局事务对应的多个目标分支事务,也就是,确定上述目标处理操作所修改的数据分散在的数据库节点,并对每个数据库节点上的数据修改封装成对应的目标分支事务,得到多个目标分支事务。在得到多个目标分支事务之后,目标服务器可以将多个目标分支事务中的各个目标分支事务发送到对应的数据库节点上。
为了避免由于全局事务的发起者在全局事务提交前故障导致全局事务和其对应的分支事务无法继续推进,同时避免由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低,一种实现方案为:复用数据库本身的事务超时自动提交/回滚策略,该方案依赖数据库内核自主检测超时的悬挂的分支事务,并根据分支事务特征进行提交/回滚,无法保证全局事务的ACID特征,且效率较低。
可选地,在本实施例中,将全局事务和分支事务分散注册到数据库实例中,一个全局事务和对应的分支事务可以注册到处理分支事务的某一个数据库实例,或者,处理分支事务的多个数据库实例,以实现全局事务和分支事务状态自管理。
对于目标全局事务,目标服务器可以生成与该目标全局事务对应的目标拓扑信息,上述目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息,可以用于表示目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑关系,例如,目标全局事务与处理目标全局事务的目标服务器之间的对应关系、各个目标分支事务与处理各个目标分支事务的数据库节点之间的对应关系。目标拓扑信息还可以包含其他信息,例如,目标全局事务的发起时间等等,本实施例中对此不作限定。
目标服务器还可以从处理各个目标分支事务的数据库节点中选取出目标数据库,也就是,该目标全局事务和多个目标分支事务所要注册到的数据库节点,并将目标拓扑信息发送给选取的目标数据库。目标数据库的数量可以为一个或多个,选取的方式可以是:随机选取,也可以是按照目标分支事务由先到后的顺序,还可以是其他选取方式,本实施例中对此不作限定。
对于一个目标数据库,该目标数据库可以是处理多个目标分支事务中的一个分支事务的数据库节点。除了接收到本数据库所需处理的目标分支事务以外,该目标数据库还可以接收目标数据库发送的目标拓扑信息。
步骤S204,将目标拓扑信息保存到目标存储对象中,其中,目标存储对象用于记录多个全局事务中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,目标数据库用于处理与每个全局事务对应的多个分支事务中的一个分支事务。
在每个数据库实例中可以保存有一个存储对象,该存储对象可以用来记录注册到本数据库实例的全局事务和对应的分支事务的拓扑关系,还可以用来记录注册到本数据库实例的全局事务的状态信息。例如,在每个数据库实例中可以新增一张系统表,该系统表可以用于记录注册到本数据库实例中的全局事务和对应的分支事务的拓扑关系和状态信息。
对于目标数据库,目标数据库可以保存有目标存储对象(例如,目标系统表),目标存储对象可以用于记录多个全局事务(注册到目标数据库的多个全局事务,包括目标全局事务)中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,还可以用于记录各个全局事务的状态信息。
在接收到目标拓扑信息之后,目标数据库可以将目标拓扑信息保存到目标存储对象中,保存的方式可以是:按照接收的顺序依次保存到目标存储对象,比如,保存到目标存储对象的最后。
需要说明的是,上述存储对象是用于记录注册到本数据库实例的全局事务和与该全局事务对应的多个分支事务之间的拓扑信息的一种存储单元/存储模块,本实施例中对于该存储对象的具体形式不作限定。
步骤S206,按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检。
按照目标存储对象中记录的各个拓扑信息,目标数据库可以对各个全局事务分别进行悬挂事务巡检。巡检的方式可以是:按照目标存储对象中记录的各个拓扑信息,分别确定与各个全局事务对应的主控节点是否发生故障,如果发生故障,确定该全局事务为悬挂事务;如果未发生故障,则确定该全局事务不为悬挂事务。
例如,对于目标拓扑信息,目标数据库可以对目标全局事务进行悬挂事务进行训练,确定目标服务器是否发生故障,如果发生故障,确定目标全局事务为悬挂事务,如果不发生故障,确定目标全局事务不为悬挂事务。
对于各个全局事务,如果对应的主控节点未发生故障,那么,各个事务可以基于相关技术中的提交过程进行处理,比如,先由执行各个分支事务的参与者进行分支事务预提交,并向协调者反馈预提交结果;协调者基于预提交结果确定进行事务提交或者回滚:如果各个参与者的分支事务均已预提交成功,则控制各个参与者进行分支事务的正式提交,如果有参与者的分支事务预提交失败,则控制各个参与者进行分支事务的回滚。
通过上述步骤S202至步骤S206,通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检,解决了相关技术中的悬挂事务控制方式存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题,减少了管理器的处理压力,提高了悬挂事务处理效率。
作为一种可选的实施例,通过目标数据库接收目标拓扑信息包括:
S11,通过目标数据库接收目标服务器发送的目标事务消息,其中,目标服务器为目标全局事务的事务协调者,目标事务消息中携带有目标拓扑信息和与目标数据库对应的待处理分支事务信息,待处理分支事务信息用于指示多个目标分支事务中,待目标数据库处理的分支事务。
对于目标数据库,目标服务器可以将该目标数据库所需处理的分支事务和目标拓扑信息分别进行发送。例如,目标服务器可以先向目标数据库发送与目标数据库对应的待处理分支事务信息,待处理分支事务信息可以用于指示多个目标分支事务中,待目标数据库处理的分支事务;然后,目标服务器可以向目标数据库发送目标拓扑信息。
可选地,为了简化数据传输过程,提高系统资源的利用效率,目标服务器可以将目标拓扑信息和待处理分支事务信息一起发送给目标数据库,例如,通过目标事务消息将两者一起发送给目标数据库。
目标数据库可以接收目标服务器发送的上述目标事务消息,从中分别提取出待处理分支事务信息和目标拓扑信息,将目标拓扑信息保存到目标存储对象中,以及执行上述待处理分支事务信息所指示的分支事务的预提交、提交等等,本实施例中对此不作限定。
通过本实施例,通过将拓扑信息和事务信息一起发送给数据库实例,可以简化数据传输过程,提高系统资源的利用效率。
作为一种可选的实施例,按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检包括:
S21,按照目标存储对象中记录的目标拓扑信息,通过目标数据库确定与目标全局事务对应的第一状态信息;
S22,在根据第一状态信息确定出目标全局事务在提交之前发生异常的情况下,将目标全局事务确定为悬挂事务。
在对悬挂事务进行巡检时,对于目标全局事务,目标数据库可以按照目标拓扑信息,确定与目标全局事务对应的第一状态信息,第一状态信息可以用于表示目标全局事务的当前状态,例如,正常状态,异常状态。第一状态信息可以是周期性确定,例如,按照目标拓扑信息,目标数据库可以周期性地/定时确定与目标全局事务对应的第一状态信息。
需要说明的是,与目标全局事务对应的第一状态信息可以用于表示处理该目标全局事务的目标服务器的运行状态,如果目标服务器运行正常,则第一状态信息用于表示目标全局事务处于正常状态,如果目标服务器运行异常(例如,发生故障),则第一状态信息用于表示目标全局事务处于异常状态。
如果根据第一状态信息确定出目标全局事务在提交之前发生异常,例如,在目标全局事务在提交之前目标服务器发生故障,那么,目标全局事务将无法完成提交,因此,目标数据库可以将目标全局事务确定为悬挂事务。
通过本实施例,按照拓扑信息获取全局事务的状态信息,基于状态信息确定全局事务在提交之前是否异常,可以提高悬挂事务巡检的效率。
作为一种可选的实施例,按照目标存储对象中记录的目标拓扑信息,通过目标数据库确定与目标全局事务对应的第一状态信息包括:
S31,按照目标拓扑信息,通过目标数据库检测目标心跳信息,其中,第一状态信息包含目标心跳信息,目标心跳信息为目标数据库与目标服务器之间的心跳信息,目标服务器为与目标全局事务对应的事务协调者;
在按照目标拓扑信息,通过目标数据库检测目标心跳信息之后,上述方法还包括:
S32,在检测到目标心跳信息停止更新的情况下,确定出目标全局事务在提交之前发生异常。
全局事务的状态信息可以包括数据库实例与数据服务器之间的心跳信息。可以对每个全局事务和分支事务增加心跳信息,比如,数据服务器可以定时向与其相连的全部或者部分数据库实例发送心跳包,数据库实例可以根据收到的心跳包更新保存的心跳信息,心跳信息可以包括心跳包的时间。数据库实例中的悬挂事务巡检模块可以自动检测心跳异常的全局事务。
正常情况下,全局事务(和/或分支事务)的心跳信息会实时更新,异常情况下全局事务(和/或分支事务)的心跳信息会停止更新,因此,按照心跳信息是否更新,可以确定全局事务(或者分支事务)是否正常。
对于目标全局事务,目标服务器可以定时向目标数据库发送心跳包,这里的目标服务器可以是分布式数据库代理DS,为与目标全局事务对应的事务协调者。目标数据库可以根据接收到的心跳包更新目标数据库与目标服务器之间的心跳信息,即,目标心跳信息。
按照目标拓扑信息,目标数据库可以检测目标心跳信息。如果检测到在一段时间内目标心跳信息未发生更新,表明在一段时间内未收到目标服务器发送的心跳包,目标服务器发生故障,目标数据库可以确定目标全局事务在提交之前发生异常。
为了保证异常确定的准确性,目标服务器在目标全局事务在提交之后可以向目标数据库发送提交完成消息,以指示目标数据库目标全局事务已完成提交。对应地,在检测到目标心跳信息停止更新、且未收到目标服务器发送的提交完成消息的情况下,确定出目标全局事务在提交之前发生异常,提交完成消息用于指示目标全局事务已完成提交。
通过本实施例,根据心跳信息确定与全局事务对应的服务器是否发生故障,可以保证全局事务异常确定的准确性,同时,可以减少对网络资源的占用(心跳包的数据量较少)。
作为一种可选的实施例,在按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检之后,上述方法还包括:
S41,在将目标全局事务确定为悬挂事务的情况下,获取与多个目标分支事务中的各个目标分支事务对应的第二状态信息;
S42,按照与各个目标分支事务对应的第二状态信息控制对各个分支事务执行目标事务操作,其中,目标事务操作包括以下之一:事务提交,事务回滚。
如果注册到目标数据库的全局事务成为悬挂事务,那么,目标数据库可以接管该悬挂事务,可根据悬挂事务对应的所有分支事务的状态推动悬挂事务进行提交或回滚。可选地,若全局事务对应的所有分支事务的状态为预提交/提交中/已提交的状态,可推动全局事务继续完成提交后续流程;否则推动全局事务对应的所有分支事务进行回滚操作。
对于目标全局事务,如果将目标全局事务确定为悬挂事务,目标数据库可以获取多个目标分支事务中的各个目标分支事务对应的第二状态信息,也就是,该目标数据库可以与各个目标分支事务对应的数据库实例进行交互,确定各个目标分支事务当前的处理状态,例如,预提交成功,预提交失败,提交成功,提交失败等等。
按照各个目标分支事务对应的第二状态信息,目标数据库可以控制对各个分支事务执行后续的事务操作,比如,事务提交,事务回滚。
通过本实施例,由各个全局事务注册到的目标数据库接管悬挂事务的提交任务,可以提高事务处理的效率。
作为一种可选的实施例,按照与各个目标分支事务对应的第二状态信息控制对各个分支事务执行目标事务操作包括:
S51,在根据与各个目标分支事务对应的第二状态信息确定出各个目标分支事务均已预提交成功的情况下,控制对各个目标分支事务进行事务提交;
S52,在根据与各个目标分支事务对应的第二状态信息确定出存在预提交失败的分支事务的情况下,控制对各个目标分支事务进行事务回滚。
在接管目标全局事务的提交任务时,不管目标服务器是否从异常中恢复,目标数据库均可以控制推动悬挂事务的向前执行,可以在保证全局事务的ACID属性的同时,保证事务处理的及时性。
如果根据与各个目标分支事务对应的第二状态信息确定出各个目标分支事务均已预提交成功,那么,目标数据库可以控制对各个目标分支事务进行事务提交,比如,向各个目标分支事务对应的数据库节点发送提交指示,指示正式提交各个分支事务。
如果根据与各个目标分支事务对应的第二状态信息确定出存在预提交失败的分支事务,目标数据库可以控制对各个目标分支事务进行事务回滚,比如,向各个目标分支事务对应的数据库实例发送回滚指示,指示各个目标分支事务进行回滚。
通过本实施例,由数据库实例按照各个分支事务的处理状态控制悬挂事务对应的分支事务进行提交或回滚,可以保证事务处理的及时性。
作为一种可选的实施例,在按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检之后,上述方法还包括:
S61,在目标全局事务提交成功的情况下,将目标拓扑信息从目标存储对象中删除。
为了保证数据库实例中存储空间的合理利用,对于已成功提交的全局事务,数据库实例可以将其对应的拓扑信息从目标存储对象中删除。如果目标全局事务提交成功,目标数据库可以将目标拓扑信息从目标存储对象中删除。删除拓扑信息可以是在目标全局事务提交成功时触发的,也可以是后台周期性清理目标存储对象中已失效拓扑信息的进程触发的,本实施例中对此不作限定。
删除目标拓扑信息的时机可以有多种,可以针对目标服务器是否发生异常分别配置删除的触发条件。
如果目标服务器未发生异常,也就是,目标数据库未接管该目标全局事务,在目标全局事务提交成功时,目标服务器可以向目标数据库发送删除消息,以指示目标数据库删除目标拓扑信息,按照删除消息,目标数据库将目标存储对象中的目标拓扑信息删除;或者,也可以由目标数据库在全局事务对应的所有分支事务提交成功之后,将目标存储对象中的目标拓扑信息删除。
如果目标服务器发生异常,也就是,目标数据库接管可该目标全局事务,那么,在目标全局事务提交成功时,目标数据库将目标存储对象中的目标拓扑信息删除;或者,在指示其他数据库实例提交对应的目标分支事务之后,目标数据库将目标存储对象中的目标拓扑信息删除,其他数据库实例为处理多个目标分支事务的多个数据库实例中除了目标数据库以外的数据库实例。
通过本实施例,在全局事务提交成功之后删除该全局事务注册到的数据库实例中所保存的、与该全局事务对应的拓扑信息,可以减少对数据库实例存储空间的占用,提高存储空间利用的合理性。
下面结合可选示例对本申请实施例中的悬挂事务巡检方法进行解释说明。在本示例中,存储对象为关系表。
本可选示例中的悬挂事务巡检方法可以应用到如图3所示的网络架构中,该网络架构包括:应用端APP,分布式数据库代理DS、以及数据库实例DB,其中,
应用端APP,用于进行事务提交;
分布式数据库代理DS,可以作为事务的协调者,用于接收应用端APP发起的全局事务,并将分支事务发送给对应的数据库实例DB;
数据库实例DB,可以作为事务的参与者,用于处理对应的分支事务。
本可选示例提供了一种分布式数据库悬挂事务巡检优化方案,采用全局事务和分支事务状态自管理的机制:将全局事务和分支事务分散注册到数据库实例中,每个数据库实例中新增一张系统表,用于记录全局事务和分支事务的拓扑关系和状态信息;对每个全局事务和分支事务增加心跳信息,正常情况下全局事务和分支事务的心跳信息会实时更新,异常情况下全局事务或分支事务的心跳信息会停止更新;由数据库实例中的悬挂事务巡检模块自动检测心跳异常的全局事务,并推动全局事务对应分支事务的提交/回滚。
结合图3和图4所示,本可选示例中的悬挂事务巡检方法的流程可以包括以下步骤:
步骤S402,应用端APP1连接分布式数据库代理DS1,发起全局事务Trx1。
步骤S404,DS1将Trx1对应的分支事务Trx1_sub1和Trx1_sub2分别发送到DB1和DB2。
DS1可以确定与Trx1对应的分支事务Trx1_sub1和Trx1_sub2,将Trx1_sub1发送给DB1,将Trx1_sub2发送给DB2。
步骤S406,DS1将Trx1及其Trx1_sub1和Trx1_sub2的拓扑信息记录到DB1的系统表Global_sys_trx中,并实时更新DB1记录的Trx1的心跳信息。
示例性地,DB1的系统表Global_sys_trx所记录的拓扑信息以及心跳信息可以包括:
Trx1:{
subtransactions:{
trx1_sub1:{location:DB1,status:prepared},
trx1_sub2:{location:DB2,status:prepared}
}
heartbeat:xxxx
}
DS1还可以确定Trx1及其Trx1_sub1和Trx1_sub2的拓扑信息,将确定的拓扑信息发送给DB1,以记录到DB1的系统表Global_sys_trx中,同时通过向DB1发送心跳包来更新DB1记录的Trx1的心跳信息。
步骤S408,DB1中的悬挂事务巡检模块扫描系统表Global_sys_trx,发现Trx1心跳异常,接管Trx1,并根据Trx1_sub1和Trx1_sub2的状态进行事务的继续提交/回滚。
如果DS1发生故障,此时全局事务Trx1还未完成提交,成为悬挂事务。DB1中的悬挂事务巡检模块扫描系统表Global_sys_trx,发现Trx1心跳异常,那么,DB1接管Trx1,确定Trx1_sub1和Trx1_sub2的状态,分支事务的状态可以包括但不限于以下至少之一:INIT(初始化),PREPARED(预提交),COMMIT(提交)。根据Trx1_sub1和Trx1_sub2的状态,DB1可以进行事务的继续提交或回滚。
比如,Trx1_sub1和Trx1_sub2处于INIT状态,控制两者进行回滚;Trx1_sub1和Trx1_sub2均已预提交成功,则控制Trx1_sub1和Trx1_sub2进行提交;如果Trx1_sub1和Trx1_sub2部分提交成功,部分还未提交成功,则继续推进提交。如果在某一个阶段有分支事务未成功处理,则控制Trx1_sub1和Trx1_sub2进行回滚。
结合图3和图5所示,本可选示例中的悬挂事务巡检方法的流程也可以包括以下步骤:
步骤S502,应用端APP2连接分布式数据库代理DS2,发起全局事务Trx2。
步骤S504,DS2将Trx2对应的分支事务Trx2_sub1和Trx2_sub2分别发送到DB2和DB3。
DS2可以确定与Trx2对应的分支事务Trx2_sub1和Trx2_sub2,将Trx2_sub1发送给DB2,将Trx2_sub2发送给DB3。
步骤S506,DS2将Trx2及其Trx2_sub1和Trx2_sub2的拓扑信息记录到DB2的系统表Global_sys_trx中,并实时更新DB2记录的Trx2的心跳信息。
DS2还可以确定Trx2及其Trx2_sub1和Trx2_sub2的拓扑信息,将确定的拓扑信息发送给DB2,以记录到DB2的系统表Global_sys_trx中,同时通过向DB2发送心跳包来更新DB2记录的Trx2的心跳信息。
示例性地,DB2的系统表Global_sys_trx所记录的拓扑信息以及心跳信息可以包括:
Trx2:{
subtransactions:{
trx2_sub1:{location:DB2,status:commited},
trx2_sub2:{location:DB3,status:prepared}
}
heartbeat:xxxx
}
步骤S508,DB2中的悬挂事务巡检模块扫描系统表Global_sys_trx,发现Trx2心跳异常,接管Trx2,并根据Trx2_sub1和Trx2_sub2的状态进行事务的继续提交/回滚。
如果DS2发生故障,此时全局事务Trx2还未完成提交,成为悬挂事务。DB2中的悬挂事务巡检模块扫描系统表Global_sys_trx,发现Trx2心跳异常,那么,DB2接管Trx2,确定Trx2_sub1和Trx2_sub2的状态,分支事务的状态可以包括但不限于以下至少之一:INIT,PREPARED,COMMIT。根据Trx2_sub1和Trx2_sub2的状态,DB2可以进行事务的继续提交或回滚。
比如,Trx2_sub1和Trx2_sub2处于INIT状态,控制两者进行回滚;Trx2_sub1和Trx2_sub2均已预提交成功,则控制Trx2_sub1和Trx2_sub2进行提交;如果Trx2_sub1和Trx2_sub2部分提交成功,部分还未提交成功,则继续推进提交。如果在某一个阶段有分支事务未成功处理,则控制Trx2_sub1和Trx2_sub2进行回滚。
需要说明的是,DB3的系统表Global_sys_trx也可以记录有部分全局事务及其分支事务的拓扑信息、以及这些全局事务的心跳信息。示例性地,DB3的系统表Global_sys_trx所记录的拓扑信息以及心跳信息可以是:
TrxX:{
……
heartbeat:xxxx
}
由上述可以看出,不同的全局事务及其对应的分支事务可以注册到处理该全局事务的一个分支事务的数据库实例中,每个数据库实例可以注册多个全局事务及其对应的分支事务,同时,数据库实例内部可以自主完成悬挂事务的巡检和接管处理。既可以保留集中式的事务管理的优点,即,保证全局事务的ACID属性,同时避免由于全局事务和分支事务都需要注册到全局事务管理器中导致的集中式的事务管理成为整集群的性能瓶颈的问题。
通过本可选示例,通过分布式的全局事务和分布式事务的注册模式,可以减少事务巡检的压力;通过分布式并行悬挂事务巡检,可以提高悬挂事务巡检的效率;通过分布式并行悬挂事务并行处理,也可以提高悬挂事务的处理效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述悬挂事务巡检方法的悬挂事务巡检装置。图6是根据本申请实施例的一种可选的悬挂事务巡检装置的结构框图,如图6所示,该装置可以包括:
(1)接收单元602,用于通过目标数据库接收目标拓扑信息,其中,目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息;
(2)保存单元604,与接收单元602相连,用于将目标拓扑信息保存到目标存储对象中,其中,目标存储对象用于记录多个全局事务中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,目标数据库用于处理与每个全局事务对应的多个分支事务中的一个分支事务;
(3)巡检单元606,与保存单元604相连,用于按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检。
需要说明的是,该实施例中的接收单元602可以用于执行上述步骤S202,该实施例中的保存单元604可以用于执行上述步骤S204,该实施例中的巡检单元606可以用于执行上述步骤S206。
通过上述模块,通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检,解决了相关技术中的悬挂事务控制方式存在由于管理器所管理的全局事务和分支事务的数量较多导致的悬挂事务处理效率低的问题,减少了管理器的处理压力,提高了悬挂事务处理效率。
作为一种可选的实施例,接收单元602包括:
接收模块,用于通过目标数据库接收目标服务器发送的目标事务消息,其中,目标服务器为目标全局事务的事务协调者,目标事务消息中携带有目标拓扑信息和与目标数据库对应的待处理分支事务信息,待处理分支事务信息用于指示多个目标分支事务中,待目标数据库处理的分支事务。
作为一种可选的实施例,巡检单元606包括:
第一确定模块,用于按照目标存储对象中记录的目标拓扑信息,通过目标数据库确定与目标全局事务对应的第一状态信息;
第二确定模块,用于在根据第一状态信息确定出目标全局事务在提交之前发生异常的情况下,将目标全局事务确定为悬挂事务。
作为一种可选的实施例,第一确定模块包括:确定子模块,上述装置还包括:确定单元,其中,
确定子模块,用于按照目标拓扑信息,通过目标数据库检测目标心跳信息,其中,第一状态信息包含目标心跳信息,目标心跳信息为目标数据库与目标服务器之间的心跳信息,目标服务器为与目标全局事务对应的事务协调者;
确定单元,用于在按照目标拓扑信息,通过目标数据库检测目标心跳信息之后,在检测到目标心跳信息停止更新的情况下,确定出目标全局事务在提交之前发生异常。
作为一种可选的实施例,上述装置还包括:
获取单元,用于在按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检之后,在将目标全局事务确定为悬挂事务的情况下,获取与多个目标分支事务中的各个目标分支事务对应的第二状态信息;
控制单元,用于按照与各个目标分支事务对应的第二状态信息控制对各个分支事务执行目标事务操作,其中,目标事务操作包括以下之一:事务提交,事务回滚。
作为一种可选的实施例,控制单元包括:
第一控制模块,用于在根据与各个目标分支事务对应的第二状态信息确定出各个目标分支事务均已预提交成功的情况下,控制对各个目标分支事务进行事务提交;
第二控制模块,用于在根据与各个目标分支事务对应的第二状态信息确定出存在预提交失败的分支事务的情况下,控制对各个目标分支事务进行事务回滚。
作为一种可选的实施例,上述装置还包括:
删除单元,用于在按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检之后,在目标全局事务提交成功的情况下,将目标拓扑信息从目标存储对象中删除。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述悬挂事务巡检方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图7是根据本申请实施例的一种可选的电子设备的结构框图,如图7所示,包括处理器702、通信接口704、存储器706和通信总线708,其中,处理器702、通信接口704和存储器706通过通信总线708完成相互间的通信,其中,
存储器706,用于存储计算机程序;
处理器702,用于执行存储器706上所存放的计算机程序时,实现如下步骤:
S1,通过目标数据库接收目标拓扑信息,其中,目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息;
S2,将目标拓扑信息保存到目标存储对象中,其中,目标存储对象用于记录多个全局事务中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,目标数据库用于处理与每个全局事务对应的多个分支事务中的一个分支事务;
S3,按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检。
可选地,在本实施例中,上述的通信总线可以是PCI (Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA (Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器706中可以但不限于包括上述悬挂事务巡检装置中的接收单元602、保存单元604以及巡检单元606。此外,还可以包括但不限于上述悬挂事务巡检装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU (Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP (DigitalSignal Processing,数字信号处理器)、ASIC (Application Specific IntegratedCircuit,专用集成电路)、FPGA (Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图7所示的结构仅为示意,实施上述悬挂事务巡检方法的设备也可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图7其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项悬挂事务巡检方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,通过目标数据库接收目标拓扑信息,其中,目标拓扑信息是目标全局事务和与目标全局事务对应的多个目标分支事务之间的拓扑信息;
S2,将目标拓扑信息保存到目标存储对象中,其中,目标存储对象用于记录多个全局事务中的每个全局事务和与每个全局事务对应的多个分支事务之间的拓扑信息,目标数据库用于处理与每个全局事务对应的多个分支事务中的一个分支事务;
S3,按照目标存储对象中记录的拓扑信息,通过目标数据库对各个全局事务分别进行悬挂事务巡检。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种悬挂事务巡检方法,其特征在于,包括:
通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;
将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;
按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检。
2.根据权利要求1所述的方法,其特征在于,通过所述目标数据库接收所述目标拓扑信息包括:
通过所述目标数据库接收目标服务器发送的目标事务消息,其中,所述目标服务器为所述目标全局事务的事务协调者,所述目标事务消息中携带有所述目标拓扑信息和与所述目标数据库对应的待处理分支事务信息,所述待处理分支事务信息用于指示所述多个目标分支事务中,待所述目标数据库处理的分支事务。
3.根据权利要求1所述的方法,其特征在于,按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检包括:
按照所述目标存储对象中记录的所述目标拓扑信息,通过所述目标数据库确定与所述目标全局事务对应的第一状态信息;
在根据所述第一状态信息确定出所述目标全局事务在提交之前发生异常的情况下,将所述目标全局事务确定为悬挂事务。
4.根据权利要求3所述的方法,其特征在于,
按照所述目标存储对象中记录的所述目标拓扑信息,通过所述目标数据库确定与所述目标全局事务对应的所述第一状态信息包括:按照所述目标拓扑信息,通过所述目标数据库检测目标心跳信息,其中,所述第一状态信息包含所述目标心跳信息,所述目标心跳信息为所述目标数据库与目标服务器之间的心跳信息,所述目标服务器为与所述目标全局事务对应的事务协调者;
在按照所述目标拓扑信息,通过所述目标数据库检测所述目标心跳信息之后,所述方法还包括:在检测到所述目标心跳信息停止更新的情况下,确定出所述目标全局事务在提交之前发生异常。
5.根据权利要求1所述的方法,其特征在于,在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,所述方法还包括:
在将所述目标全局事务确定为悬挂事务的情况下,获取与所述多个目标分支事务中的各个目标分支事务对应的第二状态信息;
按照与所述各个目标分支事务对应的所述第二状态信息控制对所述各个分支事务执行目标事务操作,其中,所述目标事务操作包括以下之一:事务提交,事务回滚。
6.根据权利要求5所述的方法,其特征在于,按照与所述各个目标分支事务对应的所述第二状态信息控制对所述各个分支事务执行所述目标事务操作包括:
在根据与所述各个目标分支事务对应的所述第二状态信息确定出所述各个目标分支事务均已预提交成功的情况下,控制对所述各个目标分支事务进行事务提交;
在根据与所述各个目标分支事务对应的所述第二状态信息确定出存在预提交失败的分支事务的情况下,控制对所述各个目标分支事务进行事务回滚。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检之后,所述方法还包括:
在所述目标全局事务提交成功的情况下,将所述目标拓扑信息从所述目标存储对象中删除。
8.一种悬挂事务巡检装置,其特征在于,包括:
接收单元,用于通过目标数据库接收目标拓扑信息,其中,所述目标拓扑信息是目标全局事务和与所述目标全局事务对应的多个目标分支事务之间的拓扑信息;
保存单元,用于将所述目标拓扑信息保存到目标存储对象中,其中,所述目标存储对象用于记录多个全局事务中的每个全局事务和与所述每个全局事务对应的多个分支事务之间的拓扑信息,所述目标数据库用于处理与所述每个全局事务对应的所述多个分支事务中的一个分支事务;
巡检单元,用于按照所述目标存储对象中记录的拓扑信息,通过所述目标数据库对所述各个全局事务分别进行悬挂事务巡检。
9.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至7中任一项所述的方法步骤。
10.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项中所述的方法步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317349.8A CN112711466B (zh) | 2021-03-25 | 2021-03-25 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
PCT/CN2022/072050 WO2022199229A1 (zh) | 2021-03-25 | 2022-01-14 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317349.8A CN112711466B (zh) | 2021-03-25 | 2021-03-25 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112711466A true CN112711466A (zh) | 2021-04-27 |
CN112711466B CN112711466B (zh) | 2021-08-10 |
Family
ID=75550231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110317349.8A Active CN112711466B (zh) | 2021-03-25 | 2021-03-25 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112711466B (zh) |
WO (1) | WO2022199229A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022199229A1 (zh) * | 2021-03-25 | 2022-09-29 | 北京金山云网络技术有限公司 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033562A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 事务处理方法、事务参与节点及事务协调节点 |
US20160308882A1 (en) * | 2015-04-20 | 2016-10-20 | Yahoo! Inc. | Management of transactions in a distributed transaction system |
CN106844014A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 分布式事务防悬挂的实现方法和装置 |
CN110716793A (zh) * | 2019-10-10 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 一种分布式事务的执行方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080243865A1 (en) * | 2007-03-28 | 2008-10-02 | Oracle International Corporation | Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems |
CN107168775B (zh) * | 2016-03-07 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种悬挂事务自动处理的方法和装置 |
CN106503132B (zh) * | 2016-10-19 | 2019-07-16 | 广州快塑电子科技有限公司 | 一种分布式事务管理方法及系统 |
CN107908494B (zh) * | 2017-11-10 | 2021-05-07 | 泰康保险集团股份有限公司 | 异常事件的处理方法、装置、电子设备及存储介质 |
CN112115012A (zh) * | 2019-06-19 | 2020-12-22 | 中兴通讯股份有限公司 | 分布式数据库的事务监控方法及装置、系统、存储介质 |
CN110417586B (zh) * | 2019-07-18 | 2022-04-08 | 新华三大数据技术有限公司 | 服务监控方法、服务节点、服务器及计算机可读存储介质 |
CN112711466B (zh) * | 2021-03-25 | 2021-08-10 | 北京金山云网络技术有限公司 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
-
2021
- 2021-03-25 CN CN202110317349.8A patent/CN112711466B/zh active Active
-
2022
- 2022-01-14 WO PCT/CN2022/072050 patent/WO2022199229A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033562A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 事务处理方法、事务参与节点及事务协调节点 |
US20160308882A1 (en) * | 2015-04-20 | 2016-10-20 | Yahoo! Inc. | Management of transactions in a distributed transaction system |
CN106844014A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 分布式事务防悬挂的实现方法和装置 |
CN110716793A (zh) * | 2019-10-10 | 2020-01-21 | 腾讯科技(深圳)有限公司 | 一种分布式事务的执行方法、装置、设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022199229A1 (zh) * | 2021-03-25 | 2022-09-29 | 北京金山云网络技术有限公司 | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112711466B (zh) | 2021-08-10 |
WO2022199229A1 (zh) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5580831B2 (ja) | 分散ストレージシステムにおける定数ベースのトランザクショナルに一貫性のあるメンバシップ管理 | |
CN111090699A (zh) | 业务数据的同步方法和装置、存储介质、电子装置 | |
US20170163479A1 (en) | Method, Device and System of Renewing Terminal Configuration In a Memcached System | |
US9201919B2 (en) | Bandwidth optimized two-phase commit protocol for distributed transactions | |
WO2019028992A1 (zh) | 多模块版本依赖关系构建方法、装置、服务器和存储介质 | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
US20160350350A1 (en) | Ensuring the same completion status for transactions after recovery in a synchronous replication environment | |
CN110196759B (zh) | 分布式事务处理方法和装置、存储介质及电子装置 | |
WO2022134797A1 (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
US11223522B1 (en) | Context-based intelligent re-initiation of microservices | |
CN104850416A (zh) | 一种升级系统、方法、装置及云计算节点 | |
CN114363144B (zh) | 一种面向分布式系统的故障信息关联上报方法及相关设备 | |
CN112711466B (zh) | 悬挂事务巡检方法和装置、电子设备和存储介质 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN112015595B (zh) | 主从数据库的切换方法、计算设备及存储介质 | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
CN112559124A (zh) | 一种模型管理系统以及目标操作指令的处理方法和装置 | |
CN111143040A (zh) | 事务处理方法、装置、系统及存储介质 | |
CN113032477B (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN114130035A (zh) | 一种用户匹配方法、装置、设备及存储介质 | |
CN114116141A (zh) | 分布式系统的事务处理方法和装置、存储介质和电子装置 | |
CN112527561A (zh) | 基于物联网云存储的数据备份方法及装置 | |
CN111400404A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |