CN117971401A - 一种分布式事务处理方法、装置、电子设备及存储介质 - Google Patents

一种分布式事务处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117971401A
CN117971401A CN202410082955.XA CN202410082955A CN117971401A CN 117971401 A CN117971401 A CN 117971401A CN 202410082955 A CN202410082955 A CN 202410082955A CN 117971401 A CN117971401 A CN 117971401A
Authority
CN
China
Prior art keywords
transaction
value
key
modified
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410082955.XA
Other languages
English (en)
Inventor
郭宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing IQIYI Science and Technology Co Ltd
Original Assignee
Beijing IQIYI Science and Technology Co 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 Beijing IQIYI Science and Technology Co Ltd filed Critical Beijing IQIYI Science and Technology Co Ltd
Priority to CN202410082955.XA priority Critical patent/CN117971401A/zh
Publication of CN117971401A publication Critical patent/CN117971401A/zh
Pending legal-status Critical Current

Links

Abstract

本发明实施例提供了一种分布式事务处理方法、装置、电子设备及存储介质,涉及分布式事务技术领域,方法包括:当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁;将待修改键当前的值记录在第一预设键中,在第二预设键中记录针对待修改键的修改后的值;在对本地事务进行注册后,将待修改键的值修改为第二预设键中记录的值;当接收到的操作指令表示数据更新,则删除第一预设键的值以及第二预设键的值,并释放锁;否则,将待修改键的值修改为第一预设键中记录的值、删除第一预设键的值以及第二预设键的值,并释放锁。针对服务节点的数据库原生不支持本地事务的ACID特性的情况,也能够保证各个服务节点之间的最终数据的一致性。

Description

