CN107797850B - 分布式事务处理的方法、装置与系统 - Google Patents

分布式事务处理的方法、装置与系统 Download PDF

Info

Publication number
CN107797850B
CN107797850B CN201610790099.9A CN201610790099A CN107797850B CN 107797850 B CN107797850 B CN 107797850B CN 201610790099 A CN201610790099 A CN 201610790099A CN 107797850 B CN107797850 B CN 107797850B
Authority
CN
China
Prior art keywords
transaction
global
transaction log
branch
modification item
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
CN201610790099.9A
Other languages
English (en)
Other versions
CN107797850A (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610790099.9A priority Critical patent/CN107797850B/zh
Publication of CN107797850A publication Critical patent/CN107797850A/zh
Application granted granted Critical
Publication of CN107797850B publication Critical patent/CN107797850B/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种分布式事务处理的方法、装置与系统,方法包括:接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;判断所述修改项是否被占用;若判断结果为否,则形成所述第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志。根据本发明,能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销。

Description

分布式事务处理的方法、装置与系统
技术领域
本发明涉及互联网技术,尤其涉及一种分布式事务处理的方法、装置与系统。
背景技术
所谓事务,是数据库中一个操作单元,在该操作单元中所有的操作要么都成功,要么都失败,执行结果不可逆转,事务具备四个基本的特性:原子性、一致性、隔离性、持久性,也简称为事务的ACID特性。随着互联网的发展和用户需求的不断变化,分布式事务系统的应用越来越广泛。
分布式事务系统通常包含客户端、资源管理器、事务协调器几个角色,分别位于分布式系统的不同节点之上。其中,事务协调器负责协调整个事务从开始到完成的所有相关处理流程,是系统核心角色,其可用性决定了分布式事务整体的可用性。为了避免因为一个事务协调器不可用而造成其负责的事务无法进行下去,需要事务协调器的高可用性。
在分布式系统中,不同事务并发修改同一数据而发生冲突是必须解决的问题。现有技术中,为了解决数据修改会发生冲突的问题,常用办法是为每张客户端的数据表创建一个影子表,把事务协调器修改的数据插入到影子表,并且在分布式事务完成(提交或回滚)后删除插入到影子表的数据。如果数据插入影子表成功,则明加锁成功,如果要插入影子表的数据已经在影子表中存在,则表明数据修改冲突,插入操作失败,即加锁失败,从而避免了数据冲突。
举例来说,假设有两个分布式事务Tx1和Tx2。Tx1和Tx2分别代表转账操作的执行终端,Tx1对应的转账操作是从A账户转给B账户200元,Tx2对应的转账操作是从B账户转给C账户100元。Tx1修改资源管理器对应的数据库中的DB_A的表Table_A的主键为1的一行记录(A账户减200),以及资源管理器对应的数据库DB_B的表Table_B的主键为2的一行记录(B账户加200);Tx2修改资源管理器对应的数据库DB_B的表Table_B的主键为2的一行记录(B账户减100),以及资源管理器对应的数据库DB_C的表Table_C的主键为3的一行记录(C账户加100)。如果两个事务发生以下执行顺序:
1)Tx1 begin
2)Tx2 begin
3)Tx1 update DB_A/Table_A/1
4)Tx2 update DB_B/Table_B/2
5)Tx1 update DB_B/Table_B/2
6)Tx2 update DB_C/Table_C/3
7)Tx1 commit
8)Tx2 commit
显然,两个事务都修改了DB_B的表Table_B的主键为2这行数据,也就是两个事务并发修改了B账户金额。如果不加控制就会造成数据冲突,因此,现有技术中采用影子表方案以防止数据冲突。具体地:
Tx1、Tx2先后开启;
Tx1修改DB_A时,在Table_A的影子表Table_A_temp插入一行记录,主键为1,插入成功;
Tx2修改DB_B时,在Table_B的影子表Table_B_temp插入一行记录,主键为2,插入成功;
Tx1修改DB_B时,在Table_B的影子表Table_B_temp插入一行记录,主键为2,由于记录已存在而插入失败,接下来,Tx1会重试加锁直到成功;
Tx2修改DB_C时,在Table_C的影子表Table_C_temp插入一行记录,主键为3,插入成功;
Tx2提交,删除Table_B_temp的主键为2的记录和Table_C_temp的主键为3的记录,完成放锁;
Tx1在Tx2放锁之后重试加锁成功,在Table_B_temp插入主键为2的一行记录;
Tx1提交,删除Table_A_temp的主键为1的记录和Table_B_temp的主键为2的记录,完成放锁。
从以上举例可以看出,通过往影子表插入数据而实现了加锁,避免了数据冲突。但是,上面分析的影子表方案在资源管理器对应的数据库中加锁,这样,引入了很多额外的数据库操作,例如影子表中插入、删除数据。特别是,即使没有数据冲突(实际业务场景中,并发修改同一行记录仅占很小比例),这些额外的数据库操作也是不可避免的,从而大大影响了系统吞吐。另外,影子表方案也给运维带来很多工作量,每张表都要创建影子表,表结构的变更也需要同步变更影子表的结构,造成资源管理器的开销非常大。
发明内容
本发明提供一种分布式事务处理的方法、装置与系统,以解决建立和维护影子表开销较大的问题。
一个方面,本发明提供一种分布式事务处理的系统,包括
终端,用于向分布式事务协调器发送目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
分布式事务协调器,用于接收所述分支请求,并判断所述修改项是否被占用,若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志。
另一个方面,本发明提供一种分布式事务处理的方法,包括:
接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
判断所述修改项是否被占用;
若判断结果为否,则形成所述第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志。
另一个方面,本发明提供一种分布式事务处理的装置,包括:
第一接收模块,用于接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
第一判断模块,用于判断所述修改项是否被占用,若判断结果为否,则触发第一形成模块;
所述第一形成模块,用于形成所述第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志。
再一个方面,本发明提供一种分布式事务处理的装置,包括:输入设备、处理器,
所述输入设备用于接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
所述处理器用于判断所述修改项是否被占用,若判断结果为否,则形成所述第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志。
又一个方面,本发明提供一种分布式事务处理的系统,包括:
终端,用于向分布式事务协调器发送支付事务的分支请求,所述支付事务包括依次排序的各分支事务,所述分支请求中包括所述目标事务的修改项的信息,各所述分支事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
分布式事务协调器,用于接收所述分支请求,并判断所述修改项是否被占用,若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志。
另一个方面,本发明还提供另外一种分布式事务处理的方法,包括:
接收终端发送的支付事务的分支请求,所述支付事务包括依次排序的各分支事务,所述分支请求中包括所述目标事务的修改项的信息,各所述分支事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
判断所述修改项是否被占用;
若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志。
再一个方面,本发明还提供另外一种分布式事务处理的装置,包括:
第二接收模块,用于接收终端发送的支付事务的分支请求,所述支付事务包括依次排序的各分支事务,所述分支请求中包括所述目标事务的修改项的信息,各所述分支事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
第二判断模块,用于判断所述修改项是否被占用,若判断结果为否,则触发第二形成模块;
第二形成模块,用于形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志。
根据本发明提供的分布式事务处理的方法、装置与系统,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种分布式事务处理的方法的流程示意图;
图2为本发明另一实施例提供的一种分布式事务处理的方法的流程示意图;
图3为本发明一实施例提供的一种分布式事务处理的装置的结构示意图;
图4为本发明一实施例提供的一种分布式事务处理的装置的结构示意图;
图5为本发明一实施例提供的设备硬件结构示意图;
图6为本发明一实施例提供的一种分布式事务处理的系统的结构示意图;
图7为本发明另一实施例提供的一种分布式事务处理的系统的结构示意图;
图8为本发明另一实施例提供的一种分布式事务处理的装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例日志表示在附图中。下面的描述涉及附图时,除非另有日志表示,不同附图中的相同数字日志表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代日志表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
为了清楚起见,首先说明本发明的分布式事务系统的架构。本发明的分布式事务系统的架构有两种方式,一种是将事务日志存储在事务协调器的内存中,另外一种是将事务日志存储在外设的数据库中。本发明中,全局事务指的是对于一次性操作多个资源管理器的事务。在全局事务中,某一个资源管理器有自己独立的任务,这些任务的集合作为这个资源管理器的分支任务。
第一种方式:将事务日志存储在事务协调器的内存中。
如图6所示,为根据本发明的分布式事务处理的系统的结构示意图。该分布式事务系统包括客户端701和/或软负载702、事务协调器和资源管理器705。
其中,客户端701位于用户侧,具体可以位于用户的各种终端上,例如手机、电脑上。用户通过客户端701发起目标事务的业务请求。该目标事务包括多个依次排序的分支事务,即该业务请求中可以包括多个子请求,例如目标事务的创建请求、各分支事务的分支请求,这些请求被依次发送到事务协调器。该客户端701可以是下文中所提到的终端。
软负载702用于向资源管理器转发业务请求。具体地,软负载按照预设规则从各事务协调器中选择一台来处理该业务请求,记为第一事务协调器703。
第一事务协调器703接收终端发送的第一目标事务的创建请求,并根据创建请求在第一事务协调器的内存中生成第一目标事务的全局事务日志,依次接收各分支事务的分支请求,并根据分支请求触发第一事务协调器和第二事务协调器在内存中生成各分支事务的分支事务日志,分支事务日志属于目标事务的全局事务日志。为了使第一事务协调器703在重启之后能够恢复目标事务的处理,可以在第一事务协调器703的内存中持久化所接收到的业务请求。
以下实施例中所描述的业务请求,可以仅包括目标事务的创建请求,也可以同时包括目标事务的创建请求和至少一个目标事务的分支事务的分支请求,创建请求与各分支事务的分支请求依次发送至事务协调器。
具体地,第一事务协调器703接收到业务请求后,首先根据目标事务的创建请求在第一事务协调器703的内存中创建目标事务的全局事务日志,并根据分支事务的分支请求在内存中生成分支事务日志,然后触发各分支事务对应的各资源管理器705执行分支事务。当各资源管理器705执行分支事务完成后,向该第一事务协调器703返回执行结果,第一事务协调器703根据执行结果修改对应的分支事务日志,并相应的修改全局事务日志,例如,若识别出各分支事务日志均记录执行成功,则全局事务日志记录成功,向客户端返回执行结果为成功。例如,目标事务向客户端701返回各执行结果,若所有分支事务日志执行结果均为成功,则客户端701向第一事务协调器703发送全局提交指令,第一事务协调器703根据该全局提交指令修改全局事务日志,接下来,第一事务协调器703根据全局提交指令依次删除各分支事务日志,并最后删除全局事务日志。若客户端701根据各执行结果判断出有异常,例如有一个分支事务执行不成功,则发出回滚指令,所有分支事务对应的资源管理器705根据第一事务协调器703转发的回滚指令需将程序或数据恢复到上一次正确状态的行为,相应地,第一事务协调器在各分支事务回滚操作完成之后也要删除各分支事务日志以及全局事务日志。此处,全局提交指令可以看作是删除指令。
本实施例中,第一事务协调器703在接收到目标事务的业务请求后,还要从第一事务协调器703所在的事务协调器集群中选择出第二事务协调器704,例如随机选取或者根据负载均衡方式选取,还可以根据其它预设规则选择出第二事务协调器704,并向第二事务协调器704发送业务请求,以在第二事务协调器704的的内存中做备份事务日志,并向终端发送第二事务协调器704的信息,这样当第一事务协调器703出现故障无法推进目标事务的完成时,终端可以通过第二事务协调器704来完成分支事务,以保证事务协调器的高可用。该第二事务协调器704所接受的创建请求、分支请求、资源管理器的执行结果均是第一事务协调器发送的。
通过将第一目标事务对应的事务日志存储在第一事务协调器的内存中,并在第二事务协调器的内存中备份该第一目标事务对应的事务日志,进而在第一事务协调器发生故障之后,可以通过第二事务协调器来完成第一目标事务,以实现事务协调器的高可用性。此外,由于将事务日志持久化在各事务协调器的内存中,无需通过网络在外部的数据库中生成事务日志并对事务日志进行操作,这样就不会受到数据库本身服务能力的限制以及网络的限制,在同等配置的条件下,事务协调器处理内存中的数据的速度远比在数据库中处理数据的速度快很多,这样能够加快事务的处理速度。
第二种方式:将事务日志存储在外设的数据库中。
如图7所示,为根据本发明的分布式事务处理的系统的结构示意图。该分布式事务系统包括客户端801和/或软负载802、事务协调器803、资源管理器805和外设的数据库806。
其中,客户端801位于用户侧,具体可以位于用户的各种终端上,例如手机、电脑上。用户通过客户端801发起目标事务的业务请求。该目标事务包括多个依次排序的分支事务,即该业务请求中可以包括多个子请求,例如目标事务的创建请求、各分支事务的分支请求,这些请求被依次发送到事务协调器。
软负载802用于向资源管理器转发业务请求。具体地,软负载按照预设规则从各事务协调器中选择一台来处理该业务请求,记为第一事务协调器803。
事务协调器803接收终端发送的目标事务的创建请求,在数据库806中生成目标事务的全局事务日志,并在接收到终端发送的目标事务的分支请求时,在数据库806中生成目标事务的分支事务日志,该分支事务日志属于全局事务日志。例如对分支事务进行创建,并向分支事务对应的资源管理器805发送分支事务以触发分支事务对应的资源管理器执行分支事务的内容,接收各资源管理器805返回的执行结果,并向客户端801发送执行结果,若客户端801判断无异常,则发出全局提交指令至事务协调器803,事务协调器修改全局事务日志,并接下来依次删除各分支事务日志和全局驶入日志。由于该集群中的各事务协调器均可以查询该外设的数据库806,因此,当第一事务协调器803出现故障时,可以有其它的事务协调器803通过查询该数据库806的目标事务对应的事务日志进而进一步推进目标事务的完成。
需指出的是,对于上述两种方式的分布式事务处理的方法,在识别出目标事务完成后,删除目标事务对应的所有日志,进而避免无用的事务日志对事务协调器内存空间的占用或者对数据库存储空间的占用。
实施例一
本实施例提供一种分布式事务处理的方法,用于对分布式事务进行处理。本实施例的执行主体为分布式事务处理的装置,该分布式事务处理的装置可以设置在事务协调器中。
如图1所示,为根据本实施例的分布式事务处理的方法的流程示意图。该方法包括:
步骤101,接收终端发送的目标事务的分支请求,分支请求中包括目标事务的修改项。
该目标事务可以是任何事务,具体可以包括多个分支事务。当用户想要完成目标事务时,可以首先通过终端向分布式事务处理的装置发送目标事务的创建请求。该创建请求用于分布式事务处理的装置创建目标事务的第一全局事务日志。接下来,接收到目标事务的分支请求,根据该分支请求创建分支事务日志。
本实施例的终端可以是用户将目标事务的创建请求发送至事务协调器时所经历的任何设备,例如位于用户侧的手机、电脑、IPad等。
本实施例中,目标事务的修改项的信息可以为将要修改的数据所在位置,例如位于哪一个数据库中哪一个表中的哪一个主键,主键(Primary Key)即主关键字,其是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
步骤102,判断修改项是否被占用。
判断主键是否被占用即判断是否有其他事务正在对修改项进行修改。
步骤103,若判断结果为否,则形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为目标事务的全局事务日志。
若修改项未被其他事务占用,则可以形成第一全局事务日志与修改项之间的映射关系。这样,分布式事务处理的装置再次接收到包括该修改项的目标事务时,就会获知该修改项已经被占用,进而能够避免修改冲突。
可选地,第一全局事务日志与修改项之间的映射关系可以存储在第一全局事务日志中,也可以在单独形成的映射关系表中进行存储,分布式事务处理的装置在判断修改项是否被占用的时候,查询相应位置的内容接口。该映射关系可以存储在事务协调器的内存中,以方便分布式事务处理的装置进行查询,也可以存储在事务协调器对应的外设数据库中,具体可以根据实际情况进行选择。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
实施例二
本实施例对上述实施例的分布式事务处理的方法做进一步补充说明。
如图2所示,为根据本实施例的分布式事务处理的方法的流程示意图。该方法包括:
步骤110,接收终端发送的目标事务的创建请求,并根据创建请求生成目标事务的第一全局事务日志,执行步骤111。
该目标事务可以是任何事务,具体可以包括多个分支事务。当用户想要完成目标事务时,可以首先通过终端向分布式事务处理的装置发送目标事务的创建请求。该创建请求用于分布式事务处理的装置创建目标事务的第一全局事务日志。分布式事务处理的装置持久化该创建请求,以在装置重启之后恢复日志。
本实施例的终端可以是用户将目标事务的创建请求发送至事务协调器时所经历的任何设备,例如位于用户侧的手机、电脑、IPad等。
步骤111,接收终端发送的目标事务的分支请求,分支请求中包括目标事务的修改项的信息,执行步骤112。
分布式事务处理的装置接收到目标事务的分支请求,根据该分支请求创建分支事务日志。分布式事务处理的装置持久化该分支请求,以在装置重启之后恢复日志。
本实施例中,目标事务的修改项的信息可以为将要修改的数据所在位置,例如位于哪一个数据库中哪一个表中的哪一个主键,主键(Primary Key)即主关键字,其是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
步骤112,判断修改项是否对应有第二全局事务日志,若判断结果为否,则执行步骤114,否则执行步骤113。
该第二全局事务日志是一个事务对应的全局事务日志。
判断修改项是否有对应的第二全局事务日志的方式根据分布式事务处理的系统的结构的不同而不同。判断修改项是否对应有第二全局事务日志,就是判断该修改项是否被其它事务加锁。
对于将事务日志存储在事务协调器的内存中这种方式,首先分布式事务处理的装置需要在其所在的事务协调器的内存中查询是否该修改项是否对应有第二全局事务日志,若查询结果为否,则需要在同集群的其他协调器的内存中查询是否有该修改项对应的第二全局事务日志,具体地,可以向同集群的其他事务协调器发送用于询问是否有修改项对应的第二全局事务日志的询问消息,该询问消息中包括修改项的信息,若接收到其他所有事务协调器分局询问消息返回的应答结果均为否,则确定其他事务协调器中均没有该修改项对应的第二全局事务日志,即该修改项未被其他事务占用,则该步骤的判断结果为否。
若在自己的事务协调器的内存中查询出该修改项有对应的第二全局事务日志或者在同集群的其他事务协调器的内存中查询出该修改项有对应的第二全局事务日志,则该步骤的判断结果为是。
对于将事务日志存储在外设的数据库中的这种分布式事务处理的系统,由于同一集群中所有的事务协调器共用该数据库,因此,若在该数据库中查询出该修改项有对应的第二全局事务日志,则该步骤的判断结果为是,否则该步骤的判断结果为否。
步骤113,确定第二全局事务日志的标识是否与第一全局事务日志的标识相同,若确定结果为是,则执行步骤115,否则返回执行步骤112,直至判断结果为否。
由于一个目标事务的执行时间非常短暂,很有可能,一个修改项对应的目标事务很快就执行完毕,并被删除相应的映射关系,此时,该修改项就可以被修改了,因此,可以通过重复执行查询操作来等到该修改项能够被修改的时机。
若第二全局事务日志的标识与第一全局事务日志的标识相同,则说明该修改项正在被目标事务的其他分支事务占用。
若重复执行步骤112的时间超过预设时间阈值或者次数超过预设次数,则停止执行步骤112,并向终端发送用于表示分支事务执行失败的信息。这样可以避免无限次重复执行步骤112,造成响应时间过长,用户体验不好。
步骤114,形成第一全局事务日志与修改项之间的映射关系,执行步骤115。
该映射关系可以存储在全局事务日志中,也可以存储在单独形成的映射关系表中,需提可以根据实际情况进行选择。
在形成第一全局事务日志与修改项之间的映射关系后,还包括触发分支事务对应的资源管理器执行分支事务,并修改所对应的分支事务日志。
步骤115,触发执行分支事务的操作。
具体地,分布式事务处理的装置可以触发该分支事务对应的资源管理器执行该分支操作。
可选地,若识别出目标事务完成,则释放第一全局事务日志与修改项之间的映射关系。事务协调器接收各资源管理器针对分支事务的执行结果,并向向终端发送各执行结果,若接收到终端返回的全局提交命令,事务协调器可以根据全局提交指令删除该目标事务的所有事务日志和修改项所对应的映射关系。例如,事务协调器可以对分支事务分别进行删除操作,然后再删除全局事务日志。这样,能够避免过多无用的事务日志占用内存的空间,节省各事务协调器中内存空间,而且能够让其他事务对该修改项进行修改。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
实施例三
本实施例对前述实施例的方法具体举例说明。
假设有两个分布式事务Tx1和Tx2。Tx1和Tx2分别代表转账操作的执行终端,Tx1对应的转账操作是从A账户转给B账户200元,并扣除手续费2元钱,Tx2对应的转账操作是从B账户转给C账户100元。Tx1有3个分支事务,分别是A账户减少200元,B账户增加200元,A账户减少3元,Tx1需修改资源管理器对应的数据库中的DB_A的表Table_A的主键为1的一行记录(A账户减200元),资源管理器对应的数据库DB_B的表Table_B的主键为2的一行记录(B账户加200元),以及资源管理器对应的数据库中的DB_A的表Table_A的主键为1的一行记录(A账户减2元);Tx2有2个分支事务,分别B账户减少100元,C账户增加100元,需修改资源管理器对应的数据库DB_B的表Table_B的主键为2的一行记录(B账户减100元),以及资源管理器对应的数据库DB_C的表Table_C的主键为3的一行记录(C账户加100元)。如果两个事务发生以下执行顺序:
Tx1通过事务协调器生成第一全局事务日志;
Tx1修改DB_A时,向事务协调器发送分支请求,要为修改项DB_A/Table_A/1加锁。事务协调器发现DB_A/Table_A/1没有对应的第二全局事务日志,则建立该修改项DB_A/Table_A/1与第一全局事务日志的映射关系;
Tx2通过事务协调器生成第二全局事务日志;
Tx2修改DB_B时,向事务协调器发送分支请求,要为修改项DB_B/Table_B/2加锁。事务协调器发现DB_B/Table_B/2没有对应的第二全局事务日志,则建立该修改项DB_A/Table_A/1与第二全局事务日志的映射关系;
Tx1修改DB_B时,向事务协调器发送分支请求,要为修改项DB_B/Table_B/2加锁。事务协调器发现DB_B/Table_B/2对应有第二全局事务日志,且该第二全局事务日志的标识与第一全局事务日志不同,则事务协调器重复执行查询DB_B/Table_B/2对应有第二全局事务日志的操作,直至查询结果为否;
Tx2修改DB_C时,向事务协调器发送分支请求,要为修改项DB_C/Table_C/3加锁。事务协调器发现DB_C/Table_C/3没有对应的全局事务日志,则建立该修改项DB_C/Table_C/3与第二全局事务日志的映射关系;
Tx2执行完毕,事务协调器解除DB_B/Table_B/2、DB_C/Table_C/3与第二全局事务日志的映射关系,完成放锁;
Tx1查询到DB_B/Table_B/2未对应有第二全局事务日志,事务协调器建立DB_B/Table_B/2与第一全局事务日志的映射关系;
Tx1执行完毕,事务协调器解除DB_A/Table_A/1、DB_B/Table_B/2与第一全局事务日志的,完成放锁。
实施例四
本实施例提供一种分布式事务处理的装置,用于执行前述分布式事务处理的方法。该分布式事务处理的装置可以设置在事务协调器中。
如图3所示,为根据本实施例的分布式事务处理的装置的结构示意图。该装置包括第一接收模块301、第一判断模块302和第一形成模块303。
其中,第一接收模块301用于接收终端发送的目标事务的分支请求,分支请求中包括目标事务的修改项的信息;第一判断模块302用于判断修改项是否被占用,若判断结果为否,则触发第一形成模块303;第一形成模块303用于形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为目标事务的全局事务日志。
可选地,第一接收模块301还用于持久化分支请求。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
实施例五
本实施例对实施例四的分布式事务处理的装置做进一步补充说明。
本实施例中,第一判断模块具体用于:
判断修改项是否对应有第二全局事务日志。
可选地,第一判断模块还具体用于:
若判断结果为是,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;
若确定结果为相同,则触发执行分支事务的操作。
可选地,第一判断模块还具体用于:
若确定结果不相同,则重复执行判断修改项是否被占用的操作,直至判断结果为否,触发第一形成模块。
可选地,第一判断模块还具体用于:
若重复执行判断修改项是否被占用的操作的时间超过预设时间阈值或者次数超过预设次数,则停止判断修改项是否被占用的操作,并向终端发送用于表示分支事务执行失败的信息。
可选地,如图4所示,本实施例的装置还包括生成模块401,生成模块401用于:
接收终端发送的目标事务的创建请求;
根据创建请求生成目标事务的第一全局事务日志。
可选地,分支事务日志和第一全局事务日志位于事务协调器的内存中,或者分支事务日志和第一全局事务日志位于事务协调器的外置存储器中。
可选地,本实施例的装置还包括释放模块402,释放模402用于:
接收针对各分支事务的执行结果;
向终端发送各执行结果,若接收到终端返回的全局提交命令。
可选地,本实施例的装置还包括删除模块403,删除模块403用于:
若接收到终端返回的全局提交命令,则删除目标事务对应的所有日志。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
实施例六
本实施例提供一种另一种分布式事务处理的装置,用于执行前述实施例的方法。该装置可以设置在事务协调器中。
该装置包括输入设备和处理器,其中,输入设备用于接收终端发送的目标事务的分支请求,分支请求中包括目标事务的修改项的信息;处理器用于判断修改项是否被占用,若判断结果为否,则形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为目标事务的全局事务日志。
参照图5,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电力组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制装置600的整体操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在设备600的操作。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件606为装置600的各种组件提供电力。电力组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
多媒体组件608包括在装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当装置600处于操作模式,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。在一些实施例中,该传感器组件614还可以包括磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
由上可知,在6实施例中所涉及的通信组件616、音频组件610以及输入/输出接口612均可以作为本实施例中的输入设备的实现方式。
可选地,本实施例的输入设备和处理器还可以对应执行前述任何实施例的步骤,在此不再赘述。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
实施例七
本实施例提供一种分布式事务处理的系统,该系统包括前述任意实施例的终端和分布式事务协调器。
其中,终端用于向分布式事务协调器发送目标事务的分支请求,分支请求中包括目标事务的修改项的信息;分布式事务协调器用于接收分支请求,并判断修改项是否被占用,若判断结果为否,则形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为目标事务的全局事务日志。
可选地,分布式事务协调器具体用于:
判断修改项是否对应有第二全局事务日志;
若判断出修改项未对应有第二全局事务日志,则判断出修改项未被占用。
可选地,分布式事务协调器还用于:
若判断出修改项对应有第二全局事务日志,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;
若确定结果为相同,则触发执行分支事务的操作。
可选地,分布式事务协调器还用于:
若确定结果不相同,则重复执行判断修改项是否被占用的操作,直至判断结果为否,执行形成第一全局事务日志与修改项之间的映射关系的操作。
可选地,分布式事务协调器还用于:
若重复执行判断修改项是否被占用的操作的时间超过预设时间阈值或者次数超过预设次数,则停止判断修改项是否被占用的操作,并向终端发送用于表示分支事务执行失败的信息。
可选地,终端还用于:向分布式事务协调器发送目标事务的创建请求;
分布式事务协调器还用于:根据创建请求生成目标事务的第一全局事务日志。
可选地,分支事务日志和第一全局事务日志位于分布式事务协调器的内存中。
可选地,分支事务日志和第一全局事务日志位于分布式事务协调器的外置存储器中。
可选地,分布式事务协调器还用于:
接收针对各分支事务的执行结果,并向终端发送各执行结果,若接收到终端返回的全局提交命令,则释放第一全局事务日志与修改项之间的映射关系;
终端还用于:接收分布式事务协调器发送的各执行结果,并根据各执行结果判断是否返回全局提交命令。
可选地,分布式事务协调器还用于:
若接收到终端返回的全局提交命令,则删除目标事务对应的所有日志。
可选地,分布式事务协调器还用于:持久化分支请求。
更为具体地,实施例的目标事务可以是支付事务,支付事务可以有多个,各各支付事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加预设金额的第二分支事务。
相应地,设置在分布式事务协调器分布式事务处理的装置所执行的方法包括:
接收终端发送的支付事务的分支请求,分支请求中包括支付事务的修改项的信息,各支付事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加预设金额的第二分支事务;
判断修改项是否被占用;
若判断结果为否,则形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为支付事务的全局事务日志。
其中,判断修改项是否被占用包括:
判断修改项是否对应有第二全局事务日志;
若判断出修改项未对应有第二全局事务日志,则判断出修改项未被占用。
相应地,如图8所示,如图分布式事务处理的装置包括第二接收模块901、第二判断模块902和第二形成模块903。
其中,第二接收模块901用于接收终端发送的支付事务的分支请求,支付事务包括依次排序的各分支事务,分支请求中包括目标事务的修改项的信息,各分支事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加预设金额的第二分支事务;第二判断模块902用于判断修改项是否被占用,若判断结果为否,则触发第二形成模块903;第二形成模块903用于形成第一全局事务日志与修改项之间的映射关系,第一全局事务日志为支付事务的全局事务日志。
根据本实施例,通过建立修改项与第一全局事务日志之间的映射关系,就能够避免修改项的修改冲突,实现对修改项的加锁。由于关于目标事务的第一全局事务日志是分布式事务协调器一定会生成的,因此,只需要再建立修改项与第一全局事务日志的映射关系即可,进而能够避免在资源管理器对应的数据库中建立影子表以及维护影子表的开销,即使资源管理器对应的数据库中的表的结构发生了变化,也不会出现现有技术中需要同步变更影子表结构的问题,开销较小。
本发明还提供一种事务协调器,包括前述任一实施例的分布式事务处理的装置。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (24)

