CN106201666A - 一种分布式事务实现方法 - Google Patents
一种分布式事务实现方法 Download PDFInfo
- Publication number
- CN106201666A CN106201666A CN201610465860.1A CN201610465860A CN106201666A CN 106201666 A CN106201666 A CN 106201666A CN 201610465860 A CN201610465860 A CN 201610465860A CN 106201666 A CN106201666 A CN 106201666A
- Authority
- CN
- China
- Prior art keywords
- data
- message queue
- distributed transaction
- application program
- data base
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000007792 addition Methods 0.000 claims description 21
- 238000012217 deletion Methods 0.000 claims description 21
- 230000037430 deletion Effects 0.000 claims description 21
- 238000005096 rolling process Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 description 3
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式事务实现方法,其实现过程为:步骤一:在分布式***中,应用程序的一个模块发起分布式事务时先将数据的增删改操作应用于一个数据库和消息队列中,整体提交或回滚;步骤二:应用程序中的另一个模块从消息队列异步取出数据并提交到另一个数据库中。该一种分布式事务实现方法与现有技术相比,可有效提高分布式事务的性能,提高利用分布式事务的应用并发处理能力,改善使用分布式事务的应用用户体验,实用性强,适用范围广泛,易于推广。
Description
技术领域
本发明涉及分布式事务处理技术领域,具体地说是一种实用性强、分布式事务实现方法。
背景技术
分布式事务是指在一个事务中,操作的资源(通常是数据库)不只一个,对一个事务中涉及到的所有资源要一致操作,要么全成功提交,要么全回滚,从而保证数据的一致性。为了实现分布式事务,通常需要使用两阶段提交协议。
阶段一:开始向事务涉及到的全部资源发送提交前信息,此时事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新,否则事务将正常执行,除非发生灾难性的失败。
阶段二:只在阶段一没有异常结束的时候才会发生,此时所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 分布式事务保证了事务的原子性,即所有参与者要么全做要么全不做。
使用两阶段提交协议实现分布式事务性能很低,使用两阶段提交协议的***往往用户体验较差,无法用于并发量较大的场景。
基于此,本发明提供了一种分布式事务的实现方法,既能使分布式事务所涉及的资源保持数据一致性,同时性能得到大幅提高,可用于并发量很大的场景。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、分布式事务实现方法。
一种分布式事务实现方法,其实现过程为:
步骤一:在分布式***中,应用程序的一个模块发起分布式事务时先将数据的增删改操作应用于一个数据库和消息队列中,整体提交或回滚;
步骤二:应用程序中的另一个模块从消息队列异步取出数据并提交到另一个数据库中。
在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;
4)应用程序的另一个模块B异步准实时地从消息队列一中获取数据,再将数据提交到数据库二中,通过模块A和模块B的异步协同操作,从而完成分布式事务的整体提交,确保了数据的一致性。
在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;消息软件将数据从消息队列一准实时发送到消息队列二中;
4)应用程序的另一个模块B经过异步准实时地从消息队列二中获取数据,再将数据提交到数据库二中。
在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;
4)消息软件将数据从消息队列一准实时发送到消息队列二中,同时复制一份数据将数据从消息队列一准实时发送到消息队列三中;
5)应用程序的另一个模块B异步准实时地从消息队列二中获取数据,再将数据提交到数据库二中;
6)应用的另一个模块C异步准实时地从消息队列三中获取数据,再将数据提交到数据库三中。
本发明的一种分布式事务实现方法,具有以下优点:
该发明的一种分布式事务实现方法,可有效提高分布式事务的性能,提高利用分布式事务的应用并发处理能力,改善使用分布式事务的应用用户体验,实用性强,适用范围广泛,易于推广。
附图说明
附图1为第一种分布式事务实现流程图。
附图2为第二种分布式事务实现流程图。
附图3为第三种分布式事务实现流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
本发明提供一种分布式事务实现方法,该方法的实现过程为:
步骤一:在分布式***中,应用程序的一个模块发起分布式事务时先将数据的增删改操作应用于一个数据库和消息队列中,整体提交或回滚;
步骤二:应用程序中的另一个模块从消息队列异步取出数据并提交到另一个数据库中。
在步骤一中,数据源即为数据库,如附图1所示,该方法的具体操作过程为:
应用程序的一个模块A经过操作①对数据库1执行增删改操作;
然后经过操作②将增删改的数据以消息的方式存储在本地的高性能可靠消息队列1中;
两者都成功后,经过操作③和④作为一个事务整体提交,如果①或②中有任何一个失败,则操作③和④为回滚操作。
应用程序的另一个模块B经过操作⑤异步准实时地从消息队列1中获取数据,再经操作⑥将数据提交到数据库2中,通过模块A和模块B的异步协同操作,从而完成分布式事务的整体提交,确保了数据的一致性。
在步骤一中,数据源即为数据库,如附图2所示,该方法的具体操作过程为:
应用程序的一个模块A经过操作①对数据库1执行增删改操作;
然后经过操作②将增删改的数据以消息的方式存储在本地的高性能可靠消息队列1中;
两者都成功后,经过操作③和④作为一个事务整体提交,如果①或②中有任何一个失败,则操作③和④为回滚操作。
消息软件IMQ通过操作⑦将数据从消息队列1准实时发送到消息队列2中。
应用程序的另一个模块B经过操作⑤异步准实时地从消息队列2中获取数据,再经操作⑥将数据提交到数据库2中。
在步骤一中,数据源即为数据库,如附图3所示,该方法的具体操作过程为:
应用程序的一个模块A经过操作①对数据库1执行增删改操作;
然后经过操作②将增删改的数据以消息的方式存储在本地的高性能可靠消息队列1中;
两者都成功后,经过操作③和④作为一个事务整体提交,如果①或②中有任何一个失败,则操作③和④为回滚操作。
消息软件IMQ通过操作⑦将数据从消息队列1准实时发送到消息队列2中,同时复制一份数据通过操作⑧将数据从消息队列1准实时发送到消息队列3中。
应用程序的另一个模块B经过操作⑤异步准实时地从消息队列2中获取数据,再经操作⑥将数据提交到数据库2中。
应用程序的另一个模块C经过操作⑨异步准实时地从消息队列3中获取数据,再经操作⑩将数据提交到数据库3中。类似图3所示流程可扩展到更多的数据库分布式事务处理中。
此外,本发明可扩展到更多的数据库分布式事务处理中。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种分布式事务实现方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (4)
1.一种分布式事务实现方法,其特征在于,其实现过程为:
步骤一:在分布式***中,应用程序的一个模块发起分布式事务时先将数据的增删改操作应用于一个数据库和消息队列中,整体提交或回滚;
步骤二:应用程序中的另一个模块从消息队列异步取出数据并提交到另一个数据库中。
2.根据权利要求1所述的一种分布式事务实现方法,其特征在于,在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;
4)应用程序的另一个模块B异步准实时地从消息队列一中获取数据,再将数据提交到数据库二中,通过模块A和模块B的异步协同操作,从而完成分布式事务的整体提交,确保了数据的一致性。
3.根据权利要求1所述的一种分布式事务实现方法,其特征在于,在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;消息软件将数据从消息队列一准实时发送到消息队列二中;
4)应用程序的另一个模块B经过异步准实时地从消息队列二中获取数据,再将数据提交到数据库二中。
4.根据权利要求1所述的一种分布式事务实现方法,其特征在于,在步骤一中,数据源即为数据库,该方法的具体操作过程为:
1)应用程序的模块A对数据库一执行增删改操作;
2)将增删改的数据以消息的方式存储在本地的高性能可靠消息队列一中;
3)步骤1)与2)两者都成功后,则作为一个事务整体提交,如果步骤1)与2)中有任何一个失败,则进行回滚操作;
4)消息软件将数据从消息队列一准实时发送到消息队列二中,同时复制一份数据将数据从消息队列一准实时发送到消息队列三中;
5)应用程序的另一个模块B异步准实时地从消息队列二中获取数据,再将数据提交到数据库二中;
6)应用的另一个模块C异步准实时地从消息队列三中获取数据,再将数据提交到数据库三中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610465860.1A CN106201666A (zh) | 2016-06-24 | 2016-06-24 | 一种分布式事务实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610465860.1A CN106201666A (zh) | 2016-06-24 | 2016-06-24 | 一种分布式事务实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106201666A true CN106201666A (zh) | 2016-12-07 |
Family
ID=57461464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610465860.1A Pending CN106201666A (zh) | 2016-06-24 | 2016-06-24 | 一种分布式事务实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201666A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391339A (zh) * | 2017-07-20 | 2017-11-24 | 浪潮软件股份有限公司 | 一种基于imq消息队列的监控处理方法 |
CN109684045A (zh) * | 2017-10-18 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 事务消息的处理方法、装置及电子设备 |
CN110009759A (zh) * | 2019-04-18 | 2019-07-12 | 众安信息技术服务有限公司 | 基于区块链的考勤方法、考勤***及考勤装置 |
CN111752911A (zh) * | 2020-06-29 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 一种基于Flume的数据传输方法、***、终端及存储介质 |
CN113609199A (zh) * | 2021-07-27 | 2021-11-05 | 远景智能国际私人投资有限公司 | 数据库***、服务器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765798A (zh) * | 2015-03-26 | 2015-07-08 | 深圳市一科互联有限公司 | Mysql异地同步增强容错性的实现***及实现方法 |
CN105338093A (zh) * | 2015-11-16 | 2016-02-17 | 中国建设银行股份有限公司 | 一种数据同步方法和*** |
CN105512244A (zh) * | 2015-11-30 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 基于消息队列实现数据库事务处理的方法及装置 |
-
2016
- 2016-06-24 CN CN201610465860.1A patent/CN106201666A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765798A (zh) * | 2015-03-26 | 2015-07-08 | 深圳市一科互联有限公司 | Mysql异地同步增强容错性的实现***及实现方法 |
CN105338093A (zh) * | 2015-11-16 | 2016-02-17 | 中国建设银行股份有限公司 | 一种数据同步方法和*** |
CN105512244A (zh) * | 2015-11-30 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 基于消息队列实现数据库事务处理的方法及装置 |
Non-Patent Citations (1)
Title |
---|
ITFLY8架构师之家: ""大型网站架构系列:分布式消息队列(一)"", 《ITFLY8架构师之家》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391339A (zh) * | 2017-07-20 | 2017-11-24 | 浪潮软件股份有限公司 | 一种基于imq消息队列的监控处理方法 |
CN109684045A (zh) * | 2017-10-18 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 事务消息的处理方法、装置及电子设备 |
CN109684045B (zh) * | 2017-10-18 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 事务消息的处理方法、装置及电子设备 |
CN110009759A (zh) * | 2019-04-18 | 2019-07-12 | 众安信息技术服务有限公司 | 基于区块链的考勤方法、考勤***及考勤装置 |
CN111752911A (zh) * | 2020-06-29 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 一种基于Flume的数据传输方法、***、终端及存储介质 |
CN113609199A (zh) * | 2021-07-27 | 2021-11-05 | 远景智能国际私人投资有限公司 | 数据库***、服务器及存储介质 |
CN113609199B (zh) * | 2021-07-27 | 2023-09-12 | 远景智能国际私人投资有限公司 | 数据库***、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201666A (zh) | 一种分布式事务实现方法 | |
CN108959292B (zh) | 一种数据上传方法、***和计算机可读存储介质 | |
CN108710638B (zh) | 一种基于混合rdma操作的分布式并发控制方法及*** | |
CN105653630B (zh) | 分布式数据库的数据迁移方法与装置 | |
US11917005B2 (en) | Clustered storage system synchronization | |
US20160350350A1 (en) | Ensuring the same completion status for transactions after recovery in a synchronous replication environment | |
CN106777270A (zh) | 一种基于提交点时间线同步的异构数据库复制并行执行***及方法 | |
CN104361065A (zh) | 基于Zookeeper的分布式***的有序序列号生成方法 | |
CN103377269B (zh) | 传感器数据定位方法和装置 | |
CN102946410A (zh) | 网络同步方法和装置 | |
CN102946411A (zh) | 网络同步*** | |
US20170269859A1 (en) | Method and apparatus for storage system | |
CN106168915A (zh) | 分布式***架构数据处理一致性保障方法 | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
CN105574026A (zh) | 非关系型数据库支持事务的方法及装置 | |
US20130318146A1 (en) | System and Method for Committing Transactions on Remote Servers | |
CN110008284A (zh) | 基于数据页预加载及回滚的数据库数据同步方法及设备 | |
CN108924184B (zh) | 数据处理方法和服务器 | |
CN112364104A (zh) | 分布式数据库扩容方法、分布式数据库***及计算机可读存储介质 | |
CN103761106A (zh) | 流程的控制方法及流程引擎 | |
CN101394405A (zh) | 一种数据请求处理的方法和装置 | |
EP3063630B1 (en) | Non-blocking registration in distributed transactions | |
US20210240698A1 (en) | Asynchronous remote calls with undo data structures | |
CN108984660A (zh) | 一种MySQL数据库主从同步数据去重方法 | |
CN104601655B (zh) | 智能插座的控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161207 |