CN111522631A - 分布式事务处理方法、装置、服务器及介质 - Google Patents

分布式事务处理方法、装置、服务器及介质 Download PDF

Info

Publication number
CN111522631A
CN111522631A CN202010209587.2A CN202010209587A CN111522631A CN 111522631 A CN111522631 A CN 111522631A CN 202010209587 A CN202010209587 A CN 202010209587A CN 111522631 A CN111522631 A CN 111522631A
Authority
CN
China
Prior art keywords
transaction
service
log
current local
data
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.)
Granted
Application number
CN202010209587.2A
Other languages
English (en)
Other versions
CN111522631B (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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202010209587.2A priority Critical patent/CN111522631B/zh
Publication of CN111522631A publication Critical patent/CN111522631A/zh
Application granted granted Critical
Publication of CN111522631B publication Critical patent/CN111522631B/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
    • 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/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本说明书实施例提供了一种分布式事务处理方法、装置、服务器及介质,该方法先根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键,再执行该业务SQL更新业务数据,在执行成功后根据查询到的主键以及当前本地事务的事务标识符生成行锁,并将该事务标识符保存至业务数据库的对应于当前本地事务的日志中,若在二阶段接收到回滚指令,则根据回滚指令中包含的事务标识符,从业务数据库的日志中查找到上述本地事务的事务更新日志来进行回滚。

Description

分布式事务处理方法、装置、服务器及介质
技术领域
本说明书实施例涉及计算机技术领域,尤其涉及一种分布式事务处理方法、装置、服务器及介质。
背景技术
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式***的不同节点之上。目前分布式事务解决方案主要有对业务无入侵和有入侵的方案。其中,无入侵方案由于具有对业务代码无入侵的优点,被广泛应用,但是对***性能有着很高的要求。
发明内容
本说明书实施例提供了一种分布式事务处理方法、装置、服务器及介质。
第一方面,本说明书实施例提供了一种分布式事务处理方法,包括:根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键;通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中;若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
第二方面,本说明书实施例提供了一种分布式事务处理装置,包括:查询模块,用于根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键;事务处理模块,用于通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中;回滚模块,用于若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
第三方面,本说明书实施例提供了一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面提供的分布式事务处理方法的步骤。
第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面提供的分布式事务处理方法的步骤。
本说明书一个实施例提供的分布式事务处理方法,先根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键,再执行该业务SQL更新业务数据,在执行成功后,根据查询到的主键以及当前本地事务的事务标识符生成针对更新后业务数据的行锁,并将该事务标识符保存至上述业务数据库的对应于该本地事务的日志中,如果在二阶段接收到回滚指令,就可以根据回滚指令中包含的事务标识符,从业务数据库的日志中查找到该本地事务的事务更新日志来进行回滚。该处理过程在事务处理的一阶段无需专门查询以及保存更新前后业务数据的数据镜像,减少了事务处理流程的操作步骤,并且利用数据库复制技术,在事务处理的二阶段根据事务更新日志进行本地事务的回滚。这样能够在有效保证分布式事务两阶段正常实现的同时,有效地优化无侵入模式的事务处理流程,有利于减少对***性能的消耗。并且,由于无需在业务数据库中专门保存数据镜像,使得***性能消耗和需要更新的数据量无关,能够消除请求更新的数据量对***性能消耗的影响,有利于进一步减少***性能消耗。
附图说明
图1为本说明书实施例提供的分布式事务处理方法的一种应用场景示意图;
图2为本说明书实施例第一方面提供的分布式事务处理方法的一种步骤流程图;
图3为本说明书实施例第一方面提供的分布式事务处理方法的一种操作流程图;
图4为本说明书实施例第二方面提供的一种分布式事务处理装置的模块框图;
图5为本说明书实施例第三方面提供的一种服务器的结构示意图。
具体实施方式
随着业务的发展,业务越来越复杂,很多业务平台对业务进行了服务化拆分,使得一个业务活动通常要调用多个服务、访问多个数据库才能完成。以金融业务场景下的转账场景为例,转账服务要完成以下操作:1、调用交易***服务创建交易订单;2、调用支付***记录支付明细;3、调用账务***执行A扣钱;4、调用账务***执行B加钱。以上四个操作要跨三个业务***,访问四个数据库。在这种场景下,可以通过分布式事务中间件解决跨服务、跨数据库的数据一致性问题。
分布式事务中间件有无侵入式模式如分布式事务开源产品Seata的AT模式,或DTX(Distributed Transaction-eXtended)的FMT(Framework-managed transaction)模式。AT/FMT模式最大的优势是对应用透明、无侵入,但缺点是性能开销大。本说明书实施例提供了一种无侵入式模式的分布式事务处理方法,能够有效地优化了无侵入模式的事务处理流程,减少***性能开销。
图1示出了本说明书实施例提供的分布式事务处理方法的一种应用场景的示意图。在图1所示的分布式***中,包括作为协调方的服务器100,以及作为参与方的服务器101和服务器102。服务器101和服务器102均与服务器100通过网络连接。参与方可以有多个,具体数量根据实际应用场景确定,图1中作为参与方的服务器数量仅为示意,不作限制。当一个事务需要拆分为多个子事务,由多个不同的服务器执行时,该事务可以成为全局事务,对应的各个子事务,可以称为分支事务。负责全局事务的产生,以及分支事务的处理的服务器,可以称为协调方。负责分支事务的处理的服务器,可以作为参与方。
本说明书实施例提供的分布式事务处理方法可以应用于上述分布式***中作为参与方的服务器,作为分布式事务中间件,实现对业务无侵入的分布式事务处理流程。
为了更好的理解本说明书实施例提供的技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。本说明书实施例中,术语“多个”表示“两个以上”,即包括两个或大于两个的情况。
第一方面,图2示出了本说明书实施例提供的一种分布式事务处理方法的流程图,应用于作为事务参与方的服务器。请参阅图2,所述方法可以包括以下步骤S101-步骤S103。
步骤S101,根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键。
用户通过用户终端上安装的应用程序即客户端,触发需要多个参与方协调完成的业务操作如,支付操作、转账操作等时,客户端会向其服务器端发送业务处理请求。服务器端接收到业务处理请求后,作为事务发起方即协调方向事务管理器注册全局事务。并且,事务管理器会为该全局事务分配用于唯一标识该全局事务的事务标识符,即txid(transaction id),并发送给应用程序的服务器端保存。
事务发起方开启全局事务后,通过调用参与方执行业务SQL(Structured QueryLanguage),实现用户触发的业务操作。业务SQL即为执行业务操作的SQL语句。全局事务包括多个事务分支,每个事务分支对应于一个参与方,事务发起方会针对每个事务分支生成相应的业务SQL,从而在相应参与方执行该业务SQL,以完成该分支事务。例如,全局事务为A向B转账30元,则包括两个事务分支。其中一个是对A账户扣款30元,该事务分支所执行的业务SQL即为将相应业务数据库中A账户的余额减30,另一个是对B账户增加30元,该分支事务所执行的业务SQL为将相应业务数据库中B账户的余额加30。
本说明书实施例中,在事务执行的一阶段,通过拦截参与方业务SQL的执行,在业务SQL执行之前,先根据所拦截的业务SQL,从业务数据库中查询待更新业务数据的主键,用于根据这些主键生成行锁,保证事务最终提交前这些主键对应的数据被锁住,以免造成脏数据。
具体来讲,如图3所示,可以先解析该业务SQL的语义,然后提取表元数据。解析业务SQL语义的目的是为了便于找到业务要更新的业务数据,而提取表元数据的目的为了找到业务数据库中业务表的主键和唯一性约束键,便于生成行锁。表元数据可以包括表的Schema信息,比如表的主键、唯一键以及列名等。这样就可以通过表的主键列名,生成SQL语句的select部分,并从业务SQL中截取where部分,就可以生成查询主键的SQL语句,从而执行该SQL语句查询到待更新业务数据的主键列表。在查询到待更新的业务数据的主键后,就可以开启参与方的本地事务,执行以下步骤S102,无需查询以及保存更新前业务数据的数据镜像。
可以理解的是,参与方管理的业务数据库中存储有业务表,业务表是以二维表形式存储的。业务表中的每一行,即为一条记录,或者称为元组,每一列即为一个字段,或者称为属性。
步骤S102,通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中。
如图3所示,在查询到待更新业务数据的主键后,就可以开启本地事务,以便进行数据库操作。通过执行业务SQL,对业务数据库(即图3中的业务DB)中的相应业务数据进行更新。并且,为了保证事务提交前这些主键对应的数据被锁住,以免造成脏数据,在业务SQL执行成功后,需要根据上述步骤S101查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将生成的行锁存储起来。具体实施过程中,可以将生成的行锁发送到事务服务器存储,也可以存储在业务数据库。例如,FMT同库模式是保存在业务数据库,Seata AT模式是保存在事务服务器。
此后,就可以提交本地事务,即提交一个本地事务成功执行的确认信息。以便事务发起方根据各个参与方提交的确认信息,触发二阶段的提交/回滚操作。
需要说明的是,在上述步骤S102中,执行完业务SQL后,无需查询以及保存更新后业务数据的数据镜像。
本说明书实施例中,参与方管理的业务数据库均开启了主从复制功能,业务数据库会自动生成本地事务日志,用于记录所有本地事务以及每个本地事务对数据库所做的修改。因此,在每个本地事务执行过程中,业务数据库在执行业务SQL时会自动生成包含业务数据更新前、后数据镜像的本地事务日志,存储在业务数据库所在服务器的文件***中。当然,业务数据库记录的本地事务日志除了包括业务数据更新前和更新后的数据镜像以外,还包括其他数据,如时间戳等,不同的数据类型记录略有差别。
业务数据库自动生成的本地事务日志属于流式数据,包含有本地事务的开始和结束标志。通过识别本地事务的开始和结束标志,可以分辨出一个个本地事务,但是本地事务的日志与全局事务的对应关系,是不知道的。因此,为了能够从业务数据库的日志中,查找到所需要的本地事务日志,在生成行锁的同时,需要将当前执行的本地事务的事务标识符保存至业务数据库中对应于该本地事务的日志中。这样,通过在业务数据库的日志中匹配本地事务日志中***的事务标识符,就可以查找到对应于当前要回滚的本地事务的事务更新日志。
也就是说,上述步骤S102中,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁的实施过程可以包括:获取当前本地事务的事务标识符;将查询到的主键以及所述事务标识符,***到业务数据库中预设的行锁记录表中。具体实施过程中,是把更新业务数据所在业务表的表名以及更新业务数据在业务表中的主键信息,与当前本地事务的事务标识符对应记录到行锁记录表中。这样,该业务数据通过行锁的方式被标记,不会被其他分布式事务访问,避免访问数据时出现脏数据,提升分布式事务访问数据的强一致性。可以理解的是,业务表的名称是唯一的,而每个业务表内部的主键值也是唯一的,因此,通过业务表的名称以及更新业务数据在该业务表中的主键信息可以唯一确定一条数据。
举例来讲,可以利用日志中的insert语句,insert里***两个字段,一个是事务标识符,另一个是全局锁的值。其中,全局锁的值即为更新业务数据所在业务表的表名以及更新业务数据在业务表中的主键信息,如可以是由二者构成的字符串。同时,业务数据库的对应于当前本地事务的日志中也会记录这条insert语句,这样就可以将当前本地事务的事务标识符保存至当前本地事务的日志中。
事务发起方在接收到事务管理器分配的全局事务的事务标识符后,可以将事务标识符保存在应用程序所属线程的上下文中。在执行上述步骤S101之前,事务发起方在调用参与方提供的服务以请求参与方执行相应分支事务时,会将事务标识符发送给参与方,可以在参与方的服务入口处拦截事务标识符,并保存在所属线程的上下文中。在需要生成行锁时,就可以从上下文中获取事务标识符,将该事务标识符与上述步骤S101查询到的主键,一起对应***到业务数据库中预设的行锁记录表中。
参与方提交本地事务后,即完成了一阶段的事务处理。若事务发起方监测到一个以上参与方未按时提交本地事务,即表明一阶段有参与方发生错误,则触发二阶段的回滚操作,发送回滚指令到每个参与方,使得参与方执行以下步骤S103。若事务发起方监测到所有参与方均提交了本地事务,即表明一阶段所有参与方都成功执行,则触发二阶段的提交操作,发送提交指令到每个参与方,使得参与方执行以下步骤S104。
步骤S103,若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
参与方接收到二阶段回滚指令时,需要对上述步骤S102提交的本地事务进行回滚,将步骤S102执行业务SQL更新的业务数据还原到更新前的状态。本说明书实施例中,回滚需要的更新前和更新后的镜像数据是从业务数据库的日志中获取。需要说明的是,对于不同的数据库类型,查询其更新日志的方式不同,具体根据实际数据库类型提交的接口来查询。
事务发起方发送的回滚指令中包含有要回滚的全局事务的事务标识符。上述根据回滚指令中包含的事务标识符,从业务数据库的日志中查询当前本地事务的事务更新日志的过程可以包括:从回滚指令中提取出事务标识符;在业务数据库的日志中,查找包含有该事务标识符的日志,即查找包含有回滚指令中的事务标识符的本地事务日志;将查找到的本地事务日志作为当前本地事务的事务更新日志。
业务数据库的日志中,包含有多个本地事务的日志,即多个本地事务日志,通过本地事务的开始和结束标志区别不同本地事务日志。每个本地事务日志中均保存有该本地事务的事务标识符,即与该本地事务关联的全局事务的事务标识符,因此,可以通过匹配事务标识符,从众多本地事务日志中,过滤出本次要回滚的本地事务的本地事务日志。
进一步地,查找到当前本地事务的事务更新日志后,根据所述事务更新日志对所述当前本地事务进行回滚的过程可以包括:从事务更新日志中,提取待更新业务数据在更新前以及更新后的数据镜像;通过更新前以及更新后的数据镜像,对当前本地事务进行回滚。可以理解的是,业务数据库的事务更新日志可以包括时间戳以及业务数据更新前、后的数据镜像等。
具体实施过程中,首先,需要校验脏写。校验脏写的方式为将从事务更新日志中提取的更新后的镜像数据与业务数据库中该业务数据的当前值进行对比,如果两份数据完全一致则说明没有出现脏写,如果两份数据不一致,则说明出现脏写。如果出现脏写,就需要转人工处理,不能再使用所提取的更新后的镜像数据回滚业务数据。
然后,还原业务数据。如果未出现脏写,则使用从事务更新日志中提取的更新前的镜像数据回滚业务数据,使业务数据恢复到更新前的值。
最后,删除中间数据。业务数据还原之后,便可以将一阶段保存的中间数据全部删掉,完成回滚操作。由于本说明书实施例提供的分布式事务处理方法在一阶段仅保存了行锁,故只需删除行锁。
步骤S104,参与方若接收到提交指令,则删除所生成的行锁。由于业务SQL在一阶段已经提交至业务数据库,故二阶段提交只需删除一阶段保存的中间数据。由于本说明书实施例提供的分布式事务处理方法在一阶段仅保存了行锁,故只需删除行锁。相比于Seata的AT模式或DTX的FMT模式,减少了需要删除的中间数据,有利于减少了事务处理流程的操作步骤,从而减少对***性能的消耗。
本说明书实施例提供的分布式事务处理方法,在分布式事务处理的一阶段无需查询以及保存更新前后业务数据的数据镜像,减少了事务处理流程的操作步骤,并且利用数据库复制技术,在事务处理的二阶段通过事务标识符在业务数据库的日志中查找事务更新日志来进行回滚。相比于Seata的AT模式或DTX的FMT模式,这样能够在保证分布式事务两阶段正常实现的同时,有效地优化无侵入模式的事务处理流程,有利于减少对***性能的消耗。另外,由于无需在业务数据库的数据文件中专门保存业务数据更新前后的数据镜像,使得***性能消耗与业务SQL更新的数据量无关,这样就能够消除请求更新的数据量对***性能消耗的影响,有利于进一步减少***性能消耗。
第二方面,基于与前述第一方面实施例提供的分布式事务处理方法同样的发明构思,本说明书实施例还提供了一种分布式事务处理装置,运行于作为事务参与方的服务器。如图4所示,该分布式事务处理装置40包括:
查询模块41,用于根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键;
事务处理模块42,用于通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中;
回滚模块43,用于若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
在一种可选的实施例中,所述回滚模块43包括:日志查询子模块431,用于从业务数据库的日志中,查找包含有所述回滚指令中的事务标识符的本地事务日志;将查找到的本地事务日志作为所述本地事务的事务更新日志。
在一种可选的实施例中,所述回滚模块43包括:
提取子模块432,用于从所述事务更新日志中,提取所述待更新业务数据在更新前以及更新后的数据镜像;
回滚子模块433,用于通过所述更新前以及更新后的数据镜像,对所述当前本地事务进行回滚。
在一种可选的实施例中,所述事务处理模块42用于:获取所述当前本地事务的事务标识符;将所述查询到的主键以及所述事务标识符,***到所述业务数据库中预设的行锁记录表中。
在一种可选的实施例中,上述分布式事务处理装置40还包括:提交模块44,用于若接收到提交指令,则删除所述行锁。
需要说明的是,本说明书实施例所提供的分布式事务处理装置40,其中各个模块执行操作的具体方式已经在上述第一方面提供的方法实施例中进行了详细描述,具体实施过程可以参照上述第一方面提供的方法实施例,此处将不做详细阐述说明。
第三方面,基于与前述实施例提供的分布式事务处理方法同样的发明构思,本说明书实施例还提供了一种服务器。如图5所示,该服务器包括存储器504、一个或多个处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,处理器502执行该程序时实现前文第一方面提供的分布式事务处理方法的任一实施方式的步骤。
其中,在图5中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口505在总线500和接收器501和发送器503之间提供接口。接收器501和发送器503可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。
可以理解的是,图5所示的结构仅为示意,本说明书实施例提供的服务器还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。
第四方面,基于与前述实施例中提供的分布式事务处理方法同样的发明构思,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第一方面提供的分布式事务处理方法的任一实施方式的步骤。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。

Claims (12)

1.一种分布式事务处理方法,包括:
根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键;
通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中;
若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
2.根据权利要求1所述的方法,所述根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,包括:
从业务数据库的日志中,查找包含有所述回滚指令中的事务标识符的本地事务日志;
将查找到的本地事务日志作为所述当前本地事务的事务更新日志。
3.根据权利要求1所述的方法,所述根据所述事务更新日志对所述当前本地事务进行回滚,包括:
从所述事务更新日志中,提取所述待更新业务数据在更新前以及更新后的数据镜像;
通过所述更新前以及更新后的数据镜像,对所述当前本地事务进行回滚。
4.根据权利要求1所述的方法,所述根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,包括:
获取所述当前本地事务的事务标识符;
将所述查询到的主键以及所述事务标识符,***到所述业务数据库中预设的行锁记录表中。
5.根据权利要求1所述的方法,还包括:
若接收到提交指令,则删除所述行锁。
6.一种分布式事务处理装置,包括:
查询模块,用于根据拦截的业务SQL,从业务数据库中查询待更新业务数据的主键;
事务处理模块,用于通过执行所述业务SQL对所述待更新业务数据进行更新,执行成功后,根据查询到的主键以及当前本地事务的事务标识符,生成针对更新后业务数据的行锁,并将所述事务标识符保存至所述业务数据库的对应于所述当前本地事务的日志中;
回滚模块,用于若接收到回滚指令,则根据所述回滚指令中包含的事务标识符,从所述业务数据库的日志中查询所述当前本地事务的事务更新日志,并根据所述事务更新日志对所述当前本地事务进行回滚。
7.根据权利要求6所述的装置,所述回滚模块包括:
日志查询子模块,用于从业务数据库的日志中,查找包含有所述回滚指令中的事务标识符的本地事务日志;将查找到的本地事务日志作为所述本地事务的事务更新日志。
8.根据权利要求6所述的装置,所述回滚模块包括:
提取子模块,用于从所述事务更新日志中,提取所述待更新业务数据在更新前以及更新后的数据镜像;
回滚子模块,用于通过所述更新前以及更新后的数据镜像,对所述当前本地事务进行回滚。
9.根据权利要求6所述的装置,所述事务处理模块用于:
获取所述当前本地事务的事务标识符;
将所述查询到的主键以及所述事务标识符,***到所述业务数据库中预设的行锁记录表中。
10.根据权利要求6所述的装置,还包括:
提交模块,用于若接收到提交指令,则删除所述行锁。
11.一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-5中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤。
CN202010209587.2A 2020-03-23 2020-03-23 分布式事务处理方法、装置、服务器及介质 Active CN111522631B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010209587.2A CN111522631B (zh) 2020-03-23 2020-03-23 分布式事务处理方法、装置、服务器及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010209587.2A CN111522631B (zh) 2020-03-23 2020-03-23 分布式事务处理方法、装置、服务器及介质

Publications (2)

Publication Number Publication Date
CN111522631A true CN111522631A (zh) 2020-08-11
CN111522631B CN111522631B (zh) 2024-02-06

Family

ID=71900960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010209587.2A Active CN111522631B (zh) 2020-03-23 2020-03-23 分布式事务处理方法、装置、服务器及介质

Country Status (1)

Country Link
CN (1) CN111522631B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112182082A (zh) * 2020-09-24 2021-01-05 广州巨杉软件开发有限公司 一种实现跨不同数据库引擎事务强一致性的***及方法
CN112395102A (zh) * 2020-10-15 2021-02-23 北京仿真中心 一种分布式数据库中间件解决方法
CN112764888A (zh) * 2021-01-21 2021-05-07 中信银行股份有限公司 一种基于日志分析的分布式事务检查判断方法及***
CN112995304A (zh) * 2021-02-08 2021-06-18 中国工商银行股份有限公司 二阶段分布式事务对于路由服务节点的处理方法及装置
CN113010495A (zh) * 2021-03-19 2021-06-22 北京三快在线科技有限公司 一种数据库优化方法及装置
CN113342481A (zh) * 2021-07-07 2021-09-03 中国工商银行股份有限公司 一种事务状态的确认方法及装置
CN114385320A (zh) * 2020-10-22 2022-04-22 支付宝(杭州)信息技术有限公司 一种分布式事务处理方法和***
CN115905402A (zh) * 2022-09-26 2023-04-04 北京奥星贝斯科技有限公司 处理事务日志的方法及装置
WO2023134518A1 (zh) * 2022-01-17 2023-07-20 北京奥星贝斯科技有限公司 在数据库中查询事务修改内容的方法及装置

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
US20130036136A1 (en) * 2011-08-01 2013-02-07 International Business Machines Corporation Transaction processing system, method and program
US20130262423A1 (en) * 2012-03-29 2013-10-03 Goetz Graefe Controlled lock violation for data transactions
US9171019B1 (en) * 2013-02-19 2015-10-27 Amazon Technologies, Inc. Distributed lock service with external lock information database
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及***
CN106033439A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及***
WO2016180164A1 (zh) * 2015-09-29 2016-11-17 中兴通讯股份有限公司 一种分布式事务回滚方法及装置
CN106610876A (zh) * 2015-10-23 2017-05-03 中兴通讯股份有限公司 数据快照的恢复方法及装置
US9830223B1 (en) * 2015-01-26 2017-11-28 Intel Corporation Methods for repairing a corrupted database to a new, correct state
US20180137166A1 (en) * 2016-11-17 2018-05-17 Sap Se Database Systems Architecture Incorporating Distributed Log
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质
US20190188097A1 (en) * 2017-12-15 2019-06-20 Vmware, Inc. Mirrored write ahead logs for data storage system
CN110888718A (zh) * 2019-11-27 2020-03-17 武汉虹旭信息技术有限责任公司 分布式事务的实现方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130036136A1 (en) * 2011-08-01 2013-02-07 International Business Machines Corporation Transaction processing system, method and program
US20130262423A1 (en) * 2012-03-29 2013-10-03 Goetz Graefe Controlled lock violation for data transactions
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
US9171019B1 (en) * 2013-02-19 2015-10-27 Amazon Technologies, Inc. Distributed lock service with external lock information database
US9830223B1 (en) * 2015-01-26 2017-11-28 Intel Corporation Methods for repairing a corrupted database to a new, correct state
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及***
CN106033439A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及***
WO2016180164A1 (zh) * 2015-09-29 2016-11-17 中兴通讯股份有限公司 一种分布式事务回滚方法及装置
CN106610876A (zh) * 2015-10-23 2017-05-03 中兴通讯股份有限公司 数据快照的恢复方法及装置
US20180137166A1 (en) * 2016-11-17 2018-05-17 Sap Se Database Systems Architecture Incorporating Distributed Log
US20190188097A1 (en) * 2017-12-15 2019-06-20 Vmware, Inc. Mirrored write ahead logs for data storage system
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质
CN110888718A (zh) * 2019-11-27 2020-03-17 武汉虹旭信息技术有限责任公司 分布式事务的实现方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张淑玉;: "SQL Server数据库的备份与恢复", 潍坊学院学报, no. 06 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112182082A (zh) * 2020-09-24 2021-01-05 广州巨杉软件开发有限公司 一种实现跨不同数据库引擎事务强一致性的***及方法
CN112395102A (zh) * 2020-10-15 2021-02-23 北京仿真中心 一种分布式数据库中间件解决方法
CN114385320A (zh) * 2020-10-22 2022-04-22 支付宝(杭州)信息技术有限公司 一种分布式事务处理方法和***
CN112764888A (zh) * 2021-01-21 2021-05-07 中信银行股份有限公司 一种基于日志分析的分布式事务检查判断方法及***
CN112995304A (zh) * 2021-02-08 2021-06-18 中国工商银行股份有限公司 二阶段分布式事务对于路由服务节点的处理方法及装置
CN112995304B (zh) * 2021-02-08 2022-09-23 中国工商银行股份有限公司 二阶段分布式事务对于路由服务节点的处理方法及装置
CN113010495A (zh) * 2021-03-19 2021-06-22 北京三快在线科技有限公司 一种数据库优化方法及装置
CN113342481A (zh) * 2021-07-07 2021-09-03 中国工商银行股份有限公司 一种事务状态的确认方法及装置
CN113342481B (zh) * 2021-07-07 2024-03-26 中国工商银行股份有限公司 一种事务状态的确认方法及装置
WO2023134518A1 (zh) * 2022-01-17 2023-07-20 北京奥星贝斯科技有限公司 在数据库中查询事务修改内容的方法及装置
CN115905402A (zh) * 2022-09-26 2023-04-04 北京奥星贝斯科技有限公司 处理事务日志的方法及装置
CN115905402B (zh) * 2022-09-26 2023-07-18 北京奥星贝斯科技有限公司 处理事务日志的方法及装置

Also Published As

Publication number Publication date
CN111522631B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
CN111522631B (zh) 分布式事务处理方法、装置、服务器及介质
CN109739935B (zh) 数据读取方法、装置、电子设备以及存储介质
US9779128B2 (en) System and method for massively parallel processing database
US9672017B2 (en) Object storage and synchronization hooks for occasionally-connected devices
US7366738B2 (en) Method and system for object cache synchronization
US11392588B2 (en) Active queries filter extraction
CN111259083A (zh) 分布式事务处理方法及装置
US9747356B2 (en) Eager replication of uncommitted transactions
US5920857A (en) Efficient optimistic concurrency control and lazy queries for B-trees and other database structures
US11429599B2 (en) Method and apparatus for updating database by using two-phase commit distributed transaction
CN111143389A (zh) 事务执行方法、装置、计算机设备及存储介质
CN105608086A (zh) 分布式数据库***的事务处理方法及装置
CN111881223B (zh) 数据管理方法、设备、***及存储介质
US11947524B2 (en) Transaction processing method and apparatus, computer device, and storage medium
US7478112B2 (en) Method and apparatus for initializing data propagation execution for large database replication
CN111597015A (zh) 事务处理方法、装置、计算机设备及存储介质
CN111062684B (zh) 云流程平台下实现业务数据与流程数据一致性处理的***及其方法
CN111797121A (zh) 读写分离架构业务***的强一致性查询方法、装置及***
US20020188624A1 (en) Active control protocol for peer-to-peer database replication
US20050144299A1 (en) System and method for supporting XA 2-phase commit protocols with a loosely coupled clustered database server
US20090100082A1 (en) Replication and mapping mechanism for recreating memory durations
CN112800060A (zh) 数据处理方法、装置、计算机可读存储介质及电子设备
WO2023124242A1 (zh) 事务执行方法、装置、设备和存储介质
CN114461454A (zh) 数据恢复方法、装置、存储介质及电子设备
CN114661690A (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