CN111753013A - 分布式事务处理方法及装置 - Google Patents

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

Info

Publication number
CN111753013A
CN111753013A CN202010585523.2A CN202010585523A CN111753013A CN 111753013 A CN111753013 A CN 111753013A CN 202010585523 A CN202010585523 A CN 202010585523A CN 111753013 A CN111753013 A CN 111753013A
Authority
CN
China
Prior art keywords
transaction
databases
processed
data
records
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
CN202010585523.2A
Other languages
English (en)
Other versions
CN111753013B (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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202010585523.2A priority Critical patent/CN111753013B/zh
Publication of CN111753013A publication Critical patent/CN111753013A/zh
Application granted granted Critical
Publication of CN111753013B publication Critical patent/CN111753013B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

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

Abstract

本发明公开了一种分布式事务处理方法及装置,该方法包括:对多个数据库中的多个事务建立统一的全局事务ID;将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;对多个数据库中的待处理数据表进行更新,获取更新结果;根据更新结果对待处理数据表中的事务记录进行提交或回滚。多个数据库为同构数据库或异构数据库。本发明保证了在跨多个数据库进行事务回滚时数据的一致性,同时无需手工编写应用程序进行数据回滚,工作量小,工作及开发效率高,不容易出现错漏的情况。

Description

分布式事务处理方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式事务处理方法及装置。
背景技术
目前,分布式系统在数据库事务方面的应用存在瓶颈,通过XA协议两阶段提交/三阶段提交存在数据库性能问题,难以跨多个数据库实现事务自动回滚,造成分布式数据库存在较大的一致性问题。
现有技术一般利用柔性事务,如TCC(Try Confirm Cancel)或者SAGA等进行事务回滚,已解决上述一致性问题。以TCC为例,TCC属于补偿型分布式事务,其实现分布式事务一共有三个步骤:Try,即尝试待执行的业务,这个过程并未执行业务,只是完成所有业务的一致性检查,并预留好执行所需的全部资源;Confirm,即执行业务,这个过程真正开始执行业务,由于Try阶段已经完成了一致性检查,因此本过程直接执行,而不做任何检查。并且在执行的过程中,会使用到Try阶段预留的业务资源。Cancel,即取消执行的业务,若业务执行失败,则进入Cancel阶段,它会释放所有占用的业务资源,并回滚Confirm阶段执行的操作。在此过程中,如果交易途中出现错误,需要依靠手工编写应用程序进行数据回冲,恢复数据库到交易前状态,或者由人工处理不一致的追款,工作量大,工作效率低,且容易出现错漏。
发明内容
本发明实施例提供一种分布式事务处理方法,保证了在跨多个数据库进行事务回滚时数据的一致性,同时无需手工编写应用程序进行数据回滚,工作量小,工作及开发效率高,不容易出现错漏的情况。该方法包括:
对多个数据库中的多个事务建立统一的全局事务ID;
将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;
对多个数据库中的待处理数据表进行更新,获取更新结果;
根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
可选的,对多个数据库中的待处理数据表进行更新,获取更新结果之前,对所述待处理数据表中的待处理事务记录进行备份;
在根据所述更新结果对所述待处理数据表中的事务记录进行回滚时,利用备份的待处理事务记录进行回滚处理。
可选的,将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理之后,所述方法还包括:
根据所述全局事务ID和所述待处理数据表中的事务记录的关键字段,对所述待处理数据表中的事务记录进行加锁处理。
可选的,所述方法还包括:
当对所述待处理数据表中的事务记录进行修改时,查询当前事务对应的事务记录是否已经被加锁;
若被其它事务加锁,则停止操作,若被当前事务自身加锁,则对加锁处理进行锁升级;
若没有被加锁,则对当前事务操作的数据进行加锁处理。
可选的,加锁处理的类型包括:增加、删除、修改、查询。
可选的,所述方法还包括:
将被加锁处理的事务记录存放在加锁表中;
当所述待处理数据表中当前的事务记录被修改时,将当前事务对应的加锁表中的事务记录复制到日志表中,所述日志表用于存放被提交的事务记录;
当前事务结束后,删除加锁表中当前事务对应的事务记录。
可选的,所述方法还包括:
对多个所述数据库的状态和所述事务记录进行监控。
可选的,所述方法还包括:
根据监控结果,在所述日志表中记录事务的处理时间;
根据所述日志表中的所有事务的数据生成统计报表。
可选的,所述方法还包括:
根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理。
可选的,所述补偿处理包括:超时补偿和设备损坏补偿;
根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理,包括:
在对所述事务记录进行超时补偿时,根据所述监控结果记录的事务记录中当前事务的修改时间,确定超时事务;
对超时事务所在的数据表进行回滚处理;
在对所述事务记录进行设备损坏补偿时,将所述日志表存放在多个设备中,当其中一个设备发生损坏时,利用其它设备中的日志表对发生损坏的设备中的事务记录进行恢复。
可选的,所述多个数据库为同构数据库或异构数据库。
本发明实施例还提供一种分布式事务处理装置,保证了在跨多个数据库进行事务回滚时数据的一致性,同时无需手工编写应用程序进行数据回滚,工作量小,工作及开发效率高,不容易出现错漏的情况,该装置包括:
全局事务ID建立模块,用于对多个数据库中的多个事务建立统一的全局事务ID;
关联模块,用于将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;
更新模块,用于对多个数据库中的待处理数据表进行更新,获取更新结果;
事务处理模块,用于根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明实施例中,通过对多个数据库中的多个事务建立统一的全局事务ID,将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理,并对多个数据库中的待处理数据表进行更新,获取更新结果,再根据更新结果对所述待处理数据表中的事务记录进行自动提交或回滚,保证了数据的一致性。在此过程中,即使交易途中出现错误,也无需手工编写应用程序进行数据回滚,工作量小,工作及开发效率高,不容易出现错漏的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中分布式事务处理方法的流程图;
图2为本发明实施例中对待处理数据进行加锁的流程图;
图3为本发明实施例中分布式事务处理方法的又一流程图;
图4为本发明实施例中分布式事务处理方法的再一流程图;
图5为本发明实施例中分布式事务处理装置的结构示意图;
图6为本发明实施例中加锁模块的结构示意图;
图7为本发明实施例中分布式事务处理装置的又一结构示意图;
图8为本发明实施例中分布式事务处理装置的再一结构示意图;
图9是本发明实施例计算机设备示意图;
图10为本发明实施例中分布式事务处理方法的具体示例图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
下面对本发明涉及的名称进行解释:
分布式系统:通常指其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。分布式系统由多台机器组成一个集合,对于用户来说感觉是一个整体对外提供服务,多台机器之间通过网络消息进行合作。
事务:由一组数据变更操作构成,我们希望这组操作能够全部正确执行,如果这一组操作中的任意一个步骤发生错误,那么就需要把所有的数据变更恢复到事务之前的状态,就像事务完全没有发生过一样。也就是同一个事务中的所有操作,要么全都正确执行,要么全都不要执行。例如:银行转账,A账号有300余额,A转100元给B账号,如果A转成功则余额变为200,B转入失败(如账户被冻结),则需要把A的余额恢复到转前的状态300元。
事务具有以下四大特性:
原子性,事务是一个不可分割的执行单元,事务中的所有操作要么全都执行,要么全都不执行。
一致性,事务在开始前和结束后,数据库的完整性约束没有被破坏。
隔离性,事务的执行是相互独立的,它们不会相互干扰,一个事务不会看到另一个正在运行过程中的事务的数据。
持久性,一个事务完成之后,事务的执行结果必须是持久化保存的。即使数据库发生崩溃,在数据库恢复后事务提交的结果仍然不会丢失。注意:事务只能保证数据库的高可靠性,即数据库本身发生问题后,事务提交后的数据仍然能恢复;而如果不是数据库本身的故障,如硬盘损坏了,那么事务提交的数据可能就丢失了。这属于高可用性的范畴。因此,事务只能保证数据库的高可靠性,而高可用性需要整个系统共同配合实现。
目前,分布式系统在数据库事务方面的应用存在瓶颈,通过XA协议两阶段提交/三阶段提交存在数据库性能问题,难以跨多个数据库实现事务自动回滚,造成分布式数据库存在较大的一致性问题。
现有技术一般利用柔性事务,如TCC(Try Confirm Cancel)或者SAGA等进行事务回滚,已解决上述一致性问题。以TCC为例,TCC属于补偿型分布式事务,其实现分布式事务一共有三个步骤:Try,即尝试待执行的业务,这个过程并未执行业务,只是完成所有业务的一致性检查,并预留好执行所需的全部资源;Confirm,即执行业务,这个过程真正开始执行业务,由于Try阶段已经完成了一致性检查,因此本过程直接执行,而不做任何检查。并且在执行的过程中,会使用到Try阶段预留的业务资源。Cancel,即取消执行的业务,若业务执行失败,则进入Cancel阶段,它会释放所有占用的业务资源,并回滚Confirm阶段执行的操作。在此过程中,如果交易途中出现错误,需要依靠手工编写应用程序进行数据回冲,恢复数据库到交易前状态,或者由人工处理不一致的追款,工作量大,工作效率低,且容易出现错漏。为了解决上述问题,本发明实施例提供了一种分布式事务处理方法。
图1为本发明实施例提供的一种分布式事务处理方法的流程图,如图1所示,该方法包括:
步骤101、对多个数据库中的多个事务建立统一的全局事务ID。
在本实施例中,每个数据库都有其自己的事务。具体实施时,可以在分布式处理需要进行事务处理的主控程序中增加一个Java分布式事务注解,根据该分布式事务注解,自动申请一个全局事务ID,并登记在数据库中。
具体实施时,可以利用全局事务管理器生成全局事务ID。
步骤102、将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理。
在本实施例中,可以利用全局事务同步器将全局事务ID的状态同步和更新,使多个数据库待处理数据表中的读写操作与全局事务ID相关联。
步骤103、对多个数据库中的待处理数据表进行更新,获取更新结果。
具体实施时,可以利用数据库更新器对数据库中的待处理数据表进行更新,即对待处理数据表进行读写分离、缓存、仓储、UOW(Unit of work工作单元,即对数据库的修改先登记在内存,最后才提交给数据库的一种方法)处理。需要说明的是,本发明中提到的事务记录被修改指的就是对待处理数据表中的事务记录进行更新。
步骤104、根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
在本实施例中,如果任意一个处理过程出现错误,需要发送一个回滚消息,通知各个分布式数据库实例,把所有数据库回滚到事务前状态。
各个数据库各建立一个进程,收到回滚消息,就读取用于存储加锁数据的加锁表,用全字段数据更新为改前数据。
具体实施时,可以利用数据库异常俘获器对更新结果进行判断,若更新结果为成功,则对待处理数据表中的事务记录进行提交,若更新结果为失败,则对待处理数据表中的事务记录进行回滚。
在本发明实施例中,对多个数据库中的待处理数据表进行更新,获取更新结果之前,对所述待处理数据表中的待处理事务记录进行备份;
在根据所述更新结果对所述待处理数据表中的事务记录进行回滚时,利用备份的待处理事务记录进行回滚处理。
由上可知,本发明实施例提供的分布式事务处理方法,通过对多个数据库中的多个事务建立统一的全局事务ID,将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理,并对多个数据库中的待处理数据表进行更新,获取更新结果,再根据更新结果对所述待处理数据表中的事务记录进行自动提交或回滚,保证了数据的一致性。在此过程中,即使交易途中出现错误,也无需手工编写应用程序进行数据回滚,工作量小,工作及开发效率高,不容易出现错漏的情况。
在本发明实施例中,多个数据库可以为同构数据库或异构数据库。具体实施时,本发明可以将mysql,db2,oracle,nosql,sqlserver,oceanbase等多种不同类型的数据库连接起来,进行统一的分布式事务处理。
在本发明实施例中,为了对待处理数据表中的事务记录进行加锁处理进行锁定,防止其他程序或业务人员任意读取,将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理之后,如图2所示,所述方法还包括:
步骤201、根据所述全局事务ID和所述待处理数据表中的事务记录的关键字段,对所述待处理数据表中的事务记录进行加锁处理。
进一步地,所述方法还包括:
当对所述待处理数据表中的事务记录进行修改时,查询当前事务对应的事务记录是否已经被加锁;
若被其它事务加锁,则停止操作,若被当前事务自身加锁,则对加锁处理进行锁升级;
若没有被加锁,则对当前事务操作的数据进行加锁处理。
其中,加锁处理的类型包括:增加、删除、修改、查询。具体实施时,举例来说,被加锁后的数据可以为:可查询,不可修改的类型,或者为可查询、可修改,但不能删除的类型等。
正常处理更新数据表时,采用拦截数据访问层、应用编码、数据库触发器、存储过程等方式,检查本事务对key是否加锁。其中,key可以为客户账号、流水号等。
如果key未加锁,则把修改字段内容记录一条加锁数据,并记录改前数据(全字段),用于回滚到事务初始状态。
如果已加锁,则检查全局事务ID是否相同,若相同,则进行锁升级处理,否则,报错“记录已被其他全局事务锁定”。
若被自己事务加锁,则锁升级,如果本次操作类型已经在锁类型中,则无需操作,如果操作类型不同,则需要进行锁升级。例如第一次为读操作,加读锁(READ=Y,UPDATE=N,DELETE=N,NEW=N),第2次为修改操作,加修改锁,锁升级后(READ=Y,UPDATE=Y,DELETE=N,NEW=N),第3次为删除操作,加删除锁,锁升级后(READ=Y,UPDATE=Y,DELETE=Y,NEW=N),锁升级成功后事务可继续处理,如果锁升级失败,则返回锁升级失败信息。
对于一条SQL语句更新多条事务记录的情况,需要先把修改前每个key的数据写入用于存放加锁数据的加锁表中,然后再执行实际数据库操作。
进一步地,为了节省内存,可以将全局事务ID的加锁表数据复制到日志表(状态为已提交)后,删除该ID在加锁表的记录。
具体地,将被加锁处理的事务记录存放在加锁表中;
当所述待处理数据表中当前的事务记录被修改时,将当前事务对应的加锁表中的事务记录复制到日志表中,所述日志表用于存放被提交的事务记录;
当前事务结束后,删除加锁表中当前事务对应的事务记录。
其中,日志表中存放的事务记录包括:数据表中修改前的事务信息、修改后的事务信息、事务信息的修改时间等。
在本实施例中,加锁表内记录有全局事务ID,数据key(唯一识别加锁表内数据的关键字段),事务运行时间。
在本实施例中,可以利用数据库拦截器拦截数据库的所有更新操作,并加入数据库加锁和分布式事务的处理。
图3为本发明实施例提供的分布式事务处理方法的又一流程图,为了能够实时监控数据库状态和全局事务的状态,如图3所示,所述方法还包括:
步骤301、对多个所述数据库的状态和所述事务记录进行监控。
具体实施时,当有新的全局事务变更时,启动补偿作业,进行报警。
在本发明实施例中,所述方法还包括:
根据监控结果,在所述日志表中记录事务的处理时间;
根据所述日志表中的所有事务的数据生成统计报表。
通过生成统计报表,可以便于后续业务人员对被修改的事务记录进行统计、分析。
图4为本发明实施例提供的分布式事务处理方法的再一流程图,如图4所示,所述方法还包括:
步骤401、根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理。
在本实施例中,所述补偿处理包括:超时补偿和设备损坏补偿;
根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理,包括:
在对所述事务记录进行超时补偿时,根据所述监控结果记录的事务记录中当前事务的修改时间,确定超时事务;
对超时事务所在的数据表进行回滚处理;
在对所述事务记录进行设备损坏补偿时,将所述日志表存放在多个设备中,当其中一个设备发生损坏时,利用其它设备中的日志表对发生损坏的设备中的事务记录进行恢复。
其中,该设备可以为硬盘、电脑等。
下面以一具体示例对本发明进行说明:
如图10所示,假设一个业务需要分别更新A、B、C三个数据库,通过分布式系统可以同时更新,若A、B、C任意一个在更新过程中出错,通过分布式框架组件让A、B、C数据库的数据同时恢复到更新之前。
本发明支持各种异构数据库的场景,如数据库A为DB2,数据库B为ORACLE,数据库C为MYSQL等。
基于同一发明构思,本发明实施例中还提供了一种分布式事务处理装置,如下面的实施例所述。由于分布式事务处理装置解决问题的原理与分布式事务处理方法相似,因此,分布式事务处理装置的实施可以参见分布式事务处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5为本发明实施例提供的一种分布式事务处理装置的结构示意图,如图5所示,该装置包括:
全局事务ID建立模块501,用于对多个数据库中的多个事务建立统一的全局事务ID;
关联模块502,用于将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;
更新模块503,用于对多个数据库中的待处理数据表进行更新,获取更新结果;
事务处理模块504,用于根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
在本发明实施例中,如图6所示,所述装置还包括:
加锁模块601,用于对所述待处理数据表中的事务记录进行加锁处理。
在本发明实施例中,如图7所示,所述装置还包括:
监控模块701,用于对多个所述数据库的状态和所述事务记录进行监控。
在本发明实施例中,如图8所示,所述装置还包括:
补偿模块801,用于根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理
为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图9所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种分布式事务处理方法,其特征在于,包括:
对多个数据库中的多个事务建立统一的全局事务ID;
将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;
对多个数据库中的待处理数据表进行更新,获取更新结果;
根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
2.如权利要求1所述的方法,其特征在于,对多个数据库中的待处理数据表进行更新,获取更新结果之前,对所述待处理数据表中的待处理事务记录进行备份;
在根据所述更新结果对所述待处理数据表中的事务记录进行回滚时,利用备份的待处理事务记录进行回滚处理。
3.如权利要求1所述的方法,其特征在于,将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理之后,所述方法还包括:
根据所述全局事务ID和所述待处理数据表中的事务记录的关键字段,对所述待处理数据表中的事务记录进行加锁处理。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
当对所述待处理数据表中的事务记录进行修改时,查询当前事务对应的事务记录是否已经被加锁;
若被其它事务加锁,则停止操作,若被当前事务自身加锁,则对加锁处理进行锁升级;
若没有被加锁,则对当前事务操作的数据进行加锁处理。
5.如权利要求3所述的方法,其特征在于,加锁处理的类型包括:增加、删除、修改、查询。
6.如权利要求3所述的方法,其特征在于,所述方法还包括:
将被加锁处理的事务记录存放在加锁表中;
当所述待处理数据表中当前的事务记录被修改时,将当前事务对应的加锁表中的事务记录复制到日志表中,所述日志表用于存放被提交的事务记录;
当前事务结束后,删除加锁表中当前事务对应的事务记录。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
对多个所述数据库的状态和所述事务记录进行监控。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
根据监控结果,在所述日志表中记录事务的处理时间;
根据所述日志表中的所有事务的数据生成统计报表。
9.如权利要求7所述的方法,其特征在于,所述方法还包括:
根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理。
10.如权利要求9所述的方法,其特征在于,所述补偿处理为超时补偿;
根据对多个所述数据库的状态和所述事务记录的监控结果,对所述事务记录进行补偿处理,包括:
在对所述事务记录进行超时补偿时,根据所述监控结果记录的事务记录中当前事务的修改时间,确定超时事务;
对超时事务所在的数据表进行回滚处理。
11.如权利要求9所述的方法,其特征在于,所述补偿处理为设备损坏补偿;
在对所述事务记录进行设备损坏补偿时,将所述日志表存放在多个设备中,当其中一个设备发生损坏时,利用其它设备中的日志表对发生损坏的设备中的事务记录进行恢复。
12.如权利要求1所述的方法,其特征在于,所述多个数据库为同构数据库或异构数据库。
13.一种分布式事务处理装置,其特征在于,包括:
全局事务ID建立模块,用于对多个数据库中的多个事务建立统一的全局事务ID;
关联模块,用于将多个数据库待处理数据表中的读写操作与全局事务ID进行关联处理;
更新模块,用于对多个数据库中的待处理数据表进行更新,获取更新结果;
事务处理模块,用于根据所述更新结果对所述待处理数据表中的事务记录进行提交或回滚。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任一所述方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至12任一所述方法的计算机程序。
CN202010585523.2A 2020-06-24 2020-06-24 分布式事务处理方法及装置 Active CN111753013B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010585523.2A CN111753013B (zh) 2020-06-24 2020-06-24 分布式事务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010585523.2A CN111753013B (zh) 2020-06-24 2020-06-24 分布式事务处理方法及装置

Publications (2)

Publication Number Publication Date
CN111753013A true CN111753013A (zh) 2020-10-09
CN111753013B CN111753013B (zh) 2024-04-16

Family

ID=72678496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010585523.2A Active CN111753013B (zh) 2020-06-24 2020-06-24 分布式事务处理方法及装置

Country Status (1)

Country Link
CN (1) CN111753013B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231413A (zh) * 2020-12-14 2021-01-15 国网汇通金财(北京)信息科技有限公司 分布式结果一致性的步进算法
CN112256712A (zh) * 2020-10-20 2021-01-22 北京思特奇信息技术股份有限公司 流程管理的子指令处理方法、系统、存储介质及电子设备
CN112559496A (zh) * 2020-12-24 2021-03-26 百果园技术(新加坡)有限公司 一种分布式数据库事务原子性实现方法及装置
CN112559140A (zh) * 2020-12-17 2021-03-26 江苏满运物流信息有限公司 数据一致性的事务控制方法、系统、设备及存储介质
CN112882803A (zh) * 2021-03-08 2021-06-01 万维云网(北京)数据科技有限公司 一种数据处理方法及系统
CN113420011A (zh) * 2021-06-29 2021-09-21 平安消费金融有限公司 redis事务回滚方法、装置、计算机设备和存储介质
CN113485998A (zh) * 2021-07-27 2021-10-08 中国银行股份有限公司 Redis事务处理方法及装置、电子设备、存储介质
CN114816681A (zh) * 2022-03-29 2022-07-29 江苏中交车旺科技有限公司 保险业务数据处理方法、装置、电子设备及存储介质
CN115719274A (zh) * 2022-11-23 2023-02-28 中电金信软件(上海)有限公司 一种分布式事务交易的控制方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN110008225A (zh) * 2019-03-19 2019-07-12 阿里巴巴集团控股有限公司 分布式事务的处理方法和装置
CN110532068A (zh) * 2019-07-18 2019-12-03 政采云有限公司 一种分布式事务的管理方法
CN111209142A (zh) * 2020-01-02 2020-05-29 中国平安财产保险股份有限公司 跨数据库的事务管理方法、装置、设备及存储介质
CN111259083A (zh) * 2020-02-13 2020-06-09 神州数码融信软件有限公司 分布式事务处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN110008225A (zh) * 2019-03-19 2019-07-12 阿里巴巴集团控股有限公司 分布式事务的处理方法和装置
CN110532068A (zh) * 2019-07-18 2019-12-03 政采云有限公司 一种分布式事务的管理方法
CN111209142A (zh) * 2020-01-02 2020-05-29 中国平安财产保险股份有限公司 跨数据库的事务管理方法、装置、设备及存储介质
CN111259083A (zh) * 2020-02-13 2020-06-09 神州数码融信软件有限公司 分布式事务处理方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256712A (zh) * 2020-10-20 2021-01-22 北京思特奇信息技术股份有限公司 流程管理的子指令处理方法、系统、存储介质及电子设备
CN112231413A (zh) * 2020-12-14 2021-01-15 国网汇通金财(北京)信息科技有限公司 分布式结果一致性的步进算法
CN112559140A (zh) * 2020-12-17 2021-03-26 江苏满运物流信息有限公司 数据一致性的事务控制方法、系统、设备及存储介质
CN112559140B (zh) * 2020-12-17 2022-07-26 江苏满运物流信息有限公司 数据一致性的事务控制方法、系统、设备及存储介质
CN112559496A (zh) * 2020-12-24 2021-03-26 百果园技术(新加坡)有限公司 一种分布式数据库事务原子性实现方法及装置
CN112882803A (zh) * 2021-03-08 2021-06-01 万维云网(北京)数据科技有限公司 一种数据处理方法及系统
CN112882803B (zh) * 2021-03-08 2024-05-14 万维云网(北京)数据科技有限公司 一种数据处理方法及系统
CN113420011A (zh) * 2021-06-29 2021-09-21 平安消费金融有限公司 redis事务回滚方法、装置、计算机设备和存储介质
CN113485998A (zh) * 2021-07-27 2021-10-08 中国银行股份有限公司 Redis事务处理方法及装置、电子设备、存储介质
CN114816681A (zh) * 2022-03-29 2022-07-29 江苏中交车旺科技有限公司 保险业务数据处理方法、装置、电子设备及存储介质
CN114816681B (zh) * 2022-03-29 2024-04-26 江苏中交车旺科技有限公司 保险业务数据处理方法、装置、电子设备及存储介质
CN115719274A (zh) * 2022-11-23 2023-02-28 中电金信软件(上海)有限公司 一种分布式事务交易的控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111753013B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
CN111753013B (zh) 分布式事务处理方法及装置
CN107077382B (zh) 在多租户应用服务器环境中进行事务恢复的系统和方法
US7543181B2 (en) Recovery from failures within data processing systems
CN108932338B (zh) 数据更新方法、装置、设备和介质
US6304882B1 (en) Data replication system and method
JP5254611B2 (ja) 固定内容分散データ記憶のためのメタデータ管理
US6493826B1 (en) Method and system for fault tolerant transaction-oriented data processing system
CN113396407A (zh) 用于利用区块链技术扩充数据库应用的系统和方法
US20040215998A1 (en) Recovery from failures within data processing systems
US20120124021A1 (en) Transaction log management
US7478099B1 (en) Methods and apparatus for collecting database transactions
CN111209142A (zh) 跨数据库的事务管理方法、装置、设备及存储介质
CN104793988A (zh) 跨数据库分布式事务的实现方法和装置
CN111522631A (zh) 分布式事务处理方法、装置、服务器及介质
CN110888718A (zh) 分布式事务的实现方法及装置
EP4189914B1 (en) Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems
CN112306743A (zh) 数据处理方法、装置、电子设备及计算机存储介质
US7680831B1 (en) Methods and apparatus for detection and recovery of database out of synchronization conditions
US20230333973A1 (en) Retrying failed test cases in software testing using parallel threads
WO2023111910A1 (en) Rolling back database transaction
US11768741B2 (en) Replicating changes written by a transactional virtual storage access method
CN113900840A (zh) 一种分布式事务最终一致性处理方法及装置
CN111831455A (zh) 工业物联网下分布式事务处理系统及方法
US10459810B2 (en) Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery
CN112749156A (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