1.一种分布式事务处理的系统,其特征在于,包括
终端,用于向分布式事务协调器发送目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
分布式事务协调器,用于接收所述分支请求,并判断所述修改项是否被占用,若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志;
所述分布式事务协调器具体用于:
判断所述修改项是否对应有第二全局事务日志;
若判断出所述修改项对应有第二全局事务日志,则确定所述第二全局事务日志的标识是否与所述第一全局事务日志的标识相同;
若确定结果为相同,则触发执行分支事务的操作;
所述分布式事务协调器还用于:
若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
2.根据权利要求1所述的系统,其特征在于,所述分布式事务协调器具体用于:
若判断出所述修改项未对应有第二全局事务日志,则判断出所述修改项未被占用。
3.根据权利要求1所述的系统,其特征在于,所述分布式事务协调器还用于:
若重复执行判断所述修改项是否被占用的操作的时间超过预设时间阈值或者次数超过预设次数,则停止所述判断所述修改项是否被占用的操作,并向终端发送用于表示所述分支事务执行失败的信息。
4.根据权利要求1-3中任一项所述的系统,其特征在于,
所述终端还用于:向所述分布式事务协调器发送目标事务的创建请求;
所述分布式事务协调器还用于:根据所述创建请求生成所述目标事务的第一全局事务日志。
5.根据权利要求4所述的系统,其特征在于,分支事务日志和所述第一全局事务日志位于所述分布式事务协调器的内存中。
6.根据权利要求4所述的系统,其特征在于,分支事务日志和所述第一全局事务日志位于所述分布式事务协调器的外置存储器中。
7.根据权利要求1-3中任一项所述的系统,其特征在于,所述分布式事务协调器还用于:
接收针对各分支事务的执行结果,并向所述终端发送各执行结果,若接收到所述终端返回的全局提交命令,则释放所述第一全局事务日志与所述修改项之间的映射关系;
所述终端还用于:接收所述分布式事务协调器发送的各执行结果,并根据各所述执行结果判断是否返回全局提交命令。
8.根据权利要求1-3中任一项所述的系统,其特征在于,所述分布式事务协调器还用于:
若接收到所述终端返回的全局提交命令,则删除所述目标事务对应的所有日志。
9.根据权利要求1-3中任一项所述的系统,其特征在于,所述分布式事务协调器还用于:持久化所述分支请求。
10.一种分布式事务处理的方法,其特征在于,包括:
接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
判断所述修改项是否被占用;
若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志;
所述判断所述修改项是否被占用包括:
判断所述修改项是否对应有第二全局事务日志;
若判断出所述修改项对应有第二全局事务日志,则确定所述第二全局事务日志的标识是否与所述第一全局事务日志的标识相同;
若确定结果为相同,则触发执行分支事务的操作;
若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
11.根据权利要求10所述的方法,其特征在于,所述判断所述修改项是否被占用包括:
若判断出所述修改项未对应有第二全局事务日志,则判断出所述修改项未被占用。
12.根据权利要求10所述的方法,其特征在于,还包括:
若重复执行判断所述修改项是否被占用的操作的时间超过预设时间阈值或者次数超过预设次数,则停止所述判断所述修改项是否被占用的操作,并向终端发送用于表示所述分支事务执行失败的信息。
13.根据权利要求10-12中任一项所述的方法,其特征在于,在接收终端发送的目标事务的分支请求之前,还包括:
接收所述终端发送的目标事务的创建请求;
根据所述创建请求生成所述目标事务的第一全局事务日志。
14.根据权利要求13所述的方法,其特征在于,分支事务日志和所述第一全局事务日志位于事务协调器的内存中。
15.根据权利要求13所述的方法,其特征在于,分支事务日志和所述第一全局事务日志位于事务协调器的外置存储器中。
16.根据权利要求10-12中任一项所述的方法,其特征在于,在形成第一全局事务日志与所述修改项之间的映射关系之后,还包括:
接收针对各分支事务的执行结果;
向所述终端发送各执行结果,若接收到所述终端返回的全局提交命令,则释放所述第一全局事务日志与所述修改项之间的映射关系。
17.根据权利要求16所述的方法,其特征在于,还包括:
若接收到所述终端返回的全局提交命令,则删除所述目标事务对应的所有日志。
18.根据权利要求10-12中任一项所述的方法,其特征在于,还包括:持久化所述分支请求。
19.一种分布式事务处理的装置,其特征在于,包括:
第一接收模块,用于接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
第一判断模块,用于判断所述修改项是否被占用,若判断结果为否,则触发第一形成模块;
所述第一形成模块,用于形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志;
第一判断模块,具体用于判断修改项是否对应有第二全局事务日志;若判断结果为是,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;若确定结果为相同,则触发执行分支事务的操作;若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
20.一种分布式事务处理的装置,其特征在于,包括:输入设备、处理器,
所述输入设备用于接收终端发送的目标事务的分支请求,所述分支请求中包括所述目标事务的修改项的信息;
所述处理器用于判断所述修改项是否被占用,若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述目标事务的全局事务日志;
所述处理器具体用于判断修改项是否对应有第二全局事务日志;若判断结果为是,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;若确定结果为相同,则触发执行分支事务的操作;若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
21.一种分布式事务处理的系统,其特征在于,包括:
终端,用于向分布式事务协调器发送支付事务的分支请求,所述分支请求中包括所述支付事务的修改项的信息,各所述支付事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
分布式事务协调器,用于接收所述分支请求,并判断所述修改项是否被占用,若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志;
分布式事务协调器,具体用于判断修改项是否对应有第二全局事务日志;若判断出修改项对应有第二全局事务日志,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;若确定结果为相同,则触发执行分支事务的操作;若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
22.一种分布式事务处理的方法,其特征在于,包括:
接收终端发送的支付事务的分支请求,所述分支请求中包括所述支付事务的修改项的信息,各所述支付事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
判断所述修改项是否被占用;
若判断结果为否,则形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志;
所述判断所述修改项是否被占用包括:判断所述修改项是否对应有第二全局事务日志;若判断出修改项对应有第二全局事务日志,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;若确定结果为相同,则触发执行分支事务的操作;若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
23.根据权利要求22所述的方法,其特征在于,所述判断所述修改项是否被占用包括:
判断所述修改项是否对应有第二全局事务日志;
若判断出所述修改项未对应有第二全局事务日志,则判断出所述修改项未被占用。
24.一种分布式事务处理的装置,其特征在于,包括:
第二接收模块,用于接收终端发送的支付事务的分支请求,所述分支请求中包括目标事务的修改项的信息,各所述支付事务包括将第一账户的金额减少预设金额的第一分支事务和将第二账户的金额增加所述预设金额的第二分支事务;
第二判断模块,用于判断所述修改项是否被占用,若判断结果为否,则触发第二形成模块;
第二形成模块,用于形成第一全局事务日志与所述修改项之间的映射关系,所述第一全局事务日志为所述支付事务的全局事务日志;
所述第二判断模块,具体用于判断所述修改项是否对应有第二全局事务日志;若判断出修改项对应有第二全局事务日志,则确定第二全局事务日志的标识是否与第一全局事务日志的标识相同;若确定结果为相同,则触发执行分支事务的操作;若确定结果不相同,则重复执行判断所述修改项是否被占用的操作,直至判断结果为否,执行形成所述第一全局事务日志与所述修改项之间的映射关系的操作。
CN201610790099.9A 2016-08-30 2016-08-30 分布式事务处理的方法、装置与系统 Active CN107797850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610790099.9A CN107797850B (zh) 2016-08-30 2016-08-30 分布式事务处理的方法、装置与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610790099.9A CN107797850B (zh) 2016-08-30 2016-08-30 分布式事务处理的方法、装置与系统