一种分布式事务处理方法、装置、电子设备及存储介质
技术领域
本发明涉及分布式事务技术领域,特别是涉及一种分布式事务处理方法、装置、电子设备及存储介质。
背景技术
随着业务需求和网络架构的变化,越来越多的业务需要依赖于分布式系统中不同服务节点的交互实现,不同的服务节点可以提供不同的微服务。
相关技术中,各个服务节点的数据库均为原生支持本地事务ACID(Atom icity-Consistency-Isolation-Durability,不可分割性-一致性-隔离性-持久性)特性,例如,Mysql数据库。相应的,针对一个业务请求,可以开启该业务请求对应的全局事务,该全局事务可以包含各个服务节点的本地事务,各个服务节点之间最终数据的一致性可以通过各数据库本地事务的ACID特性实现。
然而,针对服务节点的数据库原生不支持本地事务的ACID特性情况,如何实现各个服务节点之间的最终数据的一致性成为亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种分布式事务处理方法、装置、电子设备及存储介质,针对服务节点的数据库原生不支持本地事务的ACID特性的情况,也能够保证各个服务节点之间的最终数据的一致性。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种分布式事务处理方法,所述方法应用于第一服务节点,所述方法包括:
当接收到携带有全局事务的事务标识(XID,Transaction Identifier)的第一消息时,获取本地数据库的锁;
将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
可选地,在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
在成功将所述待修改键的值修改为所述第二预设键中记录的值的情况下,向参与所述全局事务的第二服务节点发送携带有所述事务标识,以及表示所述全局事务所需执行的数据修改操作的参数的远程调用请求。
可选地,所述第一服务节点为开启所述全局事务的节点;
在当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁之前,所述方法还包括:
接收用于对至少一个服务节点的本地数据库进行数据修改的业务请求;其中,所述业务请求中携带有表示所述全局事务所需执行的数据修改操作的参数;
向所述事务协调节点发送针对所述业务请求的全局事务开启请求;
接收所述事务协调节点发送的携带有所述事务标识的第一消息。
可选地,所述方法还包括:
当接收到所述第二服务节点发送的远程调用响应时,根据所述远程调用响应表征的所述第二服务节点的本地事务的执行结果,向所述事务协调节点发送针对所述全局事务的处理请求。
可选地,在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
在未成功将所述待修改键的值修改为所述第二预设键中记录的值情况下,向所述事务协调节点发送表征对所述全局事务进行数据回滚的处理请求。
可选地,所述第一服务节点为:参与所述全局事务的所有服务节点中,除开启所述全局事务的节点外的节点;所述第一消息为:调用所述第一服务节点的第三服务节点发送的远程调用请求;
在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
向所述第三服务节点发送表征所述第一服务节点的本地事务的执行结果的远程调用响应。
可选地,所述第一服务节点部署有分布式事务中间件中用于执行本地事务的组件;
在获取本地数据库的锁之前,所述方法还包括:
检测本地配置的数据库的数据库类型,以及分布式事务中间件的分布式事务中间件类型;
对适用于检测到的数据库类型和分布式事务中间件类型的类进行实例化,并注册到本地的服务。
在本发明实施的第二方面,还提供了一种分布式事务处理装置,所述装置应用于第一服务节点,所述装置包括:
获取模块,用于当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁;
记录模块,用于将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
修改模块,用于在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
处理模块,用于当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
可选地,所述装置还包括:
第一调用模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,在成功将所述待修改键的值修改为所述第二预设键中记录的值的情况下,向参与所述全局事务的第二服务节点发送携带有所述事务标识,以及表示所述全局事务所需执行的数据修改操作的参数的远程调用请求。
可选地,所述第一服务节点为开启所述全局事务的节点;所述装置还包括:
第一接收模块,用于在当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁之前,接收用于对至少一个服务节点的本地数据库进行数据修改的业务请求;其中,所述业务请求中携带有表示所述全局事务所需执行的数据修改操作的参数;
第一请求模块,用于向所述事务协调节点发送针对所述业务请求的全局事务开启请求;
第二接收模块,用于接收所述事务协调节点发送的携带有所述事务标识的第一消息。
可选地,所述装置还包括:
第二请求模块,用于当接收到所述第二服务节点发送的远程调用响应时,根据所述远程调用响应表征的所述第二服务节点的本地事务的执行结果,向所述事务协调节点发送针对所述全局事务的处理请求。
可选地,所述装置还包括:
第三请求模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,在未成功将所述待修改键的值修改为所述第二预设键中记录的值情况下,向所述事务协调节点发送表征对所述全局事务进行数据回滚的处理请求。
可选地,所述第一服务节点为:参与所述全局事务的所有服务节点中,除开启所述全局事务的节点外的节点;所述第一消息为:调用所述第一服务节点的第三服务节点发送的远程调用请求;所述装置还包括:
第二调用模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,向所述第三服务节点发送表征所述第一服务节点的本地事务的执行结果的远程调用响应。
可选地,所述第一服务节点部署有分布式事务中间件中用于执行本地事务的组件;所述装置还包括:
检测模块,用于在获取本地数据库的锁之前,检测本地配置的数据库的数据库类型,以及分布式事务中间件的分布式事务中间件类型;
注册模块,用于对适用于检测到的数据库类型和分布式事务中间件类型的类进行实例化,并注册到本地的服务。
在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的分布式事务处理方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的分布式事务处理方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的分布式事务处理方法。
本发明实施例提供的分布式事务处理方法应用于第一服务节点,当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁;将全局事务包含的本地事务在本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录本地事务针对待修改键的修改后的值;在向事务协调节点对本地事务进行注册后,将待修改键的值修改为第二预设键中记录的值;当接收到事务协调节点发送的针对全局事务的操作指令时,若操作指令表示进行数据更新,则删除第一预设键的值以及第二预设键的值,并释放锁;若操作指令表示进行数据回滚,将待修改键的值修改为第一预设键中记录的值、删除第一预设键的值以及第二预设键的值,并释放锁;其中,操作指令为:事务协调节点在接收到开启全局事务的服务节点发送的针对全局事务的处理请求时,向参与全局事务的服务节点发送的。
基于上述处理,各服务节点可以在本地记录待修改键的修改前的值,并按照修改后的值对待修改键的值进行修改。后续,各服务节点可以根据事务协调节点发送的操作指令统一进行处理,若需要对全局事务进行数据更新,则可以直接删除第一预设键和第二预设键,即,各服务节点可以完成本地的待修改键的值的修改;反之,若需要对全局事务进行数据回滚,则基于记录的待修改键的修改前的值,对待修改键的值进行还原。如此,能够实现各服务节点的本地事务的统一数据更新或者统一数据回滚,也就是说,针对服务节点的数据库原生不支持本地事务的ACID特性情况,基于上述方式,也能够实现各个服务节点之间的最终数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中提供的一种分布式事务处理方法的流程图;
图2为本发明实施例中提供的另一种分布式事务处理方法的流程图;
图3为本发明实施例中提供的另一种分布式事务处理方法的流程图;
图4为本发明实施例中提供的一种分布式事务处理方法所涉及的系统框架图;
图5为本发明实施例中提供的一种分布式事务处理方法的交互示意图;
图6为本发明实施例中提供的一种分布式事务处理装置的结构图;
图7为本发明实施例中提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
相关技术中,各个服务节点的数据库均为原生支持本地事务ACID特性,相应的,针对一个业务请求,可以开启该业务请求对应的全局事务,该全局事务可以包含各个服务节点的本地事务,各个服务节点之间最终数据的一致性可以通过各数据库本地事务的ACID特性实现。然而,针对服务节点的数据库原生不支持本地事务的ACID特性情况,如何实现各个服务节点之间的最终数据的一致性成为亟待解决的问题。
为了解决上述问题,本发明实施例提供了一种分布式事务处理方法,该方法可以应用于第一服务节点。其中,第一服务节点可以为分布式系统包含的多个服务节点中的任一服务节点,例如,每一服务节点用于提供整个业务服务中的一项微服务。
参见图1,图1为本发明实施例中提供的一种分布式事务处理方法的流程图,该方法可以包括以下步骤:
S101:当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁。
S102:将全局事务包含的本地事务在本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录本地事务针对待修改键的修改后的值。
S103:在向事务协调节点对本地事务进行注册后,将待修改键的值修改为第二预设键中记录的值。
S104:当接收到事务协调节点发送的针对全局事务的操作指令时,若操作指令表示进行数据更新,则删除第一预设键的值以及第二预设键的值,并释放锁;若操作指令表示进行数据回滚,将待修改键的值修改为第一预设键中记录的值、删除第一预设键的值以及第二预设键的值,并释放锁。
其中,操作指令为:事务协调节点在接收到开启全局事务的服务节点发送的针对全局事务的处理请求时,向参与全局事务的服务节点发送的。
基于本发明实施例提供的分布式事务处理方法,各服务节点可以在本地记录待修改键的修改前的值,并按照修改后的值对待修改键的值进行修改。后续,各服务节点可以根据事务协调节点发送的操作指令统一进行处理,若需要对全局事务进行数据更新,则可以直接删除第一预设键和第二预设键,即,各服务节点可以完成本地的待修改键的值的修改;反之,若需要对全局事务进行回滚,则基于记录的待修改键的修改前的值,对待修改键的值进行还原。如此,能够实现各服务节点的本地事务的统一数据更新或者统一数据回滚,也就是说,针对服务节点的数据库原生不支持本地事务的ACID特性情况,基于上述方式,也能够实现各个服务节点之间的最终数据的一致性。
针对步骤S101,当接收到携带有全局事务的事务标识(可以称为全局事务标识)的第一消息时,表明此时第一服务节点可以执行该全局事务针对本地数据库的修改,即,执行该全局事务包含的本地事务。第一服务节点的本地数据库可以为原生不支持本地事务ACID特性的数据库。即,NoSQL(非关系型的数据库),例如,Redis(Remote Dictionary Server,即远程字典服务)数据库、MongoDB(一个基于分布式文件存储的数据库)或者CouchDB(一个开源的面向文档的数据库管理系统)。
可以理解的是,为了保证本地数据库的数据一致性,第一服务节点可以在对本地数据库进行修改之前,先获取本地数据库的锁。例如,若本地数据库为Redis数据库,则可以基于Redis数据库的分布式锁的获取机制来获取本地数据库的锁。
另外,在该分布式系统中,存在一个服务节点用于开始该全局事务,该服务节点在本申请中也可以称为开启节点。相应的,在第一服务节点为开启节点和非开启节点的两种情况下,其获取第一消息的方式不同,具体的,将在后续实施例中详细介绍。
针对该分布式系统中的每一服务节点,该服务节点可以基于分布式事务中间件包含的组件来实现本发明实施例提供的方法。
目前一些开源的分布式事务中间件,如seata(Simple Extensible AutonomousTransaction Architecture,简易可扩展的自治式分布式事务管理框架)、fescar(Fast&Easy Commit And RollBack,快速&简单提交和回滚)等,提供了如非入侵试(AT)、自定义(TCC)等不同模式下的分布式事务组件。目前常见分布式事务中间件的组件包括:.Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交(Commit)或回滚(RollBack。Transaction Manager(TM):事务管理器,控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。Resource Manager(RM):资源管理器,控制分支事务(即本地事务),负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支事务的提交和回滚。
例如,该分布式系统中的每一服务节点中可以部署有TM和RM,相应的,事务协调节点中可以部署有TC。
针对步骤S102,待修改键也就是本地数据库中当前需要修改值(Value)的键(Key)。
在获取本地数据库的锁后,第一服务节点可以开启该全局事务针对本地数据库的本地事务。即,第一服务节点可以在本地数据库中生成两个键,即,第一预设键和第二预设键,并在第二预设键中记录修改键的修改后的值,使得后续可以根据第二预设键中记录的值对待修改键的值进行修改。且可以将待修改键当前的值记录在第一预设键中,使得后续可以根据第一预设键中记录的值对待修改键的值进行数据回滚。
针对步骤S103,可以理解的是,第一服务节点在执行步骤S101-102时可能成功,也可能失败。
若成功,则第一服务节点可以对本地事务进行注册。例如,第一服务节点可以通过RM向事务协调节点发送携带有全局事务标识的注册请求。相应的,事务协调节点可以为第一服务节点的本地事务分配事务标识(可以称为本地事务标识),记录该本地事务标识与全局事务标识关联,并向第一服务节点发送分配的本地事务标识。
第一服务节点在接收到事务协调节点发送的本地事务标识后,也可以记录该本地事务标识与全局事务标识关联。且此时表明本地事务注册成功,则第一服务节点可以将待修改键的值修改为第二预设键中记录的值,即,执行本地事务的修改操作。
针对步骤S104,开启节点在所有参与全局事务的服务节点均执行本地事务的修改操作后,可以向事务协调节点发送针对全局事务的处理请求。例如,该处理请求可以是请求提交全局事务,即,进行数据更新,也可以是请求对全局事务进行回滚,即,进行数据回滚。
相应的,事务协调节点则可以向参与全局事务的每一服务节点发送对应的操作指令。例如,事务协调节点可以通过TC向每一服务节点中的RM发送对应的操作指令。
具体的,针对每一服务节点,事务协调节点可以向该服务节点发送的操作指令中可以携带有全局事务标识,或者,也可以携带有该服务节点的本地事务的本地事务标识,或者,也可以同时携带有全局事务标识以及该服务节点的本地事务的本地事务标识。
上述过程中,开启节点可以根据各服务节点的本地事务的执行结果,确定对全局事务进行数据更新或进行数据回滚。例如,当所有服务节点的本地事务均执行成功,且业务层反馈的针对该全局事务的结果也表明该全局事务可提交,则开启节点可以向事务协调节点发送表征对全局事务进行数据更新的处理请求。例如,当存在至少一个服务节点的本地事务执行失败时,开启节点可以向事务协调节点发送表征对全局事务进行数据回滚的处理请求。
在一个实施例中,参见图2,在步骤S103之后,该方法还可以包括以下步骤:
S105:在成功将待修改键的值修改为第二预设键中记录的值的情况下,向参与全局事务的第二服务节点发送携带有事务标识,以及表示全局事务所需执行的数据修改操作的参数的远程调用请求。
在本发明实施例中,第一服务节点在将待修改键的值修改为第二预设键中记录的值时可能成功,也可能失败。
若成功,表明本地事务执行成功,则第一服务节点还可以调用其他服务节点,以参与全局事务。其中,第二服务节点可以为多个,也可以为一个,具体的,若第一服务节点为开启节点,则可以根据当前接收到的业务请求确定第二服务节点,即,业务请求中携带有表示全局事务所需执行的数据修改操作的参数,根据其中的参数可以确定第二服务节点;若第一服务节点为非开启节点,即其他节点会向第一服务节点发送远程调用请求,则第一服务节点可以根据该远程调用请求中携带的表示全局事务所需执行的数据修改操作的参数,确定第二服务节点。
可以理解的是,若第一服务节点为开启节点,还可以根据业务请求中的参数,确定本地事务在本地数据库中所需修改的待修改键,以及针对待修改键的修改后的值;若第一服务节点为非开启节点,即其他节点会向第一服务节点发送远程调用请求,则第一服务节点还可以根据该远程调用请求中的参数,确定本地事务在本地数据库中所需修改的待修改键,以及针对待修改键的修改后的值。
基于上述处理,通过服务节点之间的远程调用,能够在各服务节点分别执行全局事务包含的各本地事务,保证全局事务的完成,且保证各服务节点的最终数据的一致性。
可以理解的是,针对分布式系统中的开启节点和非开启节点,各自执行的处理之间存在差异。
在一个实施例中,如果第一服务节点为开启全局事务的节点(即开启节点),相应的,在步骤S101之前,该方法还可以包括以下步骤:
步骤1:接收用于对至少一个服务节点的本地数据库进行数据修改的业务请求。
其中,业务请求中携带有表示全局事务所需执行的数据修改操作的参数。
步骤2:向事务协调节点发送针对业务请求的全局事务开启请求。
步骤3:接收事务协调节点发送的携带有事务标识的第一消息。
在本发明实施例中,第一服务节点接收到的业务请求可以为客户端发送的,例如,第一服务节点用于提供订单业务,当用户通过客户端下单时可以触发业务请求,第一服务节点则可以接收到该业务请求,以对订单数据进行更新。或者,第一服务节点接收到的业务请求也可以为其他服务节点发送的,例如,第一服务节点用于提供账户业务,当用户通过客户端下单时,负责订单业务的服务节点可以接收到业务请求,并向第一服务节点转发该业务请求,相应的,第一服务节点可以根据业务请求对账户数据进行更新。
当第一服务节点接收到业务请求时,若业务请求中携带的参数表征需要对多个服务节点的本地数据库进行数据修改,即,该业务请求需要跨不同的服务节点来实现,则第一服务节点可以申请开启针对该业务请求的全局事务。例如,第一服务节点可以向事务协调节点发送针对业务请求的全局事务开启请求,相应的,事务协调节点可以为该全局事务分配事务标识。
例如,第一服务节点可以通过TM向事务协调节点中的TC发送全局事务开启请求,相应的,事务协调节点中的TC第一服务节点中的TM返回全局事务标识。
在一个实施例中,针对第一服务节点为开启节点的情况,该方法还可以包括以下步骤:
当接收到第二服务节点发送的远程调用响应时,根据远程调用响应表征的第二服务节点的本地事务的执行结果,向事务协调节点发送针对全局事务的处理请求。
在本发明实施例中,第一服务节点在向第二服务节点发送远程调用请求后,第二服务节点也就可以按照与上述步骤S101-S104类似的步骤进行处理,以执行本地事务。
可以理解的是,第二服务节点执行本地事务的执行结果可以为成功或者失败,也就是说,不论本地事务的执行结果为成功或者失败,第二服务节点均向第一服务节点返回远程调用响应,且该远程调用响应能够体现该执行结果。
相应的,若第二服务节点返回的远程调用响应均表示执行结果为成功,且业务层反馈的针对该全局事务的结果也表明该全局事务可提交,则第一服务节点可以向事务协调节点发送表征对全局事务进行数据更新的处理请求。若存在至少一个服务节点返回的远程调用响应表示执行结果为失败,则第一服务节点可以向事务协调节点发送表征对全局事务进行数据回滚的处理请求。
基于上述处理,通过开启节点能够在各服务节点的本地事务均执行成功时请求全局事务的提交,以及在存在服务节点的本地事务执行失败时请求全局事务的回滚,也就能够保证各服务节点最终数据的一致性。
在一个实施例中,针对第一服务节点为开启节点的情况,该方法还可以包括以下步骤:
在未成功将待修改键的值修改为第二预设键中记录的值情况下,向事务协调节点发送表征对全局事务进行回滚的处理请求。
在本发明实施例中,由于第一服务节点在执行本地事务时也可能失败,即,未成功将待修改键的值修改为第二预设键中记录的值,此时,第一服务节点则无需调用其他服务节点,可以直接向事务协调节点发送表征对全局事务进行回滚的处理请求。可以理解的是,该情况下只有第一服务节点对本地事务进行回滚。
基于上述处理,能够及时对全局事务进行回滚,提高业务效率。
在一个实施例中,若第一服务节点为:参与全局事务的所有服务节点中,除开启节点外的节点,相应的,第一消息为调用第一服务节点的第三服务节点发送的远程调用请求。且在S103之后,该方法还包括:
向第三服务节点发送表征第一服务节点的本地事务的执行结果的远程调用响应。
在本发明实施例中,若第一服务节点为非开启节点,则第一服务节点接收到的第一消息也就是其他服务节点发送的远程调用请求。可以理解的是,第三服务节点可以为开启节点,也可以为非开启节点。如上述介绍,此处的远程调用响应可以表示成功或者失败。
基于上述处理,能够实现跨服务节点的业务请求的处理,且保证各服务节点最终数据的一致性。
在一个实施例中,第一服务节点部署有分布式事务中间件中用于执行本地事务的组件,具体的,可以参考上述实施例中的相关介绍。相应的,参见图3,在图1的基础上,在上述步骤S101之前,方法还可以包括:
S106:检测本地配置的数据库的数据库类型,以及分布式事务中间件的分布式事务中间件类型。
S107:对适用于检测到的数据库类型和分布式事务中间件类型的类进行实例化,并注册到本地的服务。
在本发明实施例中,不同的服务节点的本地配置可以不同,例如,可以配置不同的分布式事务中间件,且可以配置不同的数据库。
相应的,在第一服务节点的服务上线后,可以对本地配置的分布式事务中间件进行检测,且可以对本地配置的数据库进行检测,也就可以确定出本地配置的具体分布式事务中间件类型和数据库类型。如,第一服务节点可以根据本地的数据库程序包和分布式事务中间件程序包进行检测。
进而,第一服务节点可以获取确定出的数据库类型对应的类,以及分布式事务中间件类型对应的类,以对获取到的类进行实例化,并注册到本地的服务中,使得后续可以基于这些类中定义的内容执行上述实施例中的步骤。
可以理解的是,第一服务节点中可以记录有不同的数据库类型对应的类,以及不同的分布式事务中间件类型对应的类,这些类可以为技术人员根据数据库类型和分布式事务中间件类型预先写入第一服务节点的。
例如,可以通过继承分布式事务中间件提供的原始接口,实现自定义接口,这些自定义接口的类同样提供Prepare(准备)方法、Commit方法,以及RollBack方法。
其中,Prepare(准备)方法,该方法用于实现上述步骤S101-102。
Commit方法,该方法用于实现上述步骤S103,以及删除第一预设键的值以及第二预设键的值,并释放锁。在事务协调节点侧,可以实现通知各服务节点对相同的全局事务标识的本地事务进行数据更新。
RollBack方法,该方法将待修改键的值修改为第一预设键中记录的值、删除第一预设键的值以及第二预设键的值,并释放锁。在事务协调节点侧,可以实现通知各服务节点对相同的全局事务标识的本地事务进行回滚。
具体的,可以通过插件、Hook(钩子)、或继承等方式,重写原有的写入数据库的方法,以对数据库的原有SDK(Software Development Kit,软件开发工具包)的类进行扩展,也就可以通过扩展后的类调用上述的Prepare方法、Commit方法和RollBack方法。
另外,还可以设计注解@NosqlDistributionTransactional(非关系型数据库分布式事务)到需要开启全局事务的方法上,进而,若服务节点中当前线程发现启用了分布式事务,则在写入数据库时,调用上述Prepare方法,在方法执行结束时,由上述注解对应的AOP(Aspect Oriented Programming,面向切面编程)代码,执行上述Commit方法,以及在方法抛出异常时,执行上述RollBack方法。
可以理解的是,在本发明实施例中,针对分布式系统中的任一服务节点,若该服务节点本地的数据库原生支持本地事务的ACID特性,则可以基于该数据库本地事务的ACID特性,实现与其他数据库的最终数据的一致性。
基于上述处理,使得分布式系统能够支持多种不同的分布式事务中间件,且可以同时支持关系型数据库和非关系型数据库,且能够保证在执行全局事务时各服务节点最终数据的一致性。
参见图4,图4为本发明实施例中提供的一种分布式事务处理方法所涉及的系统框架图,包括:应用层、混合分布式事务SDK层、分布式事务中间件引擎层,以及支持层
其中,应用层包含服务节点处理业务请求的业务代码。混合分布式事务SDK层包含预先配置类,包含为支持层中不同的数据库(数据库1、数据库2、数据库3等)适配的类,以及为分布式事务中间件引擎层中不同的分布式事务中间件(分布式事务中间件A、分布式事务中间件B、分布式事务中间件C等)适配的类。通过为不同的分布式事务中间件适配的类可以实现对分布式事务中间件引擎层中不同分布式事务中间件的支持;通过为不同的数据库适配的类可以实现对支持层中不同数据库的支持。支持层的数据库可以包含:Hbase(一个分布式的、面向列的开源数据库)、Mysql数据库、TiDB(一种开源分布式关系型数据库)、Redis数据库、CouchDB以及Hikv数据库。
参见图5,图5为本发明实施例中提供的一种分布式事务处理方法的交互示意图,图5中,微服务1和微服务2分别为不同服务节点中提供的微服务,图5中仅以两个服务节点为例进行说明,实际场景并不限于此。微服务1所在的节点可以称为服务节点1,也就是开启节点,微服务2所在的节点可以称为服务节点2。TC所在的节点也就是事务协调节点。方法包括以下步骤:
S501:在接收到用于对至少一个服务节点的本地数据库进行数据修改的业务请求时,服务节点1向事务协调节点发送针对业务请求的全局事务开启请求。
相应的,事务协调节点可以向服务节点1返回全局事务的事务标识。
S502:服务节点1开启本地事务,即,获取本地数据库的锁,将本地事务所需修改的待修改键当前的值记录在Key A(即第一预设键)中,并在Key B(即第二预设键)中记录本地事务待修改键的修改后的值。
S503:服务节点1向事务协调节点发送针对本地事务的注册请求。
相应的,事务协调节点可以向服务节点1返回本地事务的事务标识。
S504:服务节点1将待修改键的值修改为Key B中记录的值。
S505:服务节点1向事务协调节点上报本地事务的状态。
其中,本地事务的状态可以为成功或失败。
S506:服务节点1向服务节点2发送携带有全局事务的事务标识,以及表示全局事务所需执行的数据修改操作的参数的远程调用请求。
S507:服务节点2开启本地事务,即,获取本地数据库的锁,将本地事务所需修改的待修改键当前的值记录在Key C(即第一预设键)中,并在Key D(即第二预设键)中记录本地事务待修改键的修改后的值。
S508:服务节点2向事务协调节点发送针对本地事务的注册请求。
相应的,事务协调节点可以向服务节点2返回本地事务的事务标识。
S509:服务节点2将待修改键的值修改为Key D中记录的值。
S5010:服务节点2向事务协调节点上报本地事务的状态。
其中,本地事务的状态可以为成功或失败。
S5011:服务节点2向服务节点1发送表征服务节点2的本地事务的执行结果的远程调用响应。
S5012:服务节点1向事务协调节点发送针对全局事务的处理请求。
其中,处理请求表示对全局事务进行数据更新或数据回滚。
相应的,事务协调节点根据处理请求,向服务节点1和服务节点2发送针对该全局事务的操作指令。若操作指令表示进行数据更新,则服务节点1删除Key A的值以及Key B值,并释放锁;若操作指令表示进行数据回滚,服务节点1将待修改键的值修改为Key A中记录的值、删除Key A的值以及Key B值,并释放锁。同理,若操作指令表示进行数据更新,服务节点2删除Key C的值以及Key D值,并释放锁;若操作指令表示进行数据回滚,服务节点2将待修改键的值修改为Key C中记录的值、删除Key C的值以及Key D值,并释放锁。
基于相同的发明构思,本发明实施例中还提供了一种分布式事务处理装置,所述装置应用于第一服务节点,参见图6,所述装置包括:
获取模块601,用于当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁;
记录模块602,用于将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
修改模块603,用于在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
处理模块604,用于当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
可选地,所述装置还包括:
第一调用模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,在成功将所述待修改键的值修改为所述第二预设键中记录的值的情况下,向参与所述全局事务的第二服务节点发送携带有所述事务标识,以及表示所述全局事务所需执行的数据修改操作的参数的远程调用请求。
可选地,所述第一服务节点为开启所述全局事务的节点;所述装置还包括:
第一接收模块,用于在当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁之前,接收用于对至少一个服务节点的本地数据库进行数据修改的业务请求;其中,所述业务请求中携带有表示所述全局事务所需执行的数据修改操作的参数;
第一请求模块,用于向所述事务协调节点发送针对所述业务请求的全局事务开启请求;
第二接收模块,用于接收所述事务协调节点发送的携带有所述事务标识的第一消息。
可选地,所述装置还包括:
第二请求模块,用于当接收到所述第二服务节点发送的远程调用响应时,根据所述远程调用响应表征的所述第二服务节点的本地事务的执行结果,向所述事务协调节点发送针对所述全局事务的处理请求。
可选地,所述装置还包括:
第三请求模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,在未成功将所述待修改键的值修改为所述第二预设键中记录的值情况下,向所述事务协调节点发送表征对所述全局事务进行数据回滚的处理请求。
可选地,所述第一服务节点为:参与所述全局事务的所有服务节点中,除开启所述全局事务的节点外的节点;所述第一消息为:调用所述第一服务节点的第三服务节点发送的远程调用请求;所述装置还包括:
第二调用模块,用于在将所述待修改键的值修改为所述第二预设键中记录的值之后,向所述第三服务节点发送表征所述第一服务节点的本地事务的执行结果的远程调用响应。
可选地,所述第一服务节点部署有分布式事务中间件中用于执行本地事务的组件;所述装置还包括:
检测模块,用于在获取本地数据库的锁之前,检测本地配置的数据库的数据库类型,以及分布式事务中间件的分布式事务中间件类型;
注册模块,用于对适用于检测到的数据库类型和分布式事务中间件类型的类进行实例化,并注册到本地的服务。
基于本发明实施例提供的分布式事务处理装置,各服务节点可以在本地记录待修改键的修改前的值,并按照修改后的值对待修改键的值进行修改。后续,各服务节点可以根据事务协调节点发送的操作指令统一进行处理,若需要对全局事务进行数据更新,则可以直接删除第一预设键和第二预设键,即,各服务节点可以完成本地的待修改键的值的修改;反之,若需要对全局事务进行数据回滚,则基于记录的待修改键的修改前的值,对待修改键的值进行还原。如此,能够实现各服务节点的本地事务的统一数据更新或者统一数据回滚,也就是说,针对服务节点的数据库原生不支持本地事务的ACID特性情况,基于上述方式,也能够实现各个服务节点之间的最终数据的一致性。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁;
将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的分布式事务处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的分布式事务处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种分布式事务处理方法,其特征在于,所述方法应用于第一服务节点,所述方法包括:
当接收到携带有全局事务的事务标识XID的第一消息时,获取本地数据库的锁;
将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
2.根据权利要求1所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
在成功将所述待修改键的值修改为所述第二预设键中记录的值的情况下,向参与所述全局事务的第二服务节点发送携带有所述事务标识,以及表示所述全局事务所需执行的数据修改操作的参数的远程调用请求。
3.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为开启所述全局事务的节点;
在当接收到携带有全局事务的事务标识的第一消息时,获取本地数据库的锁之前,所述方法还包括:
接收用于对至少一个服务节点的本地数据库进行数据修改的业务请求;其中,所述业务请求中携带有表示所述全局事务所需执行的数据修改操作的参数;
向所述事务协调节点发送针对所述业务请求的全局事务开启请求;
接收所述事务协调节点发送的携带有所述事务标识的第一消息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当接收到所调用的第二服务节点发送的远程调用响应时,根据所述远程调用响应表征的所述第二服务节点的本地事务的执行结果,向所述事务协调节点发送针对所述全局事务的处理请求。
5.根据权利要求3所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
在未成功将所述待修改键的值修改为所述第二预设键中记录的值情况下,向所述事务协调节点发送表征对所述全局事务进行数据回滚的处理请求。
6.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为:参与所述全局事务的所有服务节点中,除开启所述全局事务的节点外的节点;所述第一消息为:调用所述第一服务节点的第三服务节点发送的远程调用请求;
在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
向所述第三服务节点发送表征所述第一服务节点的本地事务的执行结果的远程调用响应。
7.根据权利要求1所述的方法,其特征在于,所述第一服务节点部署有分布式事务中间件中用于执行本地事务的组件;
在获取本地数据库的锁之前,所述方法还包括:
检测本地配置的数据库的数据库类型,以及分布式事务中间件的分布式事务中间件类型;
对适用于检测到的数据库类型和分布式事务中间件类型的类进行实例化,并注册到本地的服务。
8.一种分布式事务处理装置,其特征在于,所述装置应用于第一服务节点,所述装置包括:
获取模块,用于当接收到携带有全局事务的事务标识XID的第一消息时,获取本地数据库的锁;
记录模块,用于将所述全局事务包含的本地事务在所述本地数据库中所需修改的待修改键当前的值记录在第一预设键中,并在第二预设键中记录所述本地事务针对所述待修改键的修改后的值;
修改模块,用于在向事务协调节点对所述本地事务进行注册后,将所述待修改键的值修改为所述第二预设键中记录的值;
处理模块,用于当接收到所述事务协调节点发送的针对所述全局事务的操作指令时,若所述操作指令表示进行数据更新,则删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;若所述操作指令表示进行数据回滚,将所述待修改键的值修改为所述第一预设键中记录的值、删除所述第一预设键的值以及所述第二预设键的值,并释放所述锁;
其中,所述操作指令为:所述事务协调节点在接收到开启所述全局事务的服务节点发送的针对所述全局事务的处理请求时,向参与所述全局事务的服务节点发送的。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202410082955.XA 2024-01-19 2024-01-19 一种分布式事务处理方法、装置、电子设备及存储介质 Pending CN117971401A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410082955.XA CN117971401A (zh) 2024-01-19 2024-01-19 一种分布式事务处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410082955.XA CN117971401A (zh) 2024-01-19 2024-01-19 一种分布式事务处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117971401A true CN117971401A (zh) 2024-05-03

Family

ID=90854280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410082955.XA Pending CN117971401A (zh) 2024-01-19 2024-01-19 一种分布式事务处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117971401A (zh)

Similar Documents

Publication Publication Date Title
US11620277B2 (en) Transaction processing at non-relational databases
CN111104392B (zh) 一种数据库迁移方法、装置、电子设备及存储介质
CN109062601A (zh) Mes系统客户端程序更新方法、装置、设备及介质
US11055078B2 (en) Systems and methods for deploying software products to environments
CN110888718A (zh) 分布式事务的实现方法及装置
CN112965936B (zh) 一种异构分布式模型的处理方法、装置、设备和存储介质
CN114328029B (zh) 一种应用资源的备份方法、装置、电子设备及存储介质
CN112613288B (zh) 结算单生成方法、装置、计算机设备和存储介质
CN110674153B (zh) 一种数据一致性检测方法、装置及电子设备
CN117971401A (zh) 一种分布式事务处理方法、装置、电子设备及存储介质
CN112765188B (zh) 配置信息处理方法、配置管理系统、电子设备及存储介质
CN116048609A (zh) 配置文件更新方法、装置、计算机设备和存储介质
CN112099879B (zh) 配置信息管理方法、装置、计算机设备及存储介质
CN114756293A (zh) 业务处理方法、装置、计算机设备和存储介质
CN114115933A (zh) 软件升级的方法、系统、装置、电子设备及介质
CN110971664B (zh) 一种接口服务管理系统
CN113867778A (zh) 一种镜像文件的生成方法、装置、电子设备及存储介质
CN111679812A (zh) 业务处理方法、装置、设备及计算机可读存储介质
US20200099788A1 (en) Context data management interface for contact center
US11762940B2 (en) Component level data management and state change detection in web applications for data loss protection
CN116028138B (zh) 应用发布方法及装置
CN117997745A (zh) 车辆软件的远程升级方法、装置、计算机设备和存储介质
CN116560977A (zh) 一种版本回归计划用例管理方法、电子设备及存储介质
CN112988190A (zh) 应用上线方法、装置、计算机设备和存储介质
CN112506590A (zh) 接口调用方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication