CN110347481A - 一种实现分布式事务的方法及系统 - Google Patents

一种实现分布式事务的方法及系统 Download PDF

Info

Publication number
CN110347481A
CN110347481A CN201910648715.0A CN201910648715A CN110347481A CN 110347481 A CN110347481 A CN 110347481A CN 201910648715 A CN201910648715 A CN 201910648715A CN 110347481 A CN110347481 A CN 110347481A
Authority
CN
China
Prior art keywords
revision
node
affairs
data
transaction
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
CN201910648715.0A
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 Sohu New Media Information Technology Co Ltd
Original Assignee
Beijing Sohu New Media Information 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 Sohu New Media Information Technology Co Ltd filed Critical Beijing Sohu New Media Information Technology Co Ltd
Priority to CN201910648715.0A priority Critical patent/CN110347481A/zh
Publication of CN110347481A publication Critical patent/CN110347481A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

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

本发明公开了一种实现分布式事务的方法及系统,方法包括:事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点所述版本ID,事务参与节点在处理数据时,存储数据的同时附带所述版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:版本管理中心更新版本ID状态为成功状态。本发明实现了微服务架构中,不同服务之间数据的一致性。

Description

一种实现分布式事务的方法及系统
技术领域
本发明涉及微服务技术领域,尤其涉及一种实现分布式事务的方法及系统。
背景技术
微服务是现在非常流行的一种架构风格,将一个大型复杂的软件应用,拆分成一组小的、互相连接的微服务,每个服务实现特定的功能,可被独立部署,服务之间松耦合。
在微服务架构中,一次操作由一组不同的微服务操作共同完成,需要保证这一组操作要么全部成功,要么全部失败,这就需要一种分布式事务机制来提供保障。简单来说,分布式事务就是为了保证不同服务的数据一致性。
目前存在的分布式事务方案及其存在的问题如下:
1)2PC(两阶段提交)
存在一个节点作为协调者,其他节点作为参与者,将事务的提交操作分成了prepare、commit两个阶段:
第一阶段prepare
协调者节点向所有参与者节点询问是否可以执行提交操作,并开始等待各参与者节点的响应;
各参与者节点执行询问发起为止的所有事务操作,并响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个“同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个“中止”消息。
第二阶段commit
当协调者节点从所有参与者节点获得的相应消息都为“同意”时,协调者节点向所有参与者节点发出“正式提交(commit)”的请求,参与者节点正式完成操作,并发送“完成”消息;
如果任一参与者节点在第一阶段返回的响应消息为“中止”,或者协调者节点在第一阶段的询问超时之前无法获取所有参与者节点的响应消息时,协调者节点向所有参与者节点发出“回滚操作(rollback)”的请求,参与者节点执行回滚,并发送“回滚完成”消息。
2PC方案的主要问题在于,在分布式事务执行过程中,所有参与事务的节点资源都是被锁定的,系统不允许其他节点访问锁定的资源,在这种执行下很难进一步提升系统的执行效率;在第二步提交时,参与者是不允许出错的,如果发生消息丢失等情况,会导致出现数据不一致情况。另外存在协调者单点故障问题;且实现复杂。
2)3PC(三阶段提交)
3PC是在2PC的基础上,引入超时机制;另外将2PC的prepare阶段一分为二,变成CanCommit、PreCommit、DoCommit阶段。主要流程如下:
第一阶段CanCommit
协调者发送此消息,主要是检查下参与者状态的健康性,保证在开始事务commit之前,所有参与者节点状态是一致的;参与者有能力完成事务就返回YES,否则返回NO。
第二阶段PreCommit
过程同2PC的第一阶段prepare
第三阶段DoCommit
过程同2PC的第二阶段commit
2PC只有协调者设置超时(即参与者没有在规定时间内回复响应消息)。
3PC对于协调者和参与者都设置了超时时间,参与者在规定时间内没有收到协调者的Commit请求,会自动进行本地commit,这样相对有效的解决了协调者的单点故障问题,从侧面降低了整个事务的阻塞时间和范围;协调者超时的作用和2PC一致。
3PC的主要问题在于:3PC是对2PC的一个扩展和补充,但并没有有效解决性能和数据不一致问题,而且还增加了实现复杂度。
3)TCC(补偿事务)
核心思想是针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作,事务发起可以由主业务(即分布式事务的第一个子事务)承担,或者由一个类似协调者的角色承担,主要步骤分为三个阶段:
Try阶段
主要是对业务系统做检测及资源预留。
Confirm阶段
主要是对业务系统做确认提交,Try阶段执行成功并开始执行Confirm阶段时,默认Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。
Cancel阶段
主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。
TCC事务的处理流程与2PC两阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质上就是一个应用层面的2PC,需要通过业务逻辑来实现。这种分布式事务的实现方式的优势在于,可以让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。
TCC方案的主要问题在于:
对应用的侵入性非常强,业务逻辑的每个分支都需要实现try、confirm、cancel三个操作,在一些场景中,业务流程对于TCC不太好定义及处理。
4)Saga
Saga也是一种补偿事务的机制,其核心思想是将分布式事务拆分为多个本地短事务,由Saga事务协调器协调,如果正常结束那就正常完成,如果某个步骤失败,则根据相反顺序一次调用补偿操作。是对TCC的简化,省略了Try的资源预留阶段,简化业务实现的复杂度。
Saga方案的主要问题在于:不提供事务的隔离性,事务交错执行,会看到其他事务的部分结果,可以理解为是一种不完美的补偿事务机制。
因此,如何有效的实现微服务架构中,不同服务之间数据的一致性,是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种实现分布式事务的方法,能够解决微服务架构中,不同服务之间数据的一致性。
本发明提供了一种实现分布式事务的方法,包括:
事务发起者节点向版本管理中心申请全局唯一且递增的版本ID;
所述版本管理中心将所述版本ID的状态设置为开始状态;
所述事务发起者节点向所述事务参与者节点发送所述版本ID;
所述事务参与节点在处理数据时,存储数据的同时附带所述版本ID;
所述事务发起者节点在所述事务参与节点数据处理完毕后,判断所述事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:
所述版本管理中心更新所述版本ID状态为成功状态。
优选地,所述方法还包括:
当所述事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,所述版本管理中心更新所述版本ID状态为失败状态。
一种实现分布式事务的系统,包括:
事务发起者节点,用于向版本管理中心申请全局唯一且递增的版本ID;
版本管理中心,用于将所述版本ID的状态设置为开始状态;
所述事务发起者节点,还用于向所述事务参与者节点发送所述版本ID;
事务参与节点,用于在处理数据时,存储数据的同时附带所述版本ID;
所述事务发起者节点,还用于在所述事务参与节点数据处理完毕后,判断所述事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID;
所述版本管理中心,还用于所述事务参与节点所操作的数据的最新成功状态版本ID小于当前事务所持的版本ID时,更新所述版本ID状态为成功状态。
优选地,所述版本管理中心,还用于所述事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,更新所述版本ID状态为失败状态。
综上所述,本发明公开了一种实现分布式事务的方法,当需要实现分布式事务时,首先事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,然后版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点发送版本ID,事务参与节点在处理数据时,存储数据的同时附带版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:版本管理中心更新版本ID状态为成功状态。本发明实现了微服务架构中,不同服务之间数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种实现分布式事务的方法实施例1的方法流程图;
图2为本发明公开的一种实现分布式事务的方法实施例2的方法流程图;
图3为本发明公开的一种实现分布式事务的系统实施例1的结构示意图;
图4为本发明公开的一种实现分布式事务的系统实施例2的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种实现分布式事务的方法实施例1的方法流程图,所述方法可以包括以下步骤:
S101、事务发起者节点向版本管理中心申请全局唯一且递增的版本ID;
当需要实现分布式事务时,在准备阶段,通过事务发起者节点向版本管理中心申请全局唯一且递增的版本ID。其中,版本管理中心类似于协调者,版本采用时间戳等方式,保证了版本ID是单调增加的。
S102、版本管理中心将版本ID的状态设置为开始状态;
在事务发起者节点向版本管理中心申请全局唯一的版本ID时,版本管理中心将该版本ID的状态设置为开始状态。
S103、事务发起者节点向事务参与者节点发送版本ID;
当需要实现分布式事务时,在Commit阶段,通过事务发起者节点向事务参与者节点发起Commit请求,事务发起者节点将版本ID发送至事务参与者节点。
S104、事务参与节点在处理数据时,存储数据的同时附带版本ID;
事务参与者节点在接收到事务发起者节点发送的版本ID后,会对数据进行相应的处理,例如,对数据进行读写操作等。在存储数据时,会同时附带版本ID一并存储。
需要说明的是,同一数据可能存在多个版本,同一数据的多个版本,有且只有一个版本是有效的,有效的版本为这几个版本中状态为成功且值最大的版本。
S105、事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则进入S106:
在事务参与节点数据处理完毕后,事务发起者节会进一步判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,即判断事务参与节点所操作数据的版本ID是不是该数据所有成功状态版本ID中最新的,即判断事务参与节点所操作数据的版本ID的值是不是该数据所有成功状态版本ID值中最大的。
S106、版本管理中心更新版本ID状态为成功状态。
当事务参与节点所操作的数据的最新成功状态版本ID小于当前事务所持的版本ID时,事务发起者节点通知版本管理中心,将对应的版本ID的状态更新为成功状态。
综上所述,在上述实施例中,当需要实现分布式事务时,首先事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,然后版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点发送版本ID,事务参与节点在处理数据时,存储数据的同时附带版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:版本管理中心更新版本ID状态为成功状态。本发明实现了微服务架构中,不同服务之间数据的一致性。
如图2所示,为本发明公开的一种实现分布式事务的方法实施例2的方法流程图,所述方法可以包括以下步骤:
S201、事务发起者节点向版本管理中心申请全局唯一且递增的版本ID;
当需要实现分布式事务时,在准备阶段,通过事务发起者节点向版本管理中心申请全局唯一且递增的版本ID。其中,版本管理中心类似于协调者,版本采用时间戳等方式,保证了版本ID是单调增加的。
S202、版本管理中心将版本ID的状态设置为开始状态;
在事务发起者节点向版本管理中心申请全局唯一的版本ID时,版本管理中心将该版本ID的状态设置为开始状态。
S203、事务发起者节点向事务参与者节点发送版本ID;
当需要实现分布式事务时,在Commit阶段,通过事务发起者节点向事务参与者节点发起Commit请求,事务发起者节点将版本ID发送至事务参与者节点。
S204、事务参与节点在处理数据时,存储数据的同时附带版本ID;
事务参与者节点在接收到事务发起者节点发送的版本ID后,会对数据进行相应的处理,例如,对数据进行读写操作等。在存储数据时,会同时附带版本ID一并存储。
需要说明的是,同一数据可能存在多个版本,同一数据的多个版本,有且只有一个版本是有效的,有效的版本为这几个版本中状态为成功且值最大的版本。
S205、事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若否,则进入S206:
在事务参与节点数据处理完毕后,事务发起者节会进一步判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,即判断事务参与节点所操作数据的版本ID是不是该数据所有成功状态版本ID中最新的,即判断事务参与节点所操作数据的版本ID的值是不是该数据所有成功状态版本ID值中最大的。
S206、版本管理中心更新版本ID状态为失败状态。
当事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,事务发起者节点通知版本管理中心,将对应的版本ID的状态更新为失败状态。
综上所述,在上述实施例中,当需要实现分布式事务时,首先事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,然后版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点发送版本ID,事务参与节点在处理数据时,存储数据的同时附带版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若否,则:版本管理中心更新版本ID状态为失败状态。本发明实现了微服务架构中,不同服务之间数据的一致性。
如图3所示,为本发明公开的一种实现分布式事务的系统实施例1的结构示意图,所述系统可以包括:
事务发起者节点301,用于向版本管理中心申请全局唯一且递增的版本ID;
当需要实现分布式事务时,在准备阶段,通过事务发起者节点向版本管理中心申请全局唯一且递增的版本ID。其中,版本管理中心类似于协调者,版本采用时间戳等方式,保证了版本ID是单调增加的。
版本管理中心302,用于将版本ID的状态设置为开始状态;
在事务发起者节点向版本管理中心申请全局唯一的版本ID时,版本管理中心将该版本ID的状态设置为开始状态。
事务发起者节点301,还用于向事务参与者节点发送版本ID;
当需要实现分布式事务时,在Commit阶段,通过事务发起者节点向事务参与者节点发起Commit请求,事务发起者节点将版本ID发送至事务参与者节点。
事务参与节点303,用于在处理数据时,存储数据的同时附带版本ID;
事务参与者节点在接收到事务发起者节点发送的版本ID后,会对数据进行相应的处理,例如,对数据进行读写操作等。在存储数据时,会同时附带版本ID一并存储。
需要说明的是,同一数据可能存在多个版本,同一数据的多个版本,有且只有一个版本是有效的,有效的版本为这几个版本中状态为成功且值最大的版本。
事务发起者节点301,还用于在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID;
在事务参与节点数据处理完毕后,事务发起者节会进一步判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,即判断事务参与节点所操作数据的版本ID是不是该数据所有成功状态版本ID中最新的,即判断事务参与节点所操作数据的版本ID的值是不是该数据所有成功状态版本ID值中最大的。
版本管理中心302,还用于事务参与节点所操作的数据的最新成功状态版本ID小于当前事务所持的版本ID时,更新版本ID状态为成功状态。
当事务参与节点所操作的数据的最新成功状态版本ID小于当前事务所持的版本ID时,事务发起者节点通知版本管理中心,将对应的版本ID的状态更新为成功状态。
综上所述,在上述实施例中,当需要实现分布式事务时,首先事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,然后版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点发送版本ID,事务参与节点在处理数据时,存储数据的同时附带版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:版本管理中心更新版本ID状态为成功状态。本发明实现了微服务架构中,不同服务之间数据的一致性。
如图4所示,为本发明公开的一种实现分布式事务的系统实施例2的结构示意图,所述系统可以包括:
事务发起者节点401,用于向版本管理中心申请全局唯一且递增的版本ID;
当需要实现分布式事务时,在准备阶段,通过事务发起者节点向版本管理中心申请全局唯一且递增的版本ID。其中,版本管理中心类似于协调者,版本采用时间戳等方式,保证了版本ID是单调增加的。
版本管理中心402,用于将版本ID的状态设置为开始状态;
在事务发起者节点向版本管理中心申请全局唯一的版本ID时,版本管理中心将该版本ID的状态设置为开始状态。
事务发起者节点401,还用于向事务参与者节点发送版本ID;
当需要实现分布式事务时,在Commit阶段,通过事务发起者节点向事务参与者节点发起Commit请求,事务发起者节点将版本ID发送至事务参与者节点。
事务参与节点403,用于在处理数据时,存储数据的同时附带版本ID;
事务参与者节点在接收到事务发起者节点发送的版本ID后,会对数据进行相应的处理,例如,对数据进行读写操作等。在存储数据时,会同时附带版本ID一并存储。
需要说明的是,同一数据可能存在多个版本,同一数据的多个版本,有且只有一个版本是有效的,有效的版本为这几个版本中状态为成功且值最大的版本。
事务发起者节点401,还用于在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID;
在事务参与节点数据处理完毕后,事务发起者节会进一步判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,即判断事务参与节点所操作数据的版本ID是不是该数据所有成功状态版本ID中最新的,即判断事务参与节点所操作数据的版本ID的值是不是该数据所有成功状态版本ID值中最大的
版本管理中心402,还用于事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,更新版本ID状态为失败状态。
当事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,事务发起者节点通知版本管理中心,将对应的版本ID的状态更新为失败状态。
综上所述,在上述实施例中,当需要实现分布式事务时,首先事务发起者节点向版本管理中心申请全局唯一且递增的版本ID,然后版本管理中心将版本ID的状态设置为开始状态;事务发起者节点向事务参与者节点发送版本ID,事务参与节点在处理数据时,存储数据的同时附带版本ID;事务发起者节点在事务参与节点数据处理完毕后,判断事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若否,则:版本管理中心更新版本ID状态为失败状态。本发明实现了微服务架构中,不同服务之间数据的一致性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (4)