Publications (2)

Publication Number Publication Date
CN107797850A CN107797850A (zh) 2018-03-13
CN107797850B true CN107797850B (zh) 2021-09-21

Family

ID=61528650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610790099.9A Active CN107797850B (zh) 2016-08-30 2016-08-30 分布式事务处理的方法、装置与系统

Country Status (1)

Country Link
CN (1) CN107797850B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110196759B (zh) 2018-06-20 2022-12-06 腾讯科技(深圳)有限公司 分布式事务处理方法和装置、存储介质及电子装置
CN109701275B (zh) * 2018-12-11 2022-04-22 北京像素软件科技股份有限公司 基于网络游戏影子角色的操作交互方法及装置
CN113326272A (zh) * 2020-02-29 2021-08-31 华为技术有限公司 分布式事务的处理方法、装置及系统
CN114661816B (zh) * 2020-12-24 2023-03-24 金篆信科有限责任公司 数据同步方法、装置、电子设备、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101341466A (zh) * 2005-12-19 2009-01-07 国际商业机器公司 分布式系统中事务的提交
CN102037463A (zh) * 2008-02-26 2011-04-27 甲骨文国际公司 使用全局确认的提交进行分布式事务的基于日志的复制
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
WO2015097991A1 (ja) * 2013-12-24 2015-07-02 日本電気株式会社 トランザクション分散処理装置、方法、システム、および、記憶媒体
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105069655A (zh) * 2015-08-14 2015-11-18 重庆秒银科技有限公司 一种基于双向激励的移动互联网络商品在线交易系统
WO2016014706A1 (en) * 2014-07-24 2016-01-28 Home Box Office, Inc. Structured logging system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089857B (zh) * 2007-07-24 2011-05-11 中兴通讯股份有限公司 一种内存数据库事务管理方法及系统
CN103312549B (zh) * 2013-06-26 2016-08-24 华为技术有限公司 一种事务管理方法及装置和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101341466A (zh) * 2005-12-19 2009-01-07 国际商业机器公司 分布式系统中事务的提交
CN102037463A (zh) * 2008-02-26 2011-04-27 甲骨文国际公司 使用全局确认的提交进行分布式事务的基于日志的复制
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
WO2015097991A1 (ja) * 2013-12-24 2015-07-02 日本電気株式会社 トランザクション分散処理装置、方法、システム、および、記憶媒体
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
WO2016014706A1 (en) * 2014-07-24 2016-01-28 Home Box Office, Inc. Structured logging system
CN105069655A (zh) * 2015-08-14 2015-11-18 重庆秒银科技有限公司 一种基于双向激励的移动互联网络商品在线交易系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种改进的事务提交机制;李卫玲,等;;《广西科学院学报》;20051130;第21卷(第4期);239-242 *

