CN108845866B - 处理分布式事务的方法和装置 - Google Patents

处理分布式事务的方法和装置 Download PDF

Info

Publication number
CN108845866B
CN108845866B CN201810688740.7A CN201810688740A CN108845866B CN 108845866 B CN108845866 B CN 108845866B CN 201810688740 A CN201810688740 A CN 201810688740A CN 108845866 B CN108845866 B CN 108845866B
Authority
CN
China
Prior art keywords
branch
transaction
data
rollback
log
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
Application number
CN201810688740.7A
Other languages
English (en)
Other versions
CN108845866A (zh
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.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201810688740.7A priority Critical patent/CN108845866B/zh
Publication of CN108845866A publication Critical patent/CN108845866A/zh
Application granted granted Critical
Publication of CN108845866B publication Critical patent/CN108845866B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/466Transaction processing
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Abstract

本说明书实施例提供一种处理分布式事务的方法和装置,分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,方法包括:首先拦截每个参与者在执行分支事务时对数据源的数据操作,数据操作包括提交分支事务的操作或回滚分支事务的操作,然后根据上述操作生成回滚日志,回滚日志包括操作的撤销操作信息,接着在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的回滚日志,如果在预设时间周期内未监测到所述多项分支事务中部分分支事务对应的回滚日志,则根据其他分支事务对应的回滚日志执行分布式事务的整体回滚,从而在业务系统无感知的情况下实现分布式事务整体一致性。

Description

处理分布式事务的方法和装置
技术领域
本说明书一个或多个实施例涉及数据处理领域,尤其涉及处理分布式事务的方法和装置。
背景技术
面向服务的体系架构(service-oriented architecture,SOA)体系架构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。在现有基于SOA体系架构的模式下,一般会基于功能将集群划分为多个应用,单个应用一般使用独立数据源,这多个应用实现的就是分布式事务,其中,单个应用为分布式事务的参与者,一次分布式事务行为称为主事务,一次涉及多个参与者的分布式事务行为中,每个参与者负责的数据操作构成一个分支事务。在分布式事务中,如何确保多个应用的数据源之间保持数据的最终一致性是常见问题。
业界常用的方法有:基于事务协调者的两阶段提交方案。基于事务协调者的两阶段提交方案一般指,建立一个第三方数据源来承担事务协调者的角色。在分布式事务一阶段,事务协调者确认分布式事务的多个参与者是否能够完成分支事务,此时多个参与者需要锁定完成分支事务所需要的资源。在分布式事务二阶段,事务协调者基于一阶段各参与者锁定资源的结果来推进二阶段,如果一阶段所有参与者锁定资源成功,即准备成功,则二阶段事务协调者推进所有参与者提交分支事务,从而实现分布式事务整体提交。如果一阶段部分参与者准备失败,则二阶段事务协调者推进所有参与者回滚分支事务,从而实现分布式事务整体回滚。该方案的优点在于实时性较好,无论结果为成功或失败,可以做到较短时间内分布式事务整体一致性。缺点在于对业务系统侵入较大,需要业务系统实现分支事务准备、提交和回滚策略。
因此,希望能有改进的方案,能够在业务系统无感知的情况下实现分布式事务整体一致性。
发明内容
本说明书一个或多个实施例描述了一种处理分布式事务的方法和装置,能够在业务系统无感知的情况下实现分布式事务整体一致性。
第一方面,提供了一种处理分布式事务的方法,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,方法包括:
拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;
根据所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;
在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志;
如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。
在一种可能的实施方式中,方法还包括:
如果在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则确定所述分布式事务整体提交成功。
在一种可能的实施方式中,方法还包括:
如果在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
在一种可能的实施方式中,所述拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,包括:
通过预先在所述多个数据源中的每个数据源中设置的拦截器拦截每个参与者在执行所述分支事务时对所述数据源的数据操作。
在一种可能的实施方式中,所述根据所述数据操作生成回滚日志,包括:
根据所述数据操作生成操作日志,所述操作日志包括所述数据操作的执行操作信息;
根据所述操作日志生成所述回滚日志,所述回滚日志包括所述数据操作的撤销操作信息,所述执行操作信息用于指示的操作与所述撤销操作信息用于指示的操作为两种相反的操作。
在一种可能的实施方式中,所述数据操作包括插入或更新。
第二方面,提供了一种处理分布式事务的装置,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,装置包括:
拦截单元,用于拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;
生成单元,用于根据所述拦截单元拦截的所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;
监测单元,用于在预设时间周期内监测所述生成单元是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志;
执行单元,用于如果所述监测单元在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的方法和装置,首先拦截每个参与者在执行分支事务时对数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作,然后根据提交分支事务的操作生成回滚日志,回滚日志包括提交分支事务的操作的撤销操作信息,接着在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的回滚日志,如果在预设时间周期内未监测到所述多项分支事务中部分分支事务对应的回滚日志,则根据部分分支事务以外的其他分支事务对应的回滚日志执行所述分布式事务的整体回滚,从而在业务系统无感知的情况下实现分布式事务整体一致性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的处理分布式事务的方法流程图;
图3示出根据一个实施例的处理分布式事务的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及分布式事务的处理,在现有基于SOA体系架构的模式下,一般会基于功能将集群划分为多个应用,单个应用一般使用独立数据源,这多个应用实现的就是分布式事务,其中,单个应用为分布式事务的参与者,一次分布式事务行为称为主事务,一次涉及多个参与者的分布式事务行为中,每个参与者负责的数据操作构成一个分支事务。如图1所示,每个应用执行相应的分支事务,比如一个电商平台的下单场景,一般对于用户下单会有两个分支事务,一是订单应用采取下订单操作,二是库存应用采取减库存操作,在大型电子商务平台上这两个应用一般会运行在不同的机器上,这就是一个典型的分布式事务场景。还有一个常见的场景就是支付宝向余额宝转账,而支付宝和余额宝可以理解为不同的应用。
本说明书的一个或多个实施例中,分布式事务的参与者可以将分支事务作为普通事务来执行,从而可以减少设置业务系统(例如应用)与事务协调者的接口。普通事务就是一般所说的数据库事务,事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。当事务被提交给了数据库管理系统,则数据库管理系统需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
图1中事务协调者11不与应用进行交互,而是拦截每个参与者在执行分支事务时对数据源(例如数据库A12或数据库B13)的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;根据所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志;如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。如果在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则确定所述分布式事务整体提交成功。如果在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
可以理解的是,业务系统中的每个应用只负责执行分支事务,不保证分布式任务的一致性,分布式任务的一致性由事务协调者11基于回滚日志实现,从而在业务系统无感知的情况下实现分布式事务整体一致性。
本说明书的一个或多个实施例中,在处理分布式事务时,基于数据库日志来保证分布式事务的一致性。可以基于事务协调者的两阶段提交思路,使用数据库日志来实现分支事务的提交和回滚。在分布式事务一阶段,使用拦截器对分布式事务的参与者的数据库操作进行拦截并生成对应操作日志用于记录数据操作;并基于该操作日志生成撤销对应记录的回滚日志,用于回滚这部分数据操作。分布式事务的事务协调者监测所有参与者分支事务状态,如果一阶段所有参与者分支事务提交,则二阶段事务协调者无需额外操作,即分布式事务整体提交成功。如果一阶段部分参与者分支事务回滚,则二阶段事务协调者执行一阶段生成的所有回滚日志,从而实现分布式事务整体回滚。该方案优点在于业务侵入小,业务系统无感知,有拦截器自动记录数据操作并生成回滚日志,另外该方案实时性好,无论结果为成功或失败,都可以做到较短时间内分布式事务整体一致性。
图2示出根据一个实施例的处理分布式事务的方法流程图,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,该方法的执行主体可以是图1所示的事务协调者11以及部署在数据源中的拦截器。如图2所示,该实施例中处理分布式事务的方法包括以下步骤:步骤21,拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;步骤22,根据所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;步骤23,在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志;步骤24,如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。下面描述以上各个步骤的具体执行方式。
首先在步骤21,拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作。具体地,可以针对所述多个数据源中的每个数据源预先设置拦截器;通过所述拦截器拦截每个参与者在执行所述分支事务时对所述数据源的数据操作。其中,拦截器的具体实现方式本说明书实施例不做具体限定,例如,java里的拦截器是动态拦截action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在面向切面编程(aspect-oriented programming,AOP)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。
可以理解的是,所述数据操作包括插入或更新。
本说明书实施例中,执行所述分支任务,包括:提交所述分支任务或回滚所述分支任务;步骤21具体可以为拦截每个参与者在提交所述分支事务时对所述数据源的数据操作。
接着在步骤22,根据所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息。在一个示例中,先根据所述数据操作生成操作日志,所述操作日志包括所述数据操作的执行操作信息,然后根据所述操作日志生成所述回滚日志,所述回滚日志包括所述数据操作的撤销操作信息,所述执行操作信息用于指示的操作与所述撤销操作信息用于指示的操作为两种相反的操作。例如,所述操作日志中记录的所述数据操作的执行操作信息为“+2”,所述回滚日志中记录的所述数据操作的撤销操作信息为“-2”。
在一个示例中,所述回滚日志可以为通常的undo日志,所述操作日志可以为通常的redo日志。undo日志记录某数据被修改前的值,可以用来在事务失败时进行回滚(rollback);redo日志记录某数据块被修改后的值,可以用来恢复已成功事务更新的数据。例如某一事务的事务序号为T1,其对数据X进行修改,设X的原值是5,修改后的值为15,那么undo日志为<T1, X, 5>,redo日志为<T1, X, 15>。也有把undo和redo结合起来的做法,叫做undo/redo日志,在这个例子中undo/redo日志为<T1, X, 5, 15>。当生成一个数据库事务时,undo日志会记录被修改的数据的原始值,redo日志会记录被修改的数据的更新后的值。
然后在步骤23,在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志。可以理解,上述监测的方式有多种方式,例如,可以由拦截器在生成回滚日志后,主动向事务协调器上报已生成分支事务对应的回滚日志,或者,事务协调器在预设时间周期内查询是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志。此外,在步骤23,可以预先设定每项分支事务的执行时间阈值,根据分布式事务包含的每项分支事务的执行时间阈值来确定上述预设时间周期,例如,将分布式事务包含的每项分支事务的执行时间阈值求和,将求和的结果作为上述预设时间周期。分支事务与执行时间阈值的对应关系可以如表一所示。
表一
分支事务标识 执行时间阈值
分支事务1 1秒
分支事务2 2秒
分支事务3 1秒
参照表一,当分布式事务包含分支事务1、分支事务2和分支事务3时,上述预设时间周期可以为4秒。
可以理解的是,上述预设时间周期的确定方法仅为示例,实际中也可以直接根据分布式事务的类型预先设定上述预设时间周期,在此不做赘述。
最后在步骤24,如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。可以理解的是,如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,说明所述部分分支事务没有提交成功或所述部分分支事务已经发生回滚。本说明书实施例中,根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚,从而保证分布式事务的一致性。
在一个示例中,如果在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则可以无需再做任何操作,或者确定所述分布式事务整体提交成功。
在一个示例中,如果在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
通过本说明书实施例提供的方法,首先拦截每个参与者在执行分支事务时对数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作,然后根据提交分支事务的操作生成回滚日志,回滚日志包括提交分支事务的操作的撤销操作信息,接着在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的回滚日志,如果在预设时间周期内未监测到所述多项分支事务中部分分支事务对应的回滚日志,则根据部分分支事务以外的其他分支事务对应的回滚日志执行所述分布式事务的整体回滚,从而在业务系统无感知的情况下实现分布式事务整体一致性。
根据另一方面的实施例,还提供一种处理分布式事务的装置,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务。图3示出根据一个实施例的处理分布式事务的装置的示意性框图。如图3所示,该装置300包括:
拦截单元31,用于拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;
生成单元32,用于根据所述拦截单元31拦截的所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;
监测单元33,用于在预设时间周期内监测所述生成单元32是否已生成所述多项分支事务中每项分支事务对应的所述回滚日志;
执行单元34,用于如果所述监测单元33在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。
在一个示例中,所述执行单元34,还用于如果所述监测单元33在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则确定所述分布式事务整体提交成功。
在一个示例中,所述执行单元34,还用于如果所述监测单元33在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
在一个示例中,所述拦截单元31,具体用于通过预先在所述多个数据源中的每个数据源中设置的拦截器拦截每个参与者在执行所述分支事务时对所述数据源的数据操作。
在一个示例中,所述生成单元32,具体用于根据所述数据操作生成操作日志,所述操作日志包括所述数据操作的执行操作信息;根据所述操作日志生成所述回滚日志,所述回滚日志包括所述数据操作的撤销操作信息,所述执行操作信息用于指示的操作与所述撤销操作信息用于指示的操作为两种相反的操作。
在一个示例中,所述数据操作包括插入或更新。
通过本说明书实施例提供的装置,首先由拦截单元31拦截每个参与者在执行分支事务时对数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作,然后生成单元32根据提交分支事务的操作生成回滚日志,回滚日志包括提交分支事务的操作的撤销操作信息,接着监测单元33在预设时间周期内监测是否已生成所述多项分支事务中每项分支事务对应的回滚日志,如果在预设时间周期内未监测到所述多项分支事务中部分分支事务对应的回滚日志,则执行单元34根据部分分支事务以外的其他分支事务对应的回滚日志执行所述分布式事务的整体回滚,从而在业务系统无感知的情况下实现分布式事务整体一致性。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (14)

1.一种处理分布式事务的方法,其特征在于,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,所述方法由事务协调者执行,包括:
拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;
根据所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;
在预设时间周期内监测是否已生成多项分支事务中每项分支事务对应的所述回滚日志;
如果在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则确定所述分布式事务整体提交成功。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
4.如权利要求1所述的方法,其特征在于,所述拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,包括:
通过预先在所述多个数据源中的每个数据源中设置的拦截器拦截每个参与者在执行所述分支事务时对所述数据源的数据操作。
5.如权利要求1所述的方法,其特征在于,所述根据所述数据操作生成回滚日志,包括:
根据所述数据操作生成操作日志,所述操作日志包括所述数据操作的执行操作信息;
根据所述操作日志生成所述回滚日志,所述回滚日志包括所述数据操作的撤销操作信息,所述执行操作信息用于指示的操作与所述撤销操作信息用于指示的操作为两种相反的操作。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述数据操作包括插入或更新。
7.一种处理分布式事务的装置,其特征在于,所述分布式事务涉及多个参与者对多个数据源的数据操作,其中每个参与者对其对应的数据源的数据操作构成分支事务,所述装置设置于事务协调者,包括:
拦截单元,用于拦截每个参与者在执行所述分支事务时对所述数据源的数据操作,所述数据操作包括提交分支事务的操作或回滚分支事务的操作;
生成单元,用于根据所述拦截单元拦截的所述提交分支事务的操作生成回滚日志,所述回滚日志包括所述提交分支事务的操作的撤销操作信息;
监测单元,用于在预设时间周期内监测所述生成单元是否已生成多项分支事务中每项分支事务对应的所述回滚日志;
执行单元,用于如果所述监测单元在所述预设时间周期内未监测到所述多项分支事务中部分分支事务对应的所述回滚日志,则根据所述部分分支事务以外的其他分支事务对应的所述回滚日志执行所述分布式事务的整体回滚。
8.如权利要求7所述的装置,其特征在于,所述执行单元,还用于如果所述监测单元在所述预设时间周期内监测到所述多项分支事务中每项分支事务对应的所述回滚日志,则确定所述分布式事务整体提交成功。
9.如权利要求7所述的装置,其特征在于,所述执行单元,还用于如果所述监测单元在所述预设时间周期内未监测到所述多项分支事务中任一项分支事务对应的所述回滚日志,则确定所述分布式事务整体回滚成功。
10.如权利要求7所述的装置,其特征在于,所述拦截单元,具体用于通过预先在所述多个数据源中的每个数据源中设置的拦截器拦截每个参与者在执行所述分支事务时对所述数据源的数据操作。
11.如权利要求7所述的装置,其特征在于,所述生成单元,具体用于根据所述数据操作生成操作日志,所述操作日志包括所述数据操作的执行操作信息;根据所述操作日志生成所述回滚日志,所述回滚日志包括所述数据操作的撤销操作信息,所述执行操作信息用于指示的操作与所述撤销操作信息用于指示的操作为两种相反的操作。
12.如权利要求7至11中任一项所述的装置,其特征在于,所述数据操作包括插入或更新。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-6中任一项的所述的方法。
CN201810688740.7A 2018-06-28 2018-06-28 处理分布式事务的方法和装置 Active CN108845866B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810688740.7A CN108845866B (zh) 2018-06-28 2018-06-28 处理分布式事务的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810688740.7A CN108845866B (zh) 2018-06-28 2018-06-28 处理分布式事务的方法和装置

Publications (2)

Publication Number Publication Date
CN108845866A CN108845866A (zh) 2018-11-20
CN108845866B true CN108845866B (zh) 2021-06-29

Family

ID=64200697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810688740.7A Active CN108845866B (zh) 2018-06-28 2018-06-28 处理分布式事务的方法和装置

Country Status (1)

Country Link
CN (1) CN108845866B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109819023B (zh) * 2018-12-29 2021-09-14 杭州励飞软件技术有限公司 分布式事务处理方法及相关产品
CN110032428B (zh) * 2019-02-21 2023-06-27 创新先进技术有限公司 分布式事务的执行方法和装置
CN110083439B (zh) * 2019-05-23 2021-10-01 北京奥鹏远程教育中心有限公司 分布式事务系统
CN113296896B (zh) * 2020-06-09 2022-05-06 阿里巴巴集团控股有限公司 分布式事务处理方法、装置及设备
CN111695970A (zh) * 2020-06-11 2020-09-22 支付宝(杭州)信息技术有限公司 一种订单处理方法和系统
CN112085478A (zh) * 2020-09-17 2020-12-15 国网冀北电力有限公司计量中心 电力系统内外网穿透组合式营销现场核查系统及方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884327A (en) * 1996-09-25 1999-03-16 International Business Machines Corporation System, method and program for performing two-phase commit with a coordinator that performs no logging
CN102081611A (zh) * 2009-11-26 2011-06-01 中兴通讯股份有限公司 一种主、备网管系统数据库同步的实现方法及装置
CN103995868A (zh) * 2014-05-20 2014-08-20 科大国创软件股份有限公司 面向分布式系统的全局事务管理器及事务处理方法
CN105446993A (zh) * 2014-07-10 2016-03-30 阿里巴巴集团控股有限公司 跨库事务处理方法及装置
CN105760283A (zh) * 2014-12-18 2016-07-13 阿里巴巴集团控股有限公司 一种日志输出方法和装置
CN105988862A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 分布式事务处理方法及装置
CN106033439A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN106168915A (zh) * 2016-04-25 2016-11-30 云南电网有限责任公司昆明供电局 分布式系统架构数据处理一致性保障方法
CN106557514A (zh) * 2015-09-29 2017-04-05 中兴通讯股份有限公司 一种分布式事务回滚方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884327A (en) * 1996-09-25 1999-03-16 International Business Machines Corporation System, method and program for performing two-phase commit with a coordinator that performs no logging
CN102081611A (zh) * 2009-11-26 2011-06-01 中兴通讯股份有限公司 一种主、备网管系统数据库同步的实现方法及装置
CN103995868A (zh) * 2014-05-20 2014-08-20 科大国创软件股份有限公司 面向分布式系统的全局事务管理器及事务处理方法
CN105446993A (zh) * 2014-07-10 2016-03-30 阿里巴巴集团控股有限公司 跨库事务处理方法及装置
CN105760283A (zh) * 2014-12-18 2016-07-13 阿里巴巴集团控股有限公司 一种日志输出方法和装置
CN105988862A (zh) * 2015-02-04 2016-10-05 阿里巴巴集团控股有限公司 分布式事务处理方法及装置
CN106033439A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN106557514A (zh) * 2015-09-29 2017-04-05 中兴通讯股份有限公司 一种分布式事务回滚方法及装置
CN106168915A (zh) * 2016-04-25 2016-11-30 云南电网有限责任公司昆明供电局 分布式系统架构数据处理一致性保障方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Research on application of block chain in distributed energy transaction;Y. Xu, M. Wu, Y. Lv and S. Zhai;《2017 IEEE 3rd Information Technology and Mechatronics Engineering Conference》;20170805;全文 *
分布式数据库在银行卡收单专业化服务系统中的应用研究;郭志杰;《信息科技辑》;20140515(第5期);全文 *

Also Published As

Publication number Publication date
CN108845866A (zh) 2018-11-20

Similar Documents

Publication Publication Date Title
CN108845866B (zh) 处理分布式事务的方法和装置
CN108459919B (zh) 一种分布式事务处理方法及装置
US10942823B2 (en) Transaction processing system, recovery subsystem and method for operating a recovery subsystem
US10250693B2 (en) Idempotence for database transactions
US7640249B2 (en) System and method for transactional session management
US8924346B2 (en) Idempotence for database transactions
CN110032428B (zh) 分布式事务的执行方法和装置
US11720545B2 (en) Optimization of chaincode statements
KR101278818B1 (ko) 트랜잭션 일관 및 문제 상태
US6785722B2 (en) Apparatus, methods, and computer program products for transactional support of network management operations
CN104793988A (zh) 跨数据库分布式事务的实现方法和装置
US20180025049A1 (en) Server and Data Processing Method
JPH1069418A (ja) 階層化トランザクション処理方法
US10956203B2 (en) Quality assurance for a context driven hybrid transaction processing system
WO1993018454A1 (en) Distributed transaction processing system
CN106445644A (zh) 基于改进的一阶段提交的分布式事务的处理方法和装置
US7454761B1 (en) Method and apparatus for correlating output of distributed processes
CN112148436B (zh) 去中心化的tcc事务管理方法、装置、设备及系统
CN114253673A (zh) 一种分布式系统的事务处理方法和事务处理装置
US7284018B1 (en) Logless transaction coordination
Nasirifard et al. OrderlessChain: A CRDT-based BFT Coordination-free Blockchain Without Global Order of Transactions
US20180268020A1 (en) Transaction processing system and transaction control method
CN114255127A (zh) 一种分布式系统的账务一致性处理方法及装置
CN114579260A (zh) 一种事务处理方法及系统
US11853448B1 (en) Applying transactional locks in distributed transactions

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
TA01 Transfer of patent application right

Effective date of registration: 20200930

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200930

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240208

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: United Kingdom

TR01 Transfer of patent right