1.一种实现分布式事务的方法,其特征在于,包括:
事务发起者节点向版本管理中心申请全局唯一且递增的版本ID;
所述版本管理中心将所述版本ID的状态设置为开始状态;
所述事务发起者节点向所述事务参与者节点发送所述版本ID;
所述事务参与节点在处理数据时,存储数据的同时附带所述版本ID;
所述事务发起者节点在所述事务参与节点数据处理完毕后,判断所述事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID,若是,则:
所述版本管理中心更新所述版本ID状态为成功状态。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,所述版本管理中心更新所述版本ID状态为失败状态。
3.一种实现分布式事务的系统,其特征在于,包括:
事务发起者节点,用于向版本管理中心申请全局唯一且递增的版本ID;
版本管理中心,用于将所述版本ID的状态设置为开始状态;
所述事务发起者节点,还用于向所述事务参与者节点发送所述版本ID;
事务参与节点,用于在处理数据时,存储数据的同时附带所述版本ID;
所述事务发起者节点,还用于在所述事务参与节点数据处理完毕后,判断所述事务参与节点所操作的数据的最新成功状态版本ID是否小于当前事务所持的版本ID;
所述版本管理中心,还用于所述事务参与节点所操作的数据的最新成功状态版本ID小于当前事务所持的版本ID时,更新所述版本ID状态为成功状态。
4.根据权利要求3所述的系统,其特征在于,所述版本管理中心,还用于所述事务参与节点所操作的数据的最新成功状态版本ID大于等于当前事务所持的版本ID时,更新所述版本ID状态为失败状态。
CN201910648715.0A 2019-07-17 2019-07-17 一种实现分布式事务的方法及系统 Pending CN110347481A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910648715.0A CN110347481A (zh) 2019-07-17 2019-07-17 一种实现分布式事务的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910648715.0A CN110347481A (zh) 2019-07-17 2019-07-17 一种实现分布式事务的方法及系统