Also Published As

Publication number Publication date
CN107797850A (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
CN107797850B (zh) 分布式事务处理的方法、装置与系统
KR20210071942A (ko) 트랜잭션 처리 방법, 장치 및 기기, 그리고 컴퓨터 저장 매체
CN106802932B (zh) 一种数据库的路由方法、装置及数据库系统
CN102893272B (zh) 对象的共享和同步
CN105512266A (zh) 一种实现分布式数据库操作一致性的方法及装置
CN107797849B (zh) 分布式事务处理的方法、装置与系统
US10671376B2 (en) Server program hot upgrading method and device
CN105139191A (zh) 一种获取订单信息的方法及设备
US20150378840A1 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
CN106648994B (zh) 一种备份操作日志的方法,设备和系统
CN111708841A (zh) 数据库数据同步方法及装置
CN112817995B (zh) 数据处理方法和装置、电子设备及存储介质
CN111258723A (zh) 分布式系统的事务处理方法、装置、系统、介质及设备
CN112783760A (zh) 测试用例的处理方法、装置和存储介质
KR20150000024A (ko) 어플리케이션 공유 서비스 방법 및 이에 적용되는 장치
CN114327799A (zh) 分布式事务处理方法及装置、电子设备、存储介质
US20220188274A1 (en) File processing method and apparatus based on online working system, and storage medium
CN114205354B (zh) 事件管理系统、事件管理方法、服务器及存储介质
CN113296897B (zh) 一种分布式事务的处理方法、装置、设备和机器可读介质
CN115114311A (zh) 一种事务执行方法以及相关装置
CN111562947B (zh) 一种业务处理方法、装置及电子设备
CN114130035A (zh) 一种用户匹配方法、装置、设备及存储介质
CN117076146B (zh) 数据处理方法、装置、计算机设备和存储介质
CN111240810A (zh) 一种事务管理方法、装置、设备和存储介质
CN111143040A (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
TR01 Transfer of patent right

Effective date of registration: 20230530

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, box four, Grand Cayman capital building, Cayman Islands

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right