CN113849278A - 全局事务处理方法及系统 - Google Patents
全局事务处理方法及系统 Download PDFInfo
- Publication number
- CN113849278A CN113849278A CN202110932006.2A CN202110932006A CN113849278A CN 113849278 A CN113849278 A CN 113849278A CN 202110932006 A CN202110932006 A CN 202110932006A CN 113849278 A CN113849278 A CN 113849278A
- Authority
- CN
- China
- Prior art keywords
- sub
- transaction
- transactions
- rollback
- determining
- 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
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
- 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/54—Interprogram communication
- G06F9/546—Message 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种全局事务处理方法及系统,方法包括:基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。能够在保证数据一致性的前提下,提高全局事务的处理效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种全局事务处理方法及系统。
背景技术
随着信息技术的发展,软件系统由原来的单体应用转变为分布式应用,分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。分布式事务可能涉及多个不同的应用系统以及数据源,需要在应用过程中保证多个应用系统间数据一致性。
因此,如何提供一种全局事务处理方法及系统,在保证数据一致性的前提下,提高全局事务的处理效率,成为亟待解决的问题。
发明内容
本发明提供的全局事务处理方法及系统,用于在保证数据一致性的前提下,提高全局事务的处理效率。
本发明提供的一种全局事务处理方法,包括:
基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;
基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;
根据所述全局事务对应的回滚日志,执行全局事务控制。
根据本发明提供的全局事务处理方法,所述基于多个子事务,确定与所述多个子事务对应的全局事务的步骤之前,还包括:
分别接收多个子事务的子事务注解,每个子事务的子事务注解包括该子事务的标识和操作注解,所述操作注解为正向操作注解或逆向操作注解;
其中,所述基于多个子事务,确定与所述多个子事务对应的全局事务,包括:
根据所述多个子事务的子事务注解,确定与所述多个子事务对应的全局事务,所述全局事务具有全局事务唯一标识。
根据本发明提供的全局事务处理方法,所述基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志,具体包括:
接收每个子事务的操作信息,所述操作信息包括操作成功或操作异常;其中,每个子事务的操作信息根据该子事务的操作注解确定;
响应于每个子事务操作成功或操作异常,根据乐观锁机制,确定所述全局事务对应的回滚日志。
根据本发明提供的全局事务处理方法,所述根据所述全局事务对应的回滚日志,执行全局事务控制,具体包括:
根据所述回滚日志确定所述多个子事务操作成功时,删除所述回滚日志;或
根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作。
根据本发明提供的全局事务处理方法,根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,包括:
解析所述回滚日志,确定所述多个子事务中存在操作异常的第一子事务时,获取所述多个子事务对应的逆向操作接口,其中,所述操作异常包括子事务运行异常;
基于所述多个子事务对应的逆向操作接口,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行回滚操作;
响应于所述多个子事务回滚完成,删除所述回滚日志。
根据本发明提供的全局事务处理方法,所述操作注解包括超时时间和运行时异常;所述回滚日志包括子事务起始时间;
所述解析所述回滚日志,确定操作异常的第一子事务,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解,并基于所述子事务注解确定每个子事务的所述超时时间、所述子事务起始时间和操作注解;
根据每个子事务的所述操作注解、所述超时时间和所述子事务起始时间,将所述多个子事务中运行时异常且已超时的子事务确定为所述第一子事务。
根据本发明提供的全局事务处理方法,所述操作注解还包括不回滚异常;
所述根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解;
基于所述子事务注解确定所述多个子事务中存在操作注解为不回滚异常的第二子事务时,发送异常控制指令并删除所述回滚日志,所述异常控制指令用于指示对所述多个子事务不执行回滚操作。
本发明还提供一种全局事务处理方法,包括:
根据接收到的多个子事务的信息,分别为所述多个子事务添加注解;
基于所述多个子事务的注解,向服务端发送注册请求,所述注册请求用于请求确定所述多个子事务对应的全局事务;
确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息,以确定所述全局事务对应的回滚日志,其中,所述回滚日志根据每个子事务的操作信息生成。
根据本发明提供的全局事务处理方法,所述根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,具体包括:
根据接收到的多个子事务的信息,确定所述多个子事务中每个子事务对应的正向操作接口和逆向操作接口;
给所述正向操作接口添加正向操作注解,以及给所述逆向操作接口添加逆向操作注解;其中,所述注解包括子事务唯一标识;
其中,所述方法还包括:
接收所述服务端发送的全局事务对应的异常控制指令;
根据所述异常控制指令,调用每个子事务的逆向操作接口执行回滚操作。
本发明还提供一种全局事务处理系统,包括:客户端和服务端,其中:
所述客户端,用于根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于所述多个子事务的注解,向服务端发送注册请求;确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息;
所述服务端,用于接收所述注册请求,确定与所述多个子事务对应的全局事务;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述全局事务处理方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述全局事务处理方法的步骤。
本发明提供的全局事务处理方法及系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的全局事务处理方法流程图之一;
图2是本发明提供的全局事务处理框架示意图;
图3是本发明提供的全局事务处理方法时序流程示意图;
图4是本发明提供的全局事务异常回滚时序流程示意图;
图5是本发明提供的全局事务处理方法流程图之二;
图6是本发明提供的全局事务处理系统的结构示意图;
图7是本发明提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中的单应用、单数据源的应用系统一致性通常使用系统内部使用数据库自带的事务实现。
单应用、多数据源的分布式系统的内部多个微服务间的事务数据一致性可以通过Seata框架实现。
跨应用系统的、多应用、多数据源的分布式事务处理过程中多个应用系统间需要保证数据一致性问题例如:比如跨行转账,涉及两个银行的系统,保证两个银行的数据一致性。再比如常见的电商网站,涉及“银行扣款”和“物流发货”两个核心系统,订单系统要保证用户付款和物流发货两部操作的数据一致性,不能付款后不发货或者不付款就发货,其中至少涉及银行和物流两个应用系统,由订单系统去实现和保证跨应用的数据一致性。
目前现有技术中对于多个应用系统的属于一致性并没有简单易用的解决方案,一般由程序员使用数据库或支持事务的MQ加各种锁变相实现2PC或TCC算法,从而达到分布式事务的目的。
示例地,还可以使用数据库、支持事务的消息队列(Message Queue,简称MQ)、两阶段提交(two phase commit,简称2PC)、三阶段提交(three phase commit,简称3PC)或分布式事务TCC(Try-Confirm-Cancel)模式等方式保证分布式事务涉及的应用系统间数据的一致性。但上述方法存在开发流程复杂,开发成本高昂,且应用时锁定本地资源,分布式事务处理效率低,处理过程极易出错,稳定性和健壮性较低的问题。
在对本发明做详细说明之前,首先对本发明中所涉及的相关概念进行说明。
本发明以Base理论为基础,BASE是BasicallyAvailable(基本可用)、Softstate(软状态)和Eventuallyconsistent(最终一致性)三个短语的缩写。
BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用,但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。满足BASE理论的事务称为“柔性事务”。
基本可用:分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。如电商网站交易付款出现问题了,商品依然可以正常浏览。
软状态:由于不要求强一致性,所以BASE允许系统中存在中间状态(也叫软状态),这个状态不影响系统可用性,如订单的“支付中”、“数据同步中”等状态,待数据最终一致后状态改为“成功”状态。
最终一致:最终一致是指经过一段时间后,所有节点数据都将会达到一致。如订单的“支付中”状态,最终会变为“支付成功”或者“支付失败”,使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。
图2是本发明提供的分布式事务处理框架示意图,如图2所示,本发明基于C/S架构实现,其中包括TM Client和TMServer。
TM Client(Transaction Management Client,事务管理器客户端):以jar包形式内嵌到某个微服务系统,提供基础的注解和数据通信能力。
TM Server(Transaction Management Server,事务管理器服务端):即全局事务管理器,内部使用2PC算法实现分布式事务控制和管理。
如图2所示,整个分布式事务处理可分为两个步骤,其中,步骤(1)为注册并提交事务,数据修改后注册并提交全局事务。步骤(2)为回滚事务,有一个系统的事务未能执行完成,则全局所有系统的事务全部回滚,由服务端全局事务管理器调度通知各系统回滚事务。
2PC(two-phase commit protocol)即两阶段提交协议,是将整个事务流程分为两个阶段,P是准备阶段(Prepare phase)、C提交阶段(commit phase)。
整个事务过程由全局事务管理器TM Server和参与者TM Client实现。
准备阶段(Prepare phase):TM Client注册事务,每个TM Client提供正向和逆向两个操作接口,然后自己本地执行操作,本地也可以执行本地事务,不影响全局事务。
提交阶段(commitphase):如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据事务管理器的指令执行提交或者回滚操作,并释放事务处理过程中使用的锁资源。
图1是本发明提供的全局事务处理方法流程图之一,如图1所示,本发明提供的一种全局事务处理方法,对应的执行主体为服务端,即TM Server,包括:
步骤101,基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;
步骤102,基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;
步骤103,根据所述全局事务对应的回滚日志,执行全局事务控制。
需要说明的是,上述方法的执行主体可以是电子设备、电子设备中的部件、集成电路或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本发明不作具体限定。
具体的,由于本发明适用于分布式系统的数据一致性保持,应用本发明需要满足几个前提:(1)需要至少有两个应用系统参与;(2)每一个应用都提供正向和逆向操作两个接口(例如:转账场景需要提供转账和退款两个接口);(3)正向操作和逆向操作互相独立(允许短时间的数据不一致,存在短暂数据延时,但数据最终会一致,满足Base理论)。
需要说明的是,在本发明的实际应用过程中,需要进行数据同步的应用系统的数量(即全局事务中子事务的数量)可根据实际情况进行设置,本发明对此不做限定。
以两个应用系统为例对本发明进行说明,假设有A和B两个系统,A系统有a操作,B系统有b操作,场景要求a操作和b操作保持数据一致性,a操作成功后b操作也必须成功,若a操作和b操作中存在任意一个失败都进行回滚操作。
确定出现需要处理的全局事务时,在步骤101中,基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发。
需要说明的是,由于子事务在多操作系统中并不一定是唯一的,例如,在转账场景中,转账业务作为一个分布式应用,在同一时间段内,多个用户都能够进行转账操作,需要处理的子事务数量与用户数量相同。针对上述多个子事务,TM Server提供管理多个子事务的全局事务。
此处,不同服务系统在实际中包括多个应用系统,至少包括两个不同的应用系统。在步骤102中,基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志。
可以理解的是,不同的服务系统触发的多个子事务执行相应的操作后生成相应的操作信息,由TM Server接收该操作信息,生成全局事务的回滚日志,回滚日志记录子事务相关的信息以及状态,能够根据解析回滚日志快速确定子事务。
需要说明的是,回滚日志的存储形式(例如:以数据表单的形式或数组的形式等)以及存储的数据类型(例如:唯一标识、起始时间、完成时间、事务类型和事务状态等)可根据实际情况进行调整,本发明对此不做限定。
在步骤103中,根据所述全局事务对应的回滚日志,执行全局事务控制。
可以理解的是,TM Server解析回滚日志,根据多个子事务的操作状态,确定对应的执行策略,如子事务操作成功,则直接删除回滚日志,如子事务操作失败,向TM Client发送异常控制指令,指示该子事务进行回滚操作。
子事务操作异常的对应操作可根据实际情况进行设置,并且不同子事务对应的操作可能存在不同,可根据实际情况进行调整,本发明对此不做限定。
需要说明的是,在所有的子事务完成和存在子事务操作异常之外,还存在子事务没有全部完成但也不存在异常的情况,此时基于Base理论允许短时间的数据不一致,存在短暂数据延时,但数据最终会一致。
本发明提供的全局事务处理方法,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
可选的,根据本发明提供的全局事务处理方法,所述基于多个子事务,确定与所述多个子事务对应的全局事务的步骤之前,还包括:
分别接收多个子事务的子事务注解,每个子事务的子事务注解包括该子事务的标识和操作注解,所述操作注解为正向操作注解或逆向操作注解;
其中,所述基于多个子事务,确定与所述多个子事务对应的全局事务,包括:
根据所述多个子事务的子事务注解,确定与所述多个子事务对应的全局事务,所述全局事务具有全局事务唯一标识。具体的,图3是本发明提供的全局事务处理方法时序流程示意图,如图3所示,将A系统和B系统提供跨应用操作数据场景,本发明提供的方法作为一个微服务应用,其中,TM Client事务管理器客户端以jar包的形式嵌入微服务应用;TMServer事务管理器服务端,提供事务的注册和回滚等操作,负责全局事务的管理和控制。
A系统和B系统提供正向和逆向两个操作,其中,A对应图3中步骤(1)和步骤(3),B对应图3中步骤(5)和步骤(7)。A系统和B系统提供至少四个方法,分别对应A1、A2、B1、B2四个正逆向操作,对应图中步骤(2)、步骤(4)和步骤(6)、步骤(8)。
在确定需要使用本发明提供的方法对A系统和B系统进行数据一致性管理之前,需要给全局事务对应的所述多个子事务添加注解。
根据全局事务对应的所述多个子事务,确定子事务对应的正向操作接口(图3中A1、B1)和逆向操作接口(图3中A2、B2);其中正向操作接口用于执行子事务提交操作(例如:付款);逆向操作接口用于执行子事务回滚操作(例如:退款)。
给正向操作接口添加正向操作注解@Do(图3中步骤(2)和步骤(6)),给逆向操作接口添加逆向操作注解@UnDo。其中,注解包括子事务的唯一标识。
可以理解的是,实现本方法所使用的具体语言可根据实际需求进行设置,对应的添加注解的具体方法可根据实际情况进行调整,其次,子事务的唯一标识用于对不同的子事务进行区分,子事务唯一标识的生成规则可根据实际情况进行调整。本发明对此不做限定。
基于全局事务,确定全局事务唯一标识(图3中步骤(9)、(10)和(11))),具体包括:
TM Client在启动时,确定全局事务对应的所述多个子事务的注解。
并对子事务的注解进行扫描,读取所述多个子事务对应的正向注解和逆向注解,生成全局事务JSON,并提交给TM Server。
可以理解的是,数据的存储形式和格式可根据实际情况进行调整,本发明对此不做限定。
TM Server基于全局事务JSON,确定全局事务唯一标识TID。
可以理解的是,子事务对应的操作包括正向操作和逆向操作,为了进行子事务的区分,正向操作注解和逆向操作注解中均包括子事务唯一标识id。具体的唯一标识的生成规则和注解的形式,可根据实际情况进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过增加注解的方式使本发明简单易用,应用广泛。亲和微服务生态,所有操作基于微服务开发模式,友好的支持Spring生态和SpringBoot框架,事务的注册、提交和回滚都能够通过HTTP REST接口调用实现,区别于传统的事务协议,任何微服务系统只需使用HTTP(HyperText Transfer Protocal)客户端工具,即可完成全局事务管理器的介入和使用,实现微服务生态的无缝兼容。通过增加注解即可实现全局事务管理,无需重新编写程序,能够有效降低开发成本。
除此之外,通过全局事务及其对应的子事务作为一个完整的单元,通过读取所述多个子事务对应的正向操作注解和逆向操作注解,确定全局事务唯一标识,可用性强。可以理解的是,优选的,使用C/S构架的方式,TM Server支持单节点和多节点集群部署,提供高可用服务,支持基于数据库存储的集群模式,水平扩展能力强。
除此之外,也能用服务器直接实现本发明提供的全局事务处理方法,具体的实现方法可根据实际需求进行调整,本发明对此不做限定。
可选的,根据本发明提供的全局事务处理方法,所述基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志,具体包括:
接收每个子事务的操作信息,所述操作信息包括操作成功或操作异常;其中,每个子事务的操作信息根据该子事务的操作注解确定;
响应于每个子事务操作成功或操作异常,根据乐观锁机制,确定所述全局事务对应的回滚日志。
具体的,TM Server接收TM Client发送的关于每个子事务的操作信息,该操作信息包括子事务操作成功还是操作异常的信息,通过每个子事务的操作注解来确定,进行响应后,根据乐观锁(Optimistic Locking)机制实现子事务操作的标记和锁定,将数据量记录回滚日志(undo log日志)。
可以理解的是,乐观锁假设数据不会发生并发冲突,仅在数据更新的时候(提交操作时)检查是否违反数据完整性,不会刻意使用数据库本身的锁机制,而是依据数据本身来保证数据的正确性。乐观锁机制的具体实现方法可根据实际情况设置,本发明对此不做限定。
本发明提供的全局事务处理方法,通过乐观锁机制,“无锁”的实现2PC算法,能够保证不锁定本地资源,本地事务自由提交,有效提高全局事务处理的效率。并且有效系统事务处理的稳定性和健壮性,可用性更强,能够支持长事务,超时机制可以支持跨天、跨月甚至是跨年的长事务,事务锁定的同时不影响单个微服务性能。
可选的,根据本发明提供的全局事务处理方法,所述根据所述全局事务对应的回滚日志,执行全局事务控制,具体包括:
根据所述回滚日志确定所述多个子事务操作成功时,删除所述回滚日志;或
根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作。
其中,所述根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,包括:
解析所述回滚日志,确定所述多个子事务中存在操作异常的第一子事务时,获取所述多个子事务对应的逆向操作接口,其中,所述操作异常包括子事务运行异常;
基于所述多个子事务对应的逆向操作接口,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行回滚操作;
响应于所述多个子事务回滚完成,删除所述回滚日志。
具体的,图3中,步骤(12)-(15)是一次子事务操作,A1操作成功后自动提交事务,TM Client标记该子事务为操作成功,并记录生效时间。步骤(16)-(19)是另一次子事务操作,B1操作成功后自动提交事务,TM Client标记该子事务为操作成功,并记录生效时间。
TM Client将数据提交给TM Server,若确定所有的全局事务全部执行成功(步骤(20)),TM Server自动确认全局事务完成,然后删除对应的回滚日志(undo log)。
同时,在对全局事务进行处理时,可能会出现子事务操作失败或者异常的问题,以图3中B1操作异常为例对本发明进行说明。图4是本发明提供全局事务异常回滚时序流程示意图,如图4所示。
TM Client确定B1操作异常(步骤(16))后,将B1操作遇到异常信息自动提交给TMServer(步骤(17)),TM Server会解析回滚日志(undo log),解析出A2回滚操作的接口地址(步骤(18)),然后调用子事务对应的逆向接口a2接口(步骤(19)),将全局事务回滚,确定全局事务回滚完成,删除回滚日志(undo log)(步骤(20))。
需要说明的是,在本发明中,对应确定子事务操作异常的方法,以及子事务什么操作才是异常的设置,可根据实际情况进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,确定子事务对应的逆向操作进行回滚,并删除回滚日志,保证在出现操作异常时,数据的一致性。
可选的,根据本发明提供的全局事务处理方法,所述操作注解包括超时时间和运行时异常;所述回滚日志包括子事务起始时间;
所述解析所述回滚日志,确定操作异常的第一子事务,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解,并基于所述子事务注解确定每个子事务的所述超时时间、所述子事务起始时间和操作注解;
根据每个子事务的所述操作注解、所述超时时间和所述子事务起始时间,将所述多个子事务中运行时异常且已超时的子事务确定为所述第一子事务。
具体的,在处理分布式应用时,可能会存在任务没有被处理,但也没有出现异常的情况,此时,为了避免数据的堆积以及超时任务导致的问题,可以通过设置超时时间对子事务的时间进行管理。
在增添注解时,在正向操作注解和逆向操作注解均中设置超时时间。即,@Do和@UnDo两个注解包含的属性:1)value(或name):子事务名称,唯一标识一个子事务操作;2)timeout:超时时间(具体数值可根据需要进行设置,也可设置无限超时时间即对超时不限制)。对应的,回滚日志中记录子事务起始时间。
所述解析所述回滚日志,确定操作异常的第一子事务,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解,并基于所述子事务注解确定每个子事务的所述超时时间、所述子事务起始时间和操作注解;
根据每个子事务的所述操作注解、所述超时时间和所述子事务起始时间,将所述多个子事务中运行时异常且已超时的子事务确定为所述第一子事务。
可以理解的是,在本发明中,超时时间可以是超时的时间点,也可以是子事务可持续的最长时长等,具体的设置方法以及对应的时长可根据实际情况进行设置,本发明对此不做限制。
进一步,可以理解的是,除了设置超时时间对子事务持续时间进行管控之外,还可以如图3所示,设置步骤(21)令TM Server定时扫描undo log日志表,清理已经成功的事务,回滚已经超时的事务。具体的实现方法可以是以固定时间周期进行清理,或设置固定的时间进行清理等方法,具体情况可根据实际情况进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,并对子事务的时间进行管控,在确定子事务超时是,确定子事务操作异常,对全局事务进行回滚。有效地避免无锁2PC状态下,分布式应用存储时间过长,数据量过大,导致存储和处理的负担,节省计算资源。
可选的,根据本发明提供的全局事务处理方法,所述操作注解还包括不回滚异常;
所述根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解;
基于所述子事务注解确定所述多个子事务中存在操作注解为不回滚异常的第二子事务时,发送异常控制指令并删除所述回滚日志,所述异常控制指令用于指示对所述多个子事务不执行回滚操作。
具体的,正向操作注解和逆向操作注解均还包括不回滚异常。对于某一些子事务,可以在注解时写入不回滚异常。即设置noRollbackFor:不回滚异常,指明什么异常不回滚(可以以数组的形式设置,默认为空)。需要说明的是,不回滚异常的具体操作和数量可根据实际情况进行设置。
检测子事务完成状态,若确定所述多个子事务执行成功,则删除回滚日志,若确定存在子事务操作异常,则回滚所述多个子事务并删除回滚日志,具体包括:
检测子事务完成状态,确定存在第二子事务出现异常操作。
解析回滚日志,根据第二子事务的对应的唯一标识,读取第二子事务操作对应的注解中对应的不回滚异常。
将当前第二子事务的异常操作和读取的不回滚异常进行对比,若确定第二子事务的异常操作是不回滚异常,则不进行全局事务回滚,若确定第二子事务的异常操作不是不回滚异常,则回滚全局事务。
可以理解的是,在进行注解的时候,也可以注解rollbackFor:回滚异常,指明什么异常进行回滚(可以以数组的形式设置,例如,默认RuntimeException运行时异常)。
回滚异常与不回滚异常可以仅选取其一进行设置,或者,对所有的全局事务中子事务设置相同的回滚异常对应的操作类型,针对个别子事务,设置不回滚异常,对一些操作不予限制。具体的设置方法可根据实际需求进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,根据设置的不回滚异常对于一些异常操作进行豁免,能够针对不同的子事务对应不同的异常操作,提高全局事务处理的灵活性。
图5是本发明提供的全局事务处理方法流程图之二,如图5所示,本发明提供的一种全局事务处理方法,对应的执行主体为客户端,即TM Client,包括:
步骤201,根据接收到的多个子事务的信息,分别为所述多个子事务添加注解;
步骤202,基于所述多个子事务的注解,向服务端发送注册请求,所述注册请求用于请求确定所述多个子事务对应的全局事务;
步骤203,确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息,以确定所述全局事务对应的回滚日志,其中,所述回滚日志根据每个子事务的操作信息生成。
需要说明的是,上述方法的执行主体可以是电子设备、电子设备中的部件、集成电路或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本发明不作具体限定。
具体的,在步骤201中,根据接收到的多个子事务的信息,分别为所述多个子事务添加注解;
如图3所示,将A系统和B系统提供跨应用操作数据场景,本发明提供的方法作为一个微服务应用,其中,TM Client事务管理器客户端以jar包的形式嵌入微服务应用;TMServer事务管理器服务端,提供事务的注册和回滚等操作,负责全局事务的管理和控制。
在确定需要使用本发明提供的方法对A系统和B系统进行数据一致性管理之前,需要给全局事务对应的所述多个子事务添加注解。
在步骤202中,基于所述多个子事务的注解,向服务端发送注册请求,所述注册请求用于请求确定所述多个子事务对应的全局事务;
需要说明的是,TM Client在给多个子事务添加注解后,向TM Server发送注册请求,以供TM Server基于多个子事务,确定与多个子事务对应的全局事务,这里的多个子事务中的至少两个子事务由不同服务系统触发。此处,不同服务系统在实际中包括多个应用系统,至少包括两个不同的应用系统。
由于事务在多操作系统中并不一定是唯一的,例如,在转账场景中,转账业务作为一个分布式应用,在同一时间段内,多个用户都能够进行转账操作,需要处理的子事务数量与用户数量相同。
在步骤203中,确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息,以确定所述全局事务对应的回滚日志,其中,所述回滚日志根据每个子事务的操作信息生成。
可以理解的是,在使用回滚日志基于子事务之后,对应的可以理解为对不同的子事务进行标记,回滚日志记录子事务相关的信息以及状态,能够根据解析回滚日志快速确定子事务。
需要说明的是,回滚日志的存储形式(例如:以数据表单的形式或数组的形式等)以及存储的数据类型(例如:唯一标识、起始时间、完成时间、事务类型和事务状态等)可根据实际情况进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
可选的,根据本发明提供的全局事务处理方法,所述根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,具体包括:
根据接收到的多个子事务的信息,确定所述多个子事务中每个子事务对应的正向操作接口和逆向操作接口;
给所述正向操作接口添加正向操作注解,以及给所述逆向操作接口添加逆向操作注解;其中,所述注解包括子事务唯一标识。
其中,所述方法还包括:
接收所述服务端发送的全局事务对应的异常控制指令;
根据所述异常控制指令,调用每个子事务的逆向操作接口执行回滚操作。
具体的,如图3所示,A系统和B系统提供正向和逆向两个操作,其中,A对应图3中步骤(1)和步骤(3),B对应图3中步骤(5)和步骤(7)。A系统和B系统提供至少四个方法,分别对应A1、A2、B1、B2四个正逆向操作,对应图中步骤(2)、步骤(4)和步骤(6)、步骤(8)。
在确定需要使用本发明提供的方法对A系统和B系统进行数据一致性管理之前,需要给全局事务对应的所述多个子事务添加注解。
根据全局事务对应的所述多个子事务,确定子事务对应的正向操作接口(图3中A1、B1)和逆向操作接口(图3中A2、B2);其中正向操作接口用于执行子事务提交操作(例如:付款);逆向操作接口用于执行子事务回滚操作(例如:退款)。
给正向操作接口添加正向操作注解@Do(图3中步骤(2)和步骤(6)),给逆向操作接口添加逆向操作注解@UnDo。其中,注解包括子事务的唯一标识。
可以理解的是,实现本方法所使用的具体语言可根据实际需求进行设置,对应的添加注解的具体方法可根据实际情况进行调整,其次,子事务的唯一标识用于对不同的子事务进行区分,子事务唯一标识的生成规则可根据实际情况进行调整。本发明对此不做限定。
基于全局事务,确定全局事务唯一标识(图3中步骤(9)、(10)和(11))),具体包括:
TM Client在启动时,确定全局事务对应的所述多个子事务的注解。
并对子事务的注解进行扫描,读取所述多个子事务对应的正向注解和逆向注解,生成全局事务JSON,并提交给TM Server。
可以理解的是,数据的存储形式和格式可根据实际情况进行调整,本发明对此不做限定。
TM Server基于全局事务JSON,确定全局事务唯一标识TID。
可以理解的是,子事务对应的操作包括正向操作和逆向操作,为了进行子事务的区分,正向操作注解和逆向操作注解中均包括子事务唯一标识id。具体的唯一标识的生成规则和注解的形式,可根据实际情况进行调整,本发明对此不做限定。
如图3所示,步骤(12)-(15)是一次子事务操作,A1操作成功后自动提交事务,TMClient标记该子事务为操作成功,并记录生效时间。步骤(16)-(19)是另一次子事务操作,B1操作成功后自动提交事务,TM Client标记该子事务为操作成功,并记录生效时间。
TM Client将数据提交给TM Server,若确定所有的全局事务全部执行成功(步骤(20)),TM Server自动确认全局事务完成,然后删除对应的回滚日志(undo log)。
同时,在对全局事务进行处理时,可能会出现子事务操作失败或者异常的问题,以图3中B1操作异常为例对本发明进行说明。图4是本发明提供全局事务异常回滚时序流程示意图,如图4所示:
TM Client确定B1操作异常(步骤(16))后,将B1操作遇到异常信息自动提交给TMServer(步骤(17)),TM Server会解析回滚日志(undo log),解析出A2回滚操作的接口地址(步骤(18)),然后调用子事务对应的逆向接口a2接口(步骤(19)),将全局事务回滚,确定全局事务回滚完成,删除回滚日志(undo log)(步骤(20))。
需要说明的是,在本发明中,对应确定子事务操作异常的方法,以及子事务什么操作才是异常的设置,可根据实际情况进行调整,本发明对此不做限定。
本发明提供的全局事务处理方法,通过增加注解的方式使本发明简单易用,应用广泛。亲和微服务生态,所有操作基于微服务开发模式,友好的支持Spring生态和SpringBoot框架,事务的注册、提交和回滚都能够通过HTTP REST接口调用实现,区别于传统的事务协议,任何微服务系统只需使用HTTP(HyperText Transfer Protocal)客户端工具,即可完成全局事务管理器的介入和使用,实现微服务生态的无缝兼容。通过增加注解即可实现全局事务管理,无需重新编写程序,能够有效降低开发成本。通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,确定子事务对应的逆向操作进行回滚,并删除回滚日志,保证在出现操作异常时,数据的一致性。图6是本发明提供的全局事务处理系统的结构示意图,如图6所示,本发明还提供一种全局事务处理系统,包括:客户端61和服务端62,其中:
所述客户端61,用于根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于所述多个子事务的注解,向服务端发送注册请求;确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息;
所述服务端62,用于接收所述注册请求,确定与所述多个子事务对应的全局事务;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
可选的,根据本发明提供的全局事务处理系统,所述客户端61包括第一处理模块611、第二处理模块612和第三处理模块613,其中:
所述第一处理模块611用于根据接收到的多个子事务的信息,分别为所述多个子事务添加注解;所述第二处理模块612用于基于所述多个子事务的注解,向服务端发送注册请求,所述注册请求用于请求确定所述多个子事务对应的全局事务;所述第三处理模块613用于确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息,以确定所述全局事务对应的回滚日志,其中,所述回滚日志根据每个子事务的操作信息生成。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
可选地,根据本发明提供的全局事务处理系统,所述第一处理模块611具体用于根据接收到的多个子事务的信息,确定所述多个子事务中每个子事务对应的正向操作接口和逆向操作接口;给所述正向操作接口添加正向操作注解,以及给所述逆向操作接口添加逆向操作注解;其中,所述注解包括子事务唯一标识。
本发明提供的全局事务处理系统,通过增加注解的方式使本发明简单易用,应用广泛。亲和微服务生态,所有操作基于微服务开发模式,友好的支持Spring生态和SpringBoot框架,事务的注册、提交和回滚都能够通过HTTP REST接口调用实现,区别于传统的事务协议,任何微服务系统只需使用HTTP(HyperText Transfer Protocal)客户端工具,即可完成全局事务管理器的介入和使用,实现微服务生态的无缝兼容。通过增加注解即可实现全局事务管理,无需重新编写程序,能够有效降低开发成本。
可选地,根据本发明提供的全局事务处理系统,所述第二处理模块612具体用于接收所述服务端发送的全局事务对应的异常控制指令;根据所述异常控制指令,调用每个子事务的逆向操作接口执行回滚操作。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,确定子事务对应的逆向操作进行回滚,并删除回滚日志,保证在出现操作异常时,数据的一致性。
可选地,根据本发明提供的全局事务处理系统,所述服务端62包括第四处理模块621、第五处理模块622和第六处理模块623,其中:
所述第四处理模块621用于基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;所述第五处理模块622用于基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;所述第六处理模块623根据所述全局事务对应的回滚日志,执行全局事务控制。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,仅在确定所有的子事务全部完成的条件下才删除对应的回滚日志,保证子事务的数据一致性,并且仅通过回滚事务表对子事务的状态进行监控,无需锁定本地资源,不影响其他事务的正常处理,有效地提高全局事务的处理效率。
可选地,根据本发明提供的全局事务处理系统,所述服务端62还包括第七处理模块624,所述第七处理模块624用于分别接收多个子事务的子事务注解,每个子事务的子事务注解包括该子事务的标识和操作注解,所述操作注解为正向操作注解或逆向操作注解;其中,所述基于多个子事务,确定与所述多个子事务对应的全局事务,包括:根据所述多个子事务的子事务注解,确定与所述多个子事务对应的全局事务,所述全局事务具有全局事务唯一标识。根据本发明提供的全局事务处理方法,所述基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志,具体包括:接收每个子事务的操作信息,所述操作信息包括操作成功或操作异常;其中,每个子事务的操作信息根据该子事务的操作注解确定;响应于每个子事务操作成功或操作异常,根据乐观锁机制,确定所述全局事务对应的回滚日志。
本发明提供的全局事务处理系统,通过增加注解的方式使本发明简单易用,应用广泛。亲和微服务生态,所有操作基于微服务开发模式,友好的支持Spring生态和SpringBoot框架,事务的注册、提交和回滚都能够通过HTTP REST接口调用实现,区别于传统的事务协议,任何微服务系统只需使用HTTP(HyperText Transfer Protocal)客户端工具,即可完成全局事务管理器的介入和使用,实现微服务生态的无缝兼容。通过增加注解即可实现全局事务管理,无需重新编写程序,能够有效降低开发成本。
可选地,根据本发明提供的全局事务处理系统,所述第五处理模块622具体用于接收每个子事务的操作信息,所述操作信息包括操作成功或操作异常;其中,每个子事务的操作信息根据该子事务的操作注解确定;响应于每个子事务操作成功或操作异常,根据乐观锁机制,确定所述全局事务对应的回滚日志。
本发明提供的全局事务处理系统,通过乐观锁机制,“无锁”的实现2PC算法,能够保证不锁定本地资源,本地事务自由提交,有效提高全局事务处理的效率。并且有效系统事务处理的稳定性和健壮性,可用性更强,能够支持长事务,超时机制可以支持跨天、跨月甚至是跨年的长事务,事务锁定的同时不影响单个微服务性能。
可选地,根据本发明提供的全局事务处理系统,所述第六处理模块623具体用于根据所述回滚日志确定所述多个子事务操作成功时,删除所述回滚日志;或根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作。其中,所述根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,包括:解析所述回滚日志,确定所述多个子事务中存在操作异常的第一子事务时,获取所述多个子事务对应的逆向操作接口,其中,所述操作异常包括子事务运行异常;基于所述多个子事务对应的逆向操作接口,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行回滚操作;响应于所述多个子事务回滚完成,删除所述回滚日志。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,确定子事务对应的逆向操作进行回滚,并删除回滚日志,保证在出现操作异常时,数据的一致性。
可选地,根据本发明提供的全局事务处理系统,所述操作注解包括超时时间和运行时异常;所述回滚日志包括子事务起始时间;所述所述第六处理模块623还具体用于解析所述回滚日志,获取每个子事务的所述子事务注解,并基于所述子事务注解确定每个子事务的所述超时时间、所述子事务起始时间和操作注解;根据每个子事务的所述操作注解、所述超时时间和所述子事务起始时间,将所述多个子事务中运行时异常且已超时的子事务确定为所述第一子事务。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,并对子事务的时间进行管控,在确定子事务超时是,确定子事务操作异常,对全局事务进行回滚。有效地避免无锁2PC状态下,分布式应用存储时间过长,数据量过大,导致存储和处理的负担,节省计算资源。
可选地,根据本发明提供的全局事务处理系统,所述操作注解还包括不回滚异常,所述第六处理模块623还具体用于解析所述回滚日志,获取每个子事务的所述子事务注解;基于所述子事务注解确定所述多个子事务中存在操作注解为不回滚异常的第二子事务时,发送异常控制指令并删除所述回滚日志,所述异常控制指令用于指示对所述多个子事务不执行回滚操作。
本发明提供的全局事务处理系统,通过全局事务及其对应的子事务作为一个完整的单元,结合回滚日志实现对子事务状态的管理及监控,在确定存在子事务存在操作异常时,根据设置的不回滚异常对于一些异常操作进行豁免,能够针对不同的子事务对应不同的异常操作,提高全局事务处理的灵活性。
图7是本发明提供的一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(communication interface)711、存储器(memory)712和总线(bus)713,其中,处理器710,通信接口711,存储器712通过总线713完成相互间的通信。处理器710可以调用存储器712中的逻辑指令,以执行如下方法:基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机电源屏(可以是个人计算机,服务器,或者网络电源屏等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的全局事务处理方法,例如包括:基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的全局事务处理方法,例如包括:基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机电源屏(可以是个人计算机,服务器,或者网络电源屏等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种全局事务处理方法,其特征在于,包括:
基于多个子事务,确定与所述多个子事务对应的全局事务;其中,所述多个子事务中的至少两个子事务由不同服务系统触发;
基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;
根据所述全局事务对应的回滚日志,执行全局事务控制。
2.根据权利要求1所述的方法,其特征在于,所述基于多个子事务,确定与所述多个子事务对应的全局事务的步骤之前,还包括:
分别接收多个子事务的子事务注解,每个子事务的子事务注解包括该子事务的标识和操作注解,所述操作注解为正向操作注解或逆向操作注解;
其中,所述基于多个子事务,确定与所述多个子事务对应的全局事务,包括:
根据所述多个子事务的子事务注解,确定与所述多个子事务对应的全局事务,所述全局事务具有全局事务唯一标识。
3.根据权利要求1或2所述的方法,其特征在于,所述基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志,具体包括:
接收每个子事务的操作信息,所述操作信息包括操作成功或操作异常;其中,每个子事务的操作信息根据该子事务的操作注解确定;
响应于每个子事务操作成功或操作异常,根据乐观锁机制,确定所述全局事务对应的回滚日志。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述全局事务对应的回滚日志,执行全局事务控制,具体包括:
根据所述回滚日志确定所述多个子事务操作成功时,删除所述回滚日志;或
根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作。
5.根据权利要求4所述的方法,其特征在于,根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,包括:
解析所述回滚日志,确定所述多个子事务中存在操作异常的第一子事务时,获取所述多个子事务对应的逆向操作接口,其中,所述操作异常包括子事务运行异常;
基于所述多个子事务对应的逆向操作接口,发送所述异常控制指令,所述异常控制指令用于指示对所述多个子事务执行回滚操作;
响应于所述多个子事务回滚完成,删除所述回滚日志。
6.根据权利要求5所述的方法,其特征在于,所述操作注解包括超时时间和运行时异常;所述回滚日志包括子事务起始时间;
所述解析所述回滚日志,确定操作异常的第一子事务,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解,并基于所述子事务注解确定每个子事务的所述超时时间、所述子事务起始时间和操作注解;
根据每个子事务的所述操作注解、所述超时时间和所述子事务起始时间,将所述多个子事务中运行时异常且已超时的子事务确定为所述第一子事务。
7.根据权利要求4所述的方法,其特征在于,所述操作注解还包括不回滚异常;
所述根据所述回滚日志确定所述多个子事务中存在操作异常的子事务时,发送异常控制指令,所述异常控制指令用于指示对所述多个子事务执行控制操作,具体包括:
解析所述回滚日志,获取每个子事务的所述子事务注解;
基于所述子事务注解确定所述多个子事务中存在操作注解为不回滚异常的第二子事务时,发送异常控制指令并删除所述回滚日志,所述异常控制指令用于指示对所述多个子事务不执行回滚操作。
8.一种全局事务处理方法,其特征在于,包括:
根据接收到的多个子事务的信息,分别为所述多个子事务添加注解;
基于所述多个子事务的注解,向服务端发送注册请求,所述注册请求用于请求确定所述多个子事务对应的全局事务;
确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息,以确定所述全局事务对应的回滚日志,其中,所述回滚日志根据每个子事务的操作信息生成。
9.根据权利要求8所述的方法,其特征在于,所述根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,具体包括:
根据接收到的多个子事务的信息,确定所述多个子事务中每个子事务对应的正向操作接口和逆向操作接口;
给所述正向操作接口添加正向操作注解,以及给所述逆向操作接口添加逆向操作注解;其中,所述注解包括子事务唯一标识;
其中,所述方法还包括:
接收所述服务端发送的全局事务对应的异常控制指令;
根据所述异常控制指令,调用每个子事务的逆向操作接口执行回滚操作。
10.一种全局事务处理系统,其特征在于,包括:客户端和服务端,其中:
所述客户端,用于根据接收到的多个子事务的信息,分别为所述多个子事务添加注解,其中,所述多个子事务中的至少两个子事务由不同服务系统触发;基于所述多个子事务的注解,向服务端发送注册请求;确定并分别向所述服务端提交所述多个子事务中每个子事务的操作信息;
所述服务端,用于接收所述注册请求,确定与所述多个子事务对应的全局事务;基于接收到的所述多个子事务的操作信息,确定所述全局事务对应的回滚日志;根据所述全局事务对应的回滚日志,执行全局事务控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932006.2A CN113849278A (zh) | 2021-08-13 | 2021-08-13 | 全局事务处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932006.2A CN113849278A (zh) | 2021-08-13 | 2021-08-13 | 全局事务处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849278A true CN113849278A (zh) | 2021-12-28 |
Family
ID=78975432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110932006.2A Pending CN113849278A (zh) | 2021-08-13 | 2021-08-13 | 全局事务处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849278A (zh) |
-
2021
- 2021-08-13 CN CN202110932006.2A patent/CN113849278A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210203751A1 (en) | Methods, systems, and devices for electronic note identifier allocation and electronic note generation | |
CN109951331B (zh) | 用于发送信息的方法、装置和计算集群 | |
US9417906B2 (en) | Transaction participant registration with caveats | |
CN112835688A (zh) | 分布式事务处理方法、设备及存储介质 | |
CN110888718A (zh) | 分布式事务的实现方法及装置 | |
CN111475583B (zh) | 事务处理方法及装置 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
TWI771616B (zh) | 支付防抖方法及裝置 | |
CN114253673A (zh) | 一种分布式系统的事务处理方法和事务处理装置 | |
CN111414266B (zh) | 一种分布式事务的同步异步通信方法和装置 | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN107038025B (zh) | 基于soa架构的系统调用方法及装置 | |
CN111415146A (zh) | 资源数据的处理方法、装置及设备 | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN115098528B (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
CN113849278A (zh) | 全局事务处理方法及系统 | |
US11500857B2 (en) | Asynchronous remote calls with undo data structures | |
CN112162988A (zh) | 一种分布式事务的处理方法、装置和电子设备 | |
CN114356888A (zh) | 事务处理方法及装置、存储介质及电子设备 | |
CN114039981A (zh) | 一种消息处理方法、装置、服务器及存储介质 | |
CN114896258B (zh) | 事务数据的同步方法、装置、计算机设备及存储介质 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
CN114116141A (zh) | 分布式系统的事务处理方法和装置、存储介质和电子装置 | |
CN106375354B (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 |