Publications (1)

Publication Number Publication Date
CN110347481A true CN110347481A (zh) 2019-10-18

Family

ID=68178743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910648715.0A Pending CN110347481A (zh) 2019-07-17 2019-07-17 一种实现分布式事务的方法及系统

Country Status (1)

Country Link
CN (1) CN110347481A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070263671A1 (en) * 2006-05-12 2007-11-15 Benq Corporation State synchronization apparatuses and methods
CN104216955A (zh) * 2014-08-20 2014-12-17 百度在线网络技术(北京)有限公司 一种操作数据及管理事务的方法、装置及分布式系统
CN107025257A (zh) * 2016-11-30 2017-08-08 阿里巴巴集团控股有限公司 一种事务处理方法及装置
CN107533474A (zh) * 2016-01-26 2018-01-02 华为技术有限公司 一种事务处理方法及装置
CN109542872A (zh) * 2018-10-26 2019-03-29 金蝶软件(中国)有限公司 数据读取方法、装置、计算机设备和存储介质
CN109582686A (zh) * 2018-12-13 2019-04-05 中山大学 分布式元数据管理一致性保证方法、装置、系统及应用
CN109933596A (zh) * 2019-02-27 2019-06-25 深圳市轱辘汽车维修技术有限公司 一种数据同步方法、装置及终端设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070263671A1 (en) * 2006-05-12 2007-11-15 Benq Corporation State synchronization apparatuses and methods
CN104216955A (zh) * 2014-08-20 2014-12-17 百度在线网络技术(北京)有限公司 一种操作数据及管理事务的方法、装置及分布式系统
CN107533474A (zh) * 2016-01-26 2018-01-02 华为技术有限公司 一种事务处理方法及装置
CN107025257A (zh) * 2016-11-30 2017-08-08 阿里巴巴集团控股有限公司 一种事务处理方法及装置
CN109542872A (zh) * 2018-10-26 2019-03-29 金蝶软件(中国)有限公司 数据读取方法、装置、计算机设备和存储介质
CN109582686A (zh) * 2018-12-13 2019-04-05 中山大学 分布式元数据管理一致性保证方法、装置、系统及应用
CN109933596A (zh) * 2019-02-27 2019-06-25 深圳市轱辘汽车维修技术有限公司 一种数据同步方法、装置及终端设备

