CN106383737A - 一种分布式事务处理方法 - Google Patents
一种分布式事务处理方法 Download PDFInfo
- Publication number
- CN106383737A CN106383737A CN201610812266.5A CN201610812266A CN106383737A CN 106383737 A CN106383737 A CN 106383737A CN 201610812266 A CN201610812266 A CN 201610812266A CN 106383737 A CN106383737 A CN 106383737A
- Authority
- CN
- China
- Prior art keywords
- message
- local matter
- execution
- local
- transaction
- 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
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
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)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种分布式事务处理方法,属于事务处理技术领域,在本发明中,将分布式事务进行拆分,拆分为多个子事务,保证第一个子事务为本地事务,在执行第二个子事务之前,先将消息发布到消息中间件,再由消息中间件向其他参与事务的节点推送消息,以使该节点执行本地事务,若该节点的本地事务执行失败,则请求消息中间件再次发送执行本地事务的消息,直到该节点的本地事务执行成功,从而达到数据的最终一致性。为了消除重复消息,在本地创建消息应用状态表,记录消息执行情况,避免重复执行,保证操作的幂等性。
Description
技术领域
本发明涉及事务处理技术领域,尤其涉及一种分布式事务处理方法。
背景技术
在基于分布式服务框架实现业务系统开发时,一种是通过业务功能合并,避免使用分布式事务,另一种采用两段式提交。合并业务功能避免分布式事务,导致业务模块之间的耦合性增强,不易于扩展和维护,而采用两段式提交需要数据库支持分布式事务,数据库ACID特性以损害系统的可用性、性能与可伸缩性为代价。只有在参与分布式事务的每个数据库实例都操作成功的情况下,分布式事务才能成功,只要有一个数据库实例操作失败,整个事务就不能完成。系统的可用性等于参与分布式事务的各实例的可用性的乘积,实例越多,系统的可用性越低。从性能角度看,事务的总持续时间通常是各实例操作时间之和,因为在一个事务中的各操作通常是顺序执行的,这样事务的响应时间就会增加很多。由于事务持续时间的增加,事务对相关资源的锁定时间也相应增加,从而增加可对临界资源的访问冲突,进而影响到系统吞吐率和可伸缩性。
发明内容
为了解决现有技术中的技术问题,本发明提出了一种分布式事务处理方法,能够实现事务的最终一致性,提高分布式事务的可用性和可伸缩性。
在本发明中,将分布式事务进行拆分,拆分为多个子事务,保证第一个子事务为本地事务,在执行第二个子事务之前,先将消息发布到消息中间件,再由消息中间件向其他参与事务的节点推送消息,以使该节点执行本地事务,若该节点的本地事务执行失败,则请求消息中间件再次发送执行本地事务的消息,直到该节点的本地事务执行成功,从而达到数据的最终一致性。为了消除重复消息,在本地创建消息应用状态表,记录消息执行情况,避免重复执行,保证操作的幂等性。
具体包括:
步骤1:将分布式事务进行拆分,拆分为多个子事务,使子事务就有本地事务特性
步骤2:执行第一个子事务将第二个子事务操作发送到消息中间件,由独立的消息处理单元执行该事务操作,保证第一个子事务为本地事务。
步骤3:消息中间件将消息推送到其他节点,以触发其他节点执行本地事务。
步骤4:接收到消息执行本地事务,在执行本地事务前,将消息写入本地消息应用状态表,然后执行本地事务,若执行成功则通知消息中间件删除消息,更新消息应用状态表,分布式事务执行成功;若执行本地事务失败,则执行步骤5
步骤5:若本地事务执行失败则从消息中间件重新获取消息,与本地消息应用状态表中的记录做对比,若表中记录为失败状态,则执行本地事务,直到事务执行成功;若表中记录为成功状态则表示为重复消息,不执行。
本发明的有益效果是
1、使用该分布式事务提交方法,避免传统的分布式事务提交方式,可以提高分布式事务的执行效率。
2、使用该分布式事务提交方法,可以降低对数据库的要求,降低数据库成本。
3、使用该分布式事务提交方法,能够与分布式服务框架结合实现具有分布式事务特性的业务系统的分布式部署。
附图说明
图1是本发明的提交过程图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明的分布式事务处理方法,具体包括:
步骤1:将分布式事务进行拆分,拆分为多个子事务,使子事务就有本地事务特性
步骤2:执行第一个子事务将第二个子事务操作发送到消息中间件,由独立的消息处理单元执行该事务操作,保证第一个子事务为本地事务。
步骤3:消息中间件将消息推送到其他节点,以触发其他节点执行本地事务。
步骤4:接收到消息执行本地事务,在执行本地事务前,将消息写入本地消息应用状态表,然后执行本地事务,若执行成功则通知消息中间件删除消息,更新消息应用状态表,分布式事务执行成功;若执行本地事务失败,则执行步骤5
步骤5:若本地事务执行失败则从消息中间件重新获取消息,与本地消息应用状态表中的记录做对比,若表中记录为失败状态,则执行本地事务,直到事务执行成功;若表中记录为成功状态则表示为重复消息,不执行。
Claims (3)
1.一种分布式事务处理方法,其特征在于,
将分布式事务进行拆分,拆分为数个子事务,保证第一个子事务为本地事务,在执行第二个子事务之前,先将消息发布到消息中间件,再由消息中间件向其他参与事务的节点推送消息,以使该节点执行本地事务,若该节点的本地事务执行失败,则请求消息中间件再次发送执行本地事务的消息,直到该节点的本地事务执行成功,从而达到数据的最终一致性。
2.根据权利要求1所述的方法,其特征在于,为了消除重复消息,在本地创建消息应用状态表,记录消息执行情况。
3.根据权利要求2所述的方法,其特征在于,
具体包括:
步骤1:将分布式事务进行拆分,拆分为数个子事务,使子事务就有本地事务特性;
步骤2:执行第一个子事务将第二个子事务操作发送到消息中间件,由独立的消息处理单元执行该事务操作,保证第一个子事务为本地事务;
步骤3:消息中间件将消息推送到其他节点,以触发其他节点执行本地事务;
步骤4:接收到消息执行本地事务,在执行本地事务前,将消息写入本地消息应用状态表,然后执行本地事务,若执行成功则通知消息中间件删除消息,更新消息应用状态表,分布式事务执行成功;若执行本地事务失败,则执行步骤5;
步骤5:若本地事务执行失败则从消息中间件重新获取消息,与本地消息应用状态表中的记录做对比,若表中记录为失败状态,则执行本地事务,直到事务执行成功;若表中记录为成功状态则表示为重复消息,不执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610812266.5A CN106383737A (zh) | 2016-09-09 | 2016-09-09 | 一种分布式事务处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610812266.5A CN106383737A (zh) | 2016-09-09 | 2016-09-09 | 一种分布式事务处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106383737A true CN106383737A (zh) | 2017-02-08 |
Family
ID=57935453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610812266.5A Pending CN106383737A (zh) | 2016-09-09 | 2016-09-09 | 一种分布式事务处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106383737A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
CN109376526A (zh) * | 2018-09-27 | 2019-02-22 | 拉扎斯网络科技(上海)有限公司 | 权限控制方法、装置、电子设备及计算机可读存储介质 |
CN109522098A (zh) * | 2018-11-28 | 2019-03-26 | 星环信息科技(上海)有限公司 | 分布式数据库中的事务处理方法、装置、系统和储存介质 |
CN110049113A (zh) * | 2019-04-02 | 2019-07-23 | 中国联合网络通信集团有限公司 | 业务消息处理方法及装置 |
CN110147287A (zh) * | 2019-04-24 | 2019-08-20 | 珠海市珠澳跨境工业区好易通科技有限公司 | 一种消息队列收发系统及方法 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN111786875A (zh) * | 2020-06-10 | 2020-10-16 | 武汉遂意语联网络科技有限公司 | 基于分布式架构的数据处理方法及装置 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340537A (zh) * | 2011-06-30 | 2012-02-01 | 北京新媒传信科技有限公司 | 一种分布式事务处理方法和装置 |
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN105893395A (zh) * | 2015-01-26 | 2016-08-24 | 阿里巴巴集团控股有限公司 | 分布式事务的消息回查方法及其系统 |
-
2016
- 2016-09-09 CN CN201610812266.5A patent/CN106383737A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340537A (zh) * | 2011-06-30 | 2012-02-01 | 北京新媒传信科技有限公司 | 一种分布式事务处理方法和装置 |
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN105893395A (zh) * | 2015-01-26 | 2016-08-24 | 阿里巴巴集团控股有限公司 | 分布式事务的消息回查方法及其系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
CN109376526A (zh) * | 2018-09-27 | 2019-02-22 | 拉扎斯网络科技(上海)有限公司 | 权限控制方法、装置、电子设备及计算机可读存储介质 |
CN109522098A (zh) * | 2018-11-28 | 2019-03-26 | 星环信息科技(上海)有限公司 | 分布式数据库中的事务处理方法、装置、系统和储存介质 |
CN110049113A (zh) * | 2019-04-02 | 2019-07-23 | 中国联合网络通信集团有限公司 | 业务消息处理方法及装置 |
CN110147287A (zh) * | 2019-04-24 | 2019-08-20 | 珠海市珠澳跨境工业区好易通科技有限公司 | 一种消息队列收发系统及方法 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN111786875A (zh) * | 2020-06-10 | 2020-10-16 | 武汉遂意语联网络科技有限公司 | 基于分布式架构的数据处理方法及装置 |
CN112765126A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106383737A (zh) | 一种分布式事务处理方法 | |
US20120259912A1 (en) | Cluster unique identifier | |
US20120011100A1 (en) | Snapshot acquisition processing technique | |
CN105824842A (zh) | 分布式事务处理方法及其系统 | |
US10609123B2 (en) | Hybrid quorum policies for durable consensus in distributed systems | |
US10055445B2 (en) | Transaction processing method and apparatus | |
US9465648B2 (en) | Distributed transaction processing through commit messages sent to a downstream neighbor | |
US20130067493A1 (en) | Deployment of pre-scheduled tasks in clusters | |
WO2014000430A1 (zh) | 一种实现高可用集群的心跳服务的方法及装置 | |
CN110083651B (zh) | 一种数据加载的方法和装置 | |
WO2016177130A1 (zh) | 通讯节点的选择方法及装置 | |
CN109241186A (zh) | 分布式事务的管理方法、系统、计算机设备及存储介质 | |
WO2022048357A1 (zh) | 交易背书方法、装置及存储介质 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN102867035A (zh) | 一种分布式文件系统集群高可用方法和装置 | |
US20070168507A1 (en) | Resource arbitration via persistent reservation | |
US11223522B1 (en) | Context-based intelligent re-initiation of microservices | |
WO2023020242A1 (zh) | 基于区块链的数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN105183879A (zh) | 一种云计算下分布式数据库保持事务一致性的方法 | |
JP5497861B2 (ja) | サーバ、ファイル管理システム、ファイル管理方法およびファイル管理プログラム | |
US10318385B2 (en) | Service recovery using snapshots and interservice messages | |
JP2005301436A (ja) | クラスタシステムおよびクラスタシステムにおける障害回復方法 | |
CN114936253A (zh) | 区块链的共识方法及装置、电子设备、存储介质 | |
CN106911557B (zh) | 消息传输方法和装置 | |
CN114860505A (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: 20170208 |