CN112995262B - 分布式事务提交方法、系统及计算设备 - Google Patents
分布式事务提交方法、系统及计算设备 Download PDFInfo
- Publication number
- CN112995262B CN112995262B CN201911308314.7A CN201911308314A CN112995262B CN 112995262 B CN112995262 B CN 112995262B CN 201911308314 A CN201911308314 A CN 201911308314A CN 112995262 B CN112995262 B CN 112995262B
- Authority
- CN
- China
- Prior art keywords
- module
- request
- transaction
- type
- participant
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (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示出了图2的步骤220的流程示意图;
图4示出了图2的步骤270的流程示意图;
图5示出了本发明另一实施例提供的分布式事务提交系统的结构示意图;
图6示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
在传统巨石应用架构下,架构特点主要为模型-视图-控制器(Model ViewController,MVC)模式,其所有功能集中在一个服务实例中,通过增加服务实例来扩展集群的处理能力,但数据持久化集中在一个数据库储存,数据一致性主要依靠传统数据库的本地事务机制保证。这种架构模式特点是简单、快捷,适用于业务规模不大、业务功能单一的场景。随着业务增长,业务模式和业务范围都在快速变化,巨石架构模式越来越不易于开发协调。因此,微服务架构模式应运而生。微服务,就是对服务进行垂直拆分,将一个整体服务拆分成功能相对的单元服务,各单元服务之间通过远程过程调用(Romote ProcedureCall)进行同步或异步调用。
在微服务架构模式下,各个服务单元各自有独立的数据持久层,一个业务请求需要多个微服务单元共同协作,要求各服务单元要么同时成功,要么同时失败,但微服务实例分别部署在不同的进程或主机节点上,每个服务实例的状态、网络等情况时不可预知的,因此,如何保持一个业务请求中分布式的各单元服务数据保持一致性成为微服务架构中一个关键的问题。
目前,分布式事务提交主要通过两阶段提交协议或三阶段提交协议实现。两阶段提交协议包括准备阶段和提交阶段。在准备阶段,由协调者向各个参与者发送准备消息,参与者收到消息后,要么返回失败,要么执行本地事务,但不提交事务,此时,本地事务资源为被锁定状态,其他服务或应用不能使用此资源;在提交阶段,协调者在接收到所有参与者的事务消息通知后,根据所有参与者在提交阶段返回的状态确定在提交阶段是回滚还是提交事务,只要有一个参与者超时或者失败,协调者就向所有参与者发送回滚请求,否则就向参与者发送提交请求。在两阶段提交协议中,当协调者向参与者发送提交请求之后,若发送局部网络异常,或者在发送提交请求过程中协调者发生故障,导致只有一部分参与者接收到提交请求,而这部分参与者将执行提交操作,而另一部分未接到提交请求的参与者则无法执行事务提交,从而产生数据不一致的问题。
三阶段提交协议包括决定段、准备段和提交段。在决定段,协调者向参与者发出准备消息,若所有参与者反馈正常执行,则进入准备段,否则进入提交段,协调者发出回滚命令;在准备段,协调者发送准备提交消息,参与者接收到准备提交消息后写入运行记录并回答确认消息;在提交段,协调者根据参与者回答的确认/中止消息,向参与者发送提交/回滚命令,参与者根据提交/回滚命令决定执行提交或回滚,完成事务的处理。在三阶段提交协议中,可能出现一部分参与者接收到回滚命令而执行回滚操作,而另一部分参与者没有及时接收到回滚命令,在等待超时后默认执行提交,从而产生数据不一致的问题。
基于此,本发明实施例提供一种分布式事务提交方法、装置及计算设备,能够提高数据的一致性。
具体地,下面结合附图,对本发明实施例作进一步阐述。
其中,应当理解的是,本发明提供的下述实施例之间,只要不冲突,均可相互结合以形成新的实施方式。
图1示出了本发明实施例提供的分布式事务提交系统的结构示意图。如图1所示,该系统10包括:协调者模块11、一致性模块12以及若干参与者模块13。协调者模块11与一致性模块12连接,协调者模块11还与分别与各个参与者模块13连接,若干参与者模块13与一致性模块12连接。
其中,协调者模块11可以为分布式事务协调器或事务管理器。协调者模块11可以与客户端连接,用于接收客户端的请求,从而向参与者模块13发送消息以控制参与者模块13执行事务操作。
其中,参与者模块13可以为事务管理器。参与者模块13用于对协调者模块11发送的消息进行处理,以执行相应的事务操作。参与者模块13的数量可以为一个或者多个。例如,当发了工资后,用户将当月工资x元从支付宝转到余额宝,则支付宝数据库和余额宝数据库为事务管理器,指示支付宝数据库和余额宝数据库执行相应操作的为事务协调器,若在支付宝账户中扣除x元后,余额宝账户并没有增加x元,则为数据不一致的情况。
其中,一致性模块12可以包括事务提交代理121、存储库122和重试控制器123。其中,事务提交代理121分别与协调者模块11、参与者模块13连接,事务提交代理121还与存储库122连接,重试控制器123分别与存储库122、参与者模块13连接。事务提交代理121用于提供协调者模块11、参与者模块13接口反馈的调用代理。存储库122用于储存协调者模块11、参与者模块13发送的消息。重试控制器123用于根据存储库122的内容控制参与者模块13的重新处理。
在本实施例中,协调者模块11用于接收参与者模块13发送的准备结果反馈信息,根据准备结果反馈信息,发送提交/中止请求;一致性模块12用于根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,返回全局事务标识至协调者模块11;参与者模块13用于接收协调者模块11发送的全局事务标识以及提交/中止请求,根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块12;一致性模块12还用于根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理。
本发明实施例通过增加一致性模块12,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够提高数据的一致性。
图2示出了本发明其中一实施例提供的分布式事务提交方法的流程示意图。该方法应用于图1中的分布式事务提交系统10。如图2所示,该方法包括:
步骤210、协调者模块接收参与者模块发送的准备结果反馈信息。
其中,准备结果反馈信息为确认响应信息或者否定响应信息,若参与者模块成功执行了事务操作,则参与者模块向协调者模块返回确认响应信息,若参与者模块未成功执行事务操作,则参与者模块向协调者模块返回否定响应信息。其中,确认响应信息可以为ACK响应信息,否定响应信息可以为NO响应信息。
步骤220、协调者模块根据准备结果反馈信息,发送提交/中止请求至一致性模块。
其中,提交/中止请求为提交请求或者中止请求。提交请求可以为doCommit请求,中止请求可以为abort请求。
具体地,如图3所述,步骤220可以包括:
步骤222、判断准备结果反馈信息中是否存在否定响应信息;
步骤224、若存在否定响应信息,则发送中止请求至一致性模块;
步骤225、若不存在否定响应信息,则发送提交请求至一致性模块。
例如,若协调者模块接收到的准备结果反馈信息中包括8个ACK响应信息和1个NO响应信息,则协调者模块确定准备结果反馈信息中存在否定响应信息,则协调者模块发送abort请求至一致性模块;若协调者模块接收到的准备结果反馈信息中包括9个ACK响应信息,则协调者模块确定准备结果反馈信息中不存在否定响应信息,则协调者模块发送doCommit请求至一致性模块。
在一些其他实施例中,如图3所述,步骤220还包括:
步骤221、判断是否接收到全部参与者模块发送的准备结果反馈信息;
步骤222、若是,则执行判断准备结果反馈信息中是否存在否定响应信息的步骤;
步骤223、若否,则发送中止请求至一致性模块。
其中,参与者模块可能未能正确返回准备结果反馈信息至协调者模块,未能正确返回准备结果反馈信息的情况可以包括:响应超时,或者返回其他不属于准备结果反馈信息的信息,即除了ACK响应信息和NO响应信息外的其他信息,等等。当参与者模块未能正确返回准备结果反馈信息时,协调者模块发送中止请求至一致性模块。例如,假设共有10个参与者模块,若8个参与者模块返回ACK响应信息至协调者模块,1个参与者模块返回NO响应信息至协调者模块,1个参与者响应超时,则协调者模块未接收到全部参与者模块发送的准备结果反馈信息,则协调者模块发送doCommit请求至一致性模块;若9个参与者模块返回ACK响应信息至协调者模块,1个参与者响应超时,则协调者模块发送doCommit请求至一致性模块。
步骤230、一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识。
其中,在一致性模块中,事务提交代理接收协调者模块发送的提交/中止请求,并根据提交/中止请求,确定请求类型,以及生成提交/中止请求的全局事务标识,并将提交/中止请求的报文信息、请求类型、全局事务标识储存到存储库中。
其中,根据提交/中止请求,记录请求类型,具体可以为:根据提交请求,记录请求类型为提交请求类型;或者根据中止请求,记录请求类型为中止请求类型。
其中,全局事务标识可以为包括数字和/或字母的序列,在一个事务提交过程中,生成唯一的全局事务标识。
步骤240、一致性模块返回全局事务标识至协调者模块。
其中,一致性模块通过事务提交代理返回全局事务标识至协调者模块。具体实施过程可以为:事务提交代理在生成提交/中止请求的全局事务标识后,返回全局事务标识至协调者模块,同时将全局事务标识储存到存储库中。
步骤250、协调者模块发送全局事务标识以及提交/中止请求至参与者模块。
其中,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,具体为,协调者模块发送全局事务标识以及提交/中止请求至各个参与者模块。
其中,若在步骤220中,协调者模快发送提交请求至一致性模块,且在步骤230中一致性模块生成了提交请求的全局事务标识,则在步骤250中协调者模块发送提交请求以及提交请求的全局事务标识至参与者模块;若在步骤220中,协调者模快发送中止请求至一致性模块,且在步骤230中一致性模块生成了中止请求的全局事务标识,则在步骤250中协调者模块发送中止请求以及中止请求的全局事务标识至参与者模块。
步骤260、参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块。
其中,参与者模块在发送准备结果反馈信息至协调者模块时开始计时,若计时时间超过预设时间阈值,参与者模块仍未接收到提交/中止请求,则参与者模块为超时状态。
具体地,步骤260包括:
步骤261、根据提交请求,进行事务提交处理,并记录事务处理类型为提交处理类型;或者
步骤262、根据中止请求,进行事务回滚处理,并记录事务处理类型为中止处理类型;或者
步骤263、根据超时状态,进行事务提交处理,并记录事务处理类型为提交处理类型。
在本实施例中,当参与者模块接收到协调者模块发送的提交请求以及提交请求的全局事务标识,则参与者模块进行事务提交处理,并记录事务处理类型为提交处理类型;当参与者模块接收到协调者模块发送的中止请求以及中止请求的全局事务标识,则参与者模块进行事务回滚处理,并记录事务处理类型为中止处理类型;当参与者模块在预设时间阈值内仍未接收到来自协调者模块的提交/中止请求,则参与者模块默认进行事务提交处理,并记录事务处理类型为提交处理类型。
其中,事务回滚处理是指参与者模块利用其在准备段记录的undo信息来执行事务的回滚操作,并在完成回滚之后释放所有的事务资源。
其中,将事务处理类型和全局事务标识返回至一致性模块,还包括:将事务处理类型、全局事务标识、服务地址信息返回至一致性模块。服务地址信息为参与者模块的地址信息。当事务提交代理接收到参与者模块发送的全局事务标识时,事务提交代理根据全局事务标识,查找存储库中的记录的相同的全局事务标识,并将参与者模块发送的事务处理类型、服务地址信息更新到存储库中。
步骤270、一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理。
其中,数据不一致的参与者模块是指根据超时状态进行事务提交处理的参与者模块。
具体地,如图4所示,步骤270包括:
步骤271、确定同一全局事务标识对应的事务处理类型和请求类型;
步骤272、若事务处理类型与请求类型的类型不一致,则确定发送不一致的事务处理类型的参与者模块为数据不一致的参与者模块;
步骤273、确定数据不一致的参与者模块的地址信息;
步骤274、根据地址信息,向数据不一致的参与者模块重新发送提交/中止请求,以使数据不一致的参与者模块根据提交/中止请求,重新进行事务处理。
其中,同一全局事务标识是指相同的全局事务标识,一般地,在同一事物提交过程中,一致性模块根据协调者模块发送的请求生成的全局事务标识与参与者模块发送的全局事务标识相同。确定同一全局事务标识对应的事务处理类型和请求类型,具体可以为:重试控制器在存储库中获取全局事务标识对应的事务处理类型和请求类型。
其中,事务处理类型包括提交处理类型和中止处理类型,请求类型包括提交请求类型和中止请求类型,若同一全局事务标识对应的事务处理类型为提交处理类型(或中止处理类型),请求类型为提交请求类型(或中止请求类型),则事务处理类型与请求类型的类型一致;若同一全局事务标识对应的事务处理类型为提交处理类型(或中止处理类型),请求类型为中止请求类型(或提交请求类型),则事务处理类型与请求类型的类型不一致。例如,假设共有10个参与者模块,若1个参与者模块超时进行事务提交(即事务处理类型为提交处理类型),而其他9个参与者模块根据中止请求进行事务回滚(即事务处理类型为中止处理类型),存储库中记录的请求类型为中止请求类型,则该发送提交处理类型的参与者模块为数据不一致的参与者模块。
其中,确定数据不一致的参与者模块的地址信息,具体可以为:重试控制器根据全局事务标识,在存储库中获取对应的参与者模块发送的服务地址信息,从而确定数据不一致的参与者模块的地址信息。
其中,根据地址信息,向数据不一致的参与者模块重新发送提交/中止请求,以使数据不一致的参与者模块根据提交/中止请求,重新进行事务处理,具体可以为:当请求类型为中止请求类型时,重试控制器向数据不一致的参与者模块的地址重新发送中止请求,以使数据不一致的参与者模块根据中止请求,进行事务回滚处理,并在完成事务回滚处理后,向协调者模块发送确认响应信息。
在一些实施例中,在步骤210之前,该方法还包括:
步骤201、协调者模块发送事务询问请求至参与者模块;
步骤202、参与者模块根据事务询问请求,返回确认执行信息至协调者模块;
步骤203、协调者模块接收到确认执行信息后,发送预提交请求至参与者模块;
步骤204、参与者模块根据预提交请求,执行事务操作,并返回准备结果反馈信息至协调者模块。
例如,协调者模块发送CanCommit请求(事务询问请求)至参与者模块,询问是否可以执行事务提交操作,参与者模块在接到CanCommit请求后,如果其自身认为可以顺利执行事务,则返回Yes响应信息(确认执行信息);协调者模块接收到全部参与者发送的Yes响应信息,则发送PreCommit请求(预提交请求)至参与者模块,参与者模块接收到PreCommit请求后,执行事务操作,并将undo和redo信息记录到事务日志中,若参与者模块成功地执行了事务操作,则返回ACK响应信息(即确认响应信息)至协调者模块,若参与者模块不能成功地执行了事务操作,则返回NO响应信息(即否定响应信息)至协调者模块。
本发明实施例通过协调者模块接收参与者模块发送的准备结果反馈信息,协调者模块根据准备结果反馈信息,发送提交/中止请求至所述一致性模块,一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,一致性模块返回全局事务标识至协调者模块,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块,一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理,引入一致性模块进行事前采集请求、事中记录提交结果、事后补偿重试,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够使超时提交的部分参与者重新进行处理,从而提高数据的一致性。
图5示出了本发明另一实施例提供的分布式事务提交方法的流程示意图。该方法应用于图1中的分布式事务提交系统10。如图5所示,该方法包括:
步骤301、协调者模块发送CanCommit请求至第一参与者模块和第二参与者模块;
步骤302、第一参与者模块和第二参与者模块在接到CanCommit请求后,均返回Yes响应信息至协调者模块;
步骤303、协调者模块发送PreCommit请求至第一参与者模块和第二参与者模块;
步骤304、第一参与者模块接收到PreCommit请求后,返回ACK响应信息至协调者模块,第二参与者模块接收到PreCommit请求后,返回NO响应信息至协调者模块,以使协调者模块接收第一参与者模块发送的ACK响应信息,并接收第二参与者模块发送的NO响应信息;
步骤305、协调者模块发送abort请求至一致性模块;
步骤306、一致性模块根据abort请求,记录请求类型为中止请求类型,并生成abort请求的全局事务标识aaxxxxbbcc;
步骤307、一致性模块返回全局事务标识aaxxxxbbcc至协调者模块;
步骤308、协调者模块分别发送全局事务标识aaxxxxbbcc以及abort请求至第一参与者模块和第二参与者模块;
步骤309、第一参与者模块在预设时间阈值内未接收到abort请求,进行事务提交处理,并记录事务处理类型为提交处理类型,将提交处理类型和全局事务标识aaxxxxbbcc返回至一致性模块;第二参与者模块接收到abort请求,进行事务回滚处理,并记录事务处理类型为中止处理类型,将中止处理类型和全局事务标识aaxxxxbbcc返回至一致性模块;
步骤310、一致性模块根据全局事务标识aaxxxxbbcc,确定aaxxxxbbcc对应的事务处理类型为第一参与者模块的提交处理类型和第二参与者模块的中止处理类型,对应的请求类型为中止请求类型,确定存在数据不一致的参与者模块为第一参与者模块;
步骤311、一致性模块获取第一参与者模块的地址信息;
步骤312、一致性模块向第一参与者模块的地址信息发送PreCommit请求;
步骤313、第一参与者模块根据PreCommit请求,重新执行事务操作。
本发明实施例通过协调者模块接收参与者模块发送的准备结果反馈信息,协调者模块根据准备结果反馈信息,发送提交/中止请求至所述一致性模块,一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,一致性模块返回全局事务标识至协调者模块,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块,一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理,引入一致性模块进行事前采集请求、事中记录提交结果、事后补偿重试,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够使超时提交的部分参与者重新进行处理,从而提高数据的一致性。
本发明实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行上述任意方法实施例中的分布式事务提交方法。
本发明实施例通过协调者模块接收参与者模块发送的准备结果反馈信息,协调者模块根据准备结果反馈信息,发送提交/中止请求至所述一致性模块,一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,一致性模块返回全局事务标识至协调者模块,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块,一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理,引入一致性模块进行事前采集请求、事中记录提交结果、事后补偿重试,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够使超时提交的部分参与者重新进行处理,从而提高数据的一致性。
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的分布式事务提交方法。
本发明实施例通过协调者模块接收参与者模块发送的准备结果反馈信息,协调者模块根据准备结果反馈信息,发送提交/中止请求至所述一致性模块,一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,一致性模块返回全局事务标识至协调者模块,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块,一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理,引入一致性模块进行事前采集请求、事中记录提交结果、事后补偿重试,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够使超时提交的部分参与者重新进行处理,从而提高数据的一致性。
图6示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图6所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述任意方法实施例中的分布式事务提交方法。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
本发明实施例通过协调者模块接收参与者模块发送的准备结果反馈信息,协调者模块根据准备结果反馈信息,发送提交/中止请求至所述一致性模块,一致性模块根据提交/中止请求,记录请求类型,并生成提交/中止请求的全局事务标识,一致性模块返回全局事务标识至协调者模块,协调者模块发送全局事务标识以及提交/中止请求至参与者模块,参与者模块根据提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将事务处理类型和全局事务标识返回至一致性模块,一致性模块根据全局事务标识、事务处理类型以及请求类型,判断是否存在数据不一致的参与者模块,若是,则使数据不一致的参与者模块重新进行事务处理,引入一致性模块进行事前采集请求、事中记录提交结果、事后补偿重试,与传统三阶段提交协议中的协调者、参与者构成了新的交互模式,能够使超时提交的部分参与者重新进行处理,从而提高数据的一致性。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种分布式事务提交方法,其特征在于,应用于分布式事务提交系统,所述分布式事务提交系统包括:协调者模块、一致性模块以及若干参与者模块;
所述方法包括:
所述协调者模块接收所述参与者模块发送的准备结果反馈信息;
所述协调者模块根据所述准备结果反馈信息,发送提交/中止请求至所述一致性模块;
所述一致性模块根据所述提交/中止请求,记录请求类型,并生成所述提交/中止请求的全局事务标识;
所述一致性模块返回所述全局事务标识至所述协调者模块;
所述协调者模块发送所述全局事务标识以及所述提交/中止请求至所述参与者模块;
所述参与者模块根据所述提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将所述事务处理类型和所述全局事务标识返回至所述一致性模块;
所述一致性模块根据所述全局事务标识、所述事务处理类型以及所述请求类型,判断是否存在数据不一致的所述参与者模块,若是,则使数据不一致的所述参与者模块重新进行事务处理。
2.根据权利要求1所述的方法,其特征在于,所述准备结果反馈信息为确认响应信息或者否定响应信息,所述提交/中止请求为提交请求或者中止请求;
则,所述根据所述准备结果反馈信息,发送提交/中止请求至所述一致性模块,进一步包括:
判断所述准备结果反馈信息中是否存在所述否定响应信息;
若存在所述否定响应信息,则发送所述中止请求至所述一致性模块;
若不存在所述否定响应信息,则发送所述提交请求至所述一致性模块。
3.根据权利要求2所述的方法,其特征在于,所述根据所述准备结果反馈信息,发送提交/中止请求至所述一致性模块,进一步还包括:
判断是否接收到全部所述参与者模块发送的准备结果反馈信息;
若是,则执行判断所述准备结果反馈信息中是否存在所述否定响应信息的步骤;
若否,则发送所述中止请求至所述一致性模块。
4.根据权利要求2所述的方法,其特征在于,所述根据所述提交/中止请求,记录请求类型,进一步包括:
根据所述提交请求,记录所述请求类型为提交请求类型;或者
根据所述中止请求,记录所述请求类型为中止请求类型。
5.根据权利要求2所述的方法,其特征在于,所述根据所述提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,进一步包括:
根据所述提交请求,进行事务提交处理,并记录所述事务处理类型为提交处理类型;或者
根据所述中止请求,进行事务回滚处理,并记录所述事务处理类型为中止处理类型;或者
根据所述超时状态,进行事务提交处理,并记录所述事务处理类型为提交处理类型。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述全局事务标识、所述事务处理类型以及所述请求类型,判断是否存在数据不一致的所述参与者模块,进一步包括:
确定同一所述全局事务标识对应的所述事务处理类型和所述请求类型;
若所述事务处理类型与所述请求类型的类型不一致,则确定发送不一致的所述事务处理类型的所述参与者模块为数据不一致的所述参与者模块。
7.根据权利要求6所述的方法,其特征在于,所述使数据不一致的所述参与者模块重新进行事务处理,进一步包括:
确定数据不一致的所述参与者模块的地址信息;
根据所述地址信息,向数据不一致的所述参与者模块重新发送所述提交/中止请求,以使数据不一致的所述参与者模块根据所述提交/中止请求,重新进行事务处理。
8.一种分布式事务提交系统,其特征在于,所述系统包括:
协调者模块,用于接收参与者模块发送的准备结果反馈信息,根据所述准备结果反馈信息,发送提交/中止请求;
一致性模块,用于根据所述提交/中止请求,记录请求类型,并生成所述提交/中止请求的全局事务标识,返回所述全局事务标识至所述协调者模块;
参与者模块,用于接收所述协调者模块发送的所述全局事务标识以及所述提交/中止请求,根据所述提交/中止请求或超时状态,进行事务处理,并记录事务处理类型,将所述事务处理类型和所述全局事务标识返回至所述一致性模块;
所述一致性模块还用于根据所述全局事务标识、所述事务处理类型以及所述请求类型,判断是否存在数据不一致的所述参与者模块,若是,则使数据不一致的所述参与者模块重新进行事务处理。
9.一种计算设备,其特征在于,包括:处理器、存储器和通信接口,所述处理器、所述存储器和所述通信接口之间相互通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任意一项所述的分布式事务提交方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任意一项所述的分布式事务提交方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911308314.7A CN112995262B (zh) | 2019-12-18 | 2019-12-18 | 分布式事务提交方法、系统及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911308314.7A CN112995262B (zh) | 2019-12-18 | 2019-12-18 | 分布式事务提交方法、系统及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112995262A CN112995262A (zh) | 2021-06-18 |
CN112995262B true CN112995262B (zh) | 2022-06-10 |
Family
ID=76343867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911308314.7A Active CN112995262B (zh) | 2019-12-18 | 2019-12-18 | 分布式事务提交方法、系统及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112995262B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268471B (zh) * | 2021-06-24 | 2023-09-22 | 京东科技控股股份有限公司 | 处理分布式事务的方法、代理连接池、系统、设备及介质 |
CN114168358A (zh) * | 2021-10-22 | 2022-03-11 | 济南浪潮数据技术有限公司 | 消息处理方法和装置、分布式事务处理系统及计算机设备 |
CN114338583B (zh) * | 2021-12-31 | 2024-04-05 | 北京安博盛赢教育科技有限责任公司 | 远程协同办公模式下的消息处理方法和装置 |
CN114722062B (zh) * | 2022-05-05 | 2024-07-02 | 北京理工大学 | 一种自适应分布式事务提交方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430740B1 (en) * | 2002-04-12 | 2008-09-30 | 724 Solutions Software, Inc | Process group resource manager |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理系统 |
CN106446300A (zh) * | 2016-12-01 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种基于共享存储池的事务处理方法及系统 |
CN106547610A (zh) * | 2016-10-11 | 2017-03-29 | 北京国电通网络技术有限公司 | 一种分布式事务提交的方法及系统 |
CN106997305A (zh) * | 2013-10-29 | 2017-08-01 | 华为技术有限公司 | 一种事务处理方法与装置 |
CN109684045A (zh) * | 2017-10-18 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 事务消息的处理方法、装置及电子设备 |
CN109783204A (zh) * | 2018-12-28 | 2019-05-21 | 咪咕文化科技有限公司 | 一种分布式事务处理方法、装置及存储介质 |
CN110022367A (zh) * | 2019-04-11 | 2019-07-16 | 软通动力信息技术(集团)有限公司 | 一种事务处理方法和事务处理系统 |
CN110032428A (zh) * | 2019-02-21 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 分布式事务的执行方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296371B2 (en) * | 2014-03-17 | 2019-05-21 | International Business Machines Corporation | Passive two-phase commit system for high-performance distributed transaction execution |
-
2019
- 2019-12-18 CN CN201911308314.7A patent/CN112995262B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430740B1 (en) * | 2002-04-12 | 2008-09-30 | 724 Solutions Software, Inc | Process group resource manager |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理系统 |
CN106997305A (zh) * | 2013-10-29 | 2017-08-01 | 华为技术有限公司 | 一种事务处理方法与装置 |
CN106547610A (zh) * | 2016-10-11 | 2017-03-29 | 北京国电通网络技术有限公司 | 一种分布式事务提交的方法及系统 |
CN106446300A (zh) * | 2016-12-01 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种基于共享存储池的事务处理方法及系统 |
CN109684045A (zh) * | 2017-10-18 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 事务消息的处理方法、装置及电子设备 |
CN109783204A (zh) * | 2018-12-28 | 2019-05-21 | 咪咕文化科技有限公司 | 一种分布式事务处理方法、装置及存储介质 |
CN110032428A (zh) * | 2019-02-21 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 分布式事务的执行方法和装置 |
CN110022367A (zh) * | 2019-04-11 | 2019-07-16 | 软通动力信息技术(集团)有限公司 | 一种事务处理方法和事务处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112995262A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
EP2877942B1 (en) | Automatic transaction retry after session failure | |
US6769003B2 (en) | Parallel logging method for transaction processing system | |
CN110968586B (zh) | 分布式事务处理方法及装置 | |
CN106844014B (zh) | 分布式事务防悬挂的实现方法和装置 | |
EP0814590A2 (en) | Preventing conflicts in distributed systems | |
US20120179645A1 (en) | Transaction support for distributed data | |
JP2009520253A (ja) | 分散型システムにおけるトランザクションのコミットメントのための方法、コンピュータ・プログラム製品、およびシステム | |
US8006248B2 (en) | Method, apparatus and computer program for facilitating communication between a client application and a server application | |
CN111225012A (zh) | 事务处理方法、装置和设备 | |
CN110019112A (zh) | 数据事务处理方法、装置以及电子设备 | |
CN104219235A (zh) | 一种分布式交易请求方法及装置 | |
WO2021052237A1 (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
AU771514B2 (en) | Preserving consistency of passively-replicated non-deterministic objects | |
US6842763B2 (en) | Method and apparatus for improving message availability in a subsystem which supports shared message queues | |
WO1996039659A1 (en) | Synchronisation procedure in a routing node | |
CN112822091B (zh) | 一种消息处理方法和装置 | |
US8234243B2 (en) | Third tier transactional commit for asynchronous replication | |
CN113051044A (zh) | 一种基于无服务架构的分布式事务处理方法及装置 | |
CN111143041B (zh) | 一种数据一致性方法、分布式协调器及中央协调器 | |
US7716523B2 (en) | End-to-end transactional protection for requests in a web application | |
CN110839064A (zh) | 一种分布式系统执行脚本的方法及装置 | |
CN108475211B (zh) | 无状态系统和用于获得资源的系统 | |
CN113051008A (zh) | 接口请求处理方法、装置、计算机设备和存储介质 | |
CN117453750B (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 |