Similar Documents

Publication Publication Date Title
JP4241940B2 (ja) 分散形データベース内でトランザクションをするための方法
CN103077222B (zh) 机群文件系统分布式元数据一致性保证方法及系统
CN111651244B (zh) 分布式事务的处理系统
US6895529B2 (en) Rebuilding “in-doubt” states reliably after multiple system failures in a data processing system performing two-phase transaction processing
CN109739935A (zh) 数据读取方法、装置、电子设备以及存储介质
US7478400B1 (en) Efficient distributed transaction protocol for a distributed file sharing system
US20020035590A1 (en) Guaranteed end-to-end transaction execution in a client/server environment
CN111045794B (zh) 分布式事务处理方法、装置、系统、计算机设备及存储介质
CN109255701B (zh) 一种网贷业务数据处理方法
US7970737B2 (en) Recovery administration of global transaction participants
KR20140138670A (ko) 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들
CN106844014A (zh) 分布式事务防悬挂的实现方法和装置
CN109002462B (zh) 一种实现分布式事务的方法及系统
WO2017128028A1 (zh) 一种事务处理方法及装置
US20090193286A1 (en) Method and System for In-doubt Resolution in Transaction Processing
US20090193280A1 (en) Method and System for In-doubt Resolution in Transaction Processing
CN112597249A (zh) 一种业务数据的同步分发存储方法及系统
WO2024032632A1 (zh) 一种事务的处理方法、设备及存储介质
US7284018B1 (en) Logless transaction coordination
CN112925614A (zh) 一种分布式事务处理方法、装置、介质和设备
CN102413166B (zh) 分布式交易方法及其系统
CN110275892A (zh) 面向区块链的数据管理方法、装置、设备及存储介质
CN110347481A (zh) 一种实现分布式事务的方法及系统
CN113726828B (zh) 一种支持微服务的高并发的可信区块链系统及方法
CN112559496A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191018

RJ01 Rejection of invention patent application after publication