CN109491768A - 一种基于子事务流的分布式事务动态处理方法和*** - Google Patents
一种基于子事务流的分布式事务动态处理方法和*** Download PDFInfo
- Publication number
- CN109491768A CN109491768A CN201811393380.4A CN201811393380A CN109491768A CN 109491768 A CN109491768 A CN 109491768A CN 201811393380 A CN201811393380 A CN 201811393380A CN 109491768 A CN109491768 A CN 109491768A
- Authority
- CN
- China
- Prior art keywords
- subtransaction
- subtransactions
- stream
- distributed transaction
- multiple subtransactions
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于子事务流的分布式事务动态处理方法,包括以下步骤:业务***将分布式事务拆分为多个子事务;建立事务协调器,业务***将多个所述子事务发送给所述事务协调器,事务协调器对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,并动态生成子事务执行流;建立事务管理器,将所述事务管理器与多个所述子事务绑定,建立事务管理器与多个子事务之间的通信通道;根据所述子事务执行流,串行或并行执行多个所述子事务;本发明还提供一种基于子事务流的分布式事务动态处理***;本发明既确保了数据的最终一致性,又大幅提升用户业务操作的并发处理效率。
Description
技术领域
本发明涉及分布式计算机技术领域,特别是一种基于子事务流的分布式事务动态处理方法和***。
背景技术
在传统分布式事务处理技术中,事务处理通常采用串行方式来处理各子事务,分布式事务最基本的解决方案是“二阶段提交协议”,它是基于分布式***架构下的所有环节在进行事务提交时保持一致性而设计的算法。“二阶段提交协议”包括两个阶段:“准备”阶段和“提交或者回滚”阶段。在准备阶段,需要锁定资源,如果有失败,则发起回滚,收到回滚成功应答后才会进行事务完结处理,否则会不断尝试回滚直到成功;如果成功,则进入提交阶段,在提交过程中,如果有异常,则会不断进行重试提交,直到成功。
因此,在分布式架构中,需要一种既能保证事务的一致性,又可以提升多用户业务操作并发执行效率的分布式事务处理方案。
发明内容
为解决现有技术中存在的问题,本发明的目的是提供一种基于子事务流的分布式事务动态处理方法和***,本发明既确保了数据的最终一致性,又大幅提升用户业务操作的并发处理效率。
为实现上述目的,本发明采用的技术方案是:一种基于子事务流的分布式事务动态处理方法,包括以下步骤:
S1、业务***将分布式事务拆分为多个子事务;
S2、建立事务协调器,业务***将多个所述子事务发送给所述事务协调器,事务协调器对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,并动态生成子事务执行流;
S3、建立事务管理器,将所述事务管理器与多个所述子事务绑定,建立事务管理器与多个子事务之间的通信通道;
S4、根据所述子事务执行流,串行或并行执行多个所述子事务。
作为一种优选的实施方式,所述步骤S4具体如下:
如果当前节点所有子事务执行成功则进入下一节点继续执行,直至结束;如果当前节点有子事务执行失败则回滚当前子事务,并且如果当前节点有其他子事务则通知当前节点其他子事务回滚,同时,如果当前节点有前一级节点则继续通知前一级节点所有子事务回滚,直至结束。
本发明还提供一种基于子事务流的分布式事务动态处理***,包括:
业务***,用于将分布式事务拆分为多个子事务并将多个所述子事务发送给事务协调器;
事务协调器,用于获取分布式事务对应的多个子事务,并对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,动态生成子事务执行流;
事务管理器,用于记录当前子事务的状态,并与多个所述子事务绑定后建立事务管理器与多个子事务之间的通信通道。
作为一种优选的实施方式,所述事务管理器记录当前子事务的状态包括未开始,成功,失败和回滚。
本发明的有益效果是:
本发明提供的基于子事务流的分布式事务动态处理方法和***,事务协调器获取分布式事务的多个子事务,动态生成子事务执行流,并行或串行处理多个分支事务,事务管理器记录子事务的执行状态,由此,缩短了中间过程,降低了时间复杂度,大大提高了用户操作的并发效率。
附图说明
图1为本发明实施例基于子事务流的分布式事务动态处理方法的流程图;
图2为本发明实施例基于子事务流的分布式事务动态处理***的***框图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例
如图1所示,一种基于子事务流的分布式事务动态处理方法,包括以下步骤:
101、业务***将分布式事务拆分为多个子事务;
102、建立事务协调器,业务***将多个所述子事务发送给所述事务协调器,事务协调器对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,并动态生成子事务执行流;
103、建立事务管理器,将所述事务管理器与多个所述子事务绑定,建立事务管理器与多个子事务之间的通信通道;
104、根据所述子事务执行流,串行或并行执行多个所述子事务,如果当前节点所有子事务执行成功则进入下一节点继续执行,直至结束;如果当前节点有子事务执行失败则回滚当前子事务,并且如果当前节点有其他子事务则通知当前节点其他子事务回滚,同时,如果当前节点有前一级节点则继续通知前一级节点所有子事务回滚,直至结束。
本实施例还提供一种基于子事务流的分布式事务动态处理***,包括:
业务***,用于将分布式事务拆分为多个子事务并将多个所述子事务发送给事务协调器;
事务协调器,用于获取分布式事务对应的多个子事务,并对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,动态生成子事务执行流;
事务管理器,用于记录当前子事务的状态,该状态分为未开始,成功,失败和回滚,并与多个所述子事务绑定后建立事务管理器与多个子事务之间的通信通道。
下面对本实施例作进一步说明:
首先,业务***将分布式事务拆分为多个子事务;
业务***根据业务需要,将分布式事务拆分为多个子事务。以多用户之间转账关系“从用户A1转账1000元给用户A2,用户A2转账2000元给用户A3,用户A2转账1000元给用户A4,用户A2原账户余额为2500元”为例来说,可以将分布式事务划分为六个子事务,该六个子事务分别用于如下处理:子事务B1为“A1账户减1000元”,子事务B2为“A2账户加1000元”,子事务B3为“A2账户减2000元”,子事务B4为“A3账户加2000元”,子事务B5为“A2账户减1000元”和子事务B6为“A4账户加1000元”。
其次,建立事务协调器,用于获取分布式事务对应的多个子事务,所述业务***将拆分的多个子事务发送给事务协调器;
再次,所述事务协调器对所述多个子事务进行解析,以确定多个所述子事务所需的前置执行条件,动态生成子事务执行流;
如前述例子,通过六个子事务生成的子事务流为:先并行执行子事务B1,子事务B2,子事务B3,子事务B4和子事务B6,再串行执行子事务B5,或者,先并行执行子事务B1,子事务B2,子事务B4,子事务B5和子事务B6,再串行执行子事务B3。
接着,建立事务管理器,用于记录当前各个子事务的状态,该状态分为未开始,成功,失败和回滚,与所述多个子事务进行绑定,以用于事务管理器与多个子事务之间的通信;
最后,根据所述子事务执行流,并行或串行处理所述多个子事务,如果当前节点所有子事务执行成功则进入下一节点继续执行,直至结束,如果当前节点有子事务执行失败则回滚当前子事务,并且如果当前节点有其他子事务则通知当前节点其他子事务回滚,同时,如果当前节点有前一级节点则继续通知前一级节点所有子事务回滚,直至结束。
如前述例子,以执行流“先并行执行子事务B1,子事务B2,子事务B3,子事务B4和子事务B6,再串行执行子事务B5”为例,进一步阐述子事务执行过程:
如果子事务B1、B2、B3、B4、B6都执行成功,则继续执行子事务B5,如果也执行成功,则返回事务执行结果结束;
如果子事务B1、B2、B3、B4、B6都执行成功,则继续执行子事务B5,如果执行失败,则回滚子事务B5,并发布消息通知前一级节点,回滚子事务B1、B2、B3、B4、B6,然后返回事务执行结果结束;
如果子事务B1、B2、B3、B4、B6中有一个子事务执行失败,假设B6执行失败,其余都执行成功,则回滚子事务B6,并发布消息通知当前节点其他子事务B1、B2、B3、B4进行回滚,然后返回事务执行结果结束。
本实施例通过动态生成的子事务执行流,并行或串行执行分布式事务的各个子事务,既保证业务***数据的最终一致性,又有效提升了业务***的并发效率。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (4)
1.一种基于子事务流的分布式事务动态处理方法,其特征在于,包括以下步骤:
S1、业务***将分布式事务拆分为多个子事务;
S2、建立事务协调器,业务***将多个所述子事务发送给所述事务协调器,事务协调器对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,并动态生成子事务执行流;
S3、建立事务管理器,将所述事务管理器与多个所述子事务绑定,建立事务管理器与多个子事务之间的通信通道;
S4、根据所述子事务执行流,串行或并行执行多个所述子事务。
2.根据权利要求1所述的基于子事务流的分布式事务动态处理方法,其特征在于,所述步骤S4具体如下:
如果当前节点所有子事务执行成功则进入下一节点继续执行,直至结束;如果当前节点有子事务执行失败则回滚当前子事务,并且如果当前节点有其他子事务则通知当前节点其他子事务回滚,同时,如果当前节点有前一级节点则继续通知前一级节点所有子事务回滚,直至结束。
3.一种基于子事务流的分布式事务动态处理***,其特征在于,包括:
业务***,用于将分布式事务拆分为多个子事务并将多个所述子事务发送给事务协调器;
事务协调器,用于获取分布式事务对应的多个子事务,并对多个所述子事务进行解析,确定多个所述子事务所需的前置执行条件,动态生成子事务执行流;
事务管理器,用于记录当前子事务的状态,并与多个所述子事务绑定后建立事务管理器与多个子事务之间的通信通道。
4.根据权利要求3所述的基于子事务流的分布式事务动态处理***,其特征在于,所述事务管理器记录当前子事务的状态包括未开始,成功,失败和回滚。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811393380.4A CN109491768A (zh) | 2018-11-21 | 2018-11-21 | 一种基于子事务流的分布式事务动态处理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811393380.4A CN109491768A (zh) | 2018-11-21 | 2018-11-21 | 一种基于子事务流的分布式事务动态处理方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109491768A true CN109491768A (zh) | 2019-03-19 |
Family
ID=65697275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811393380.4A Pending CN109491768A (zh) | 2018-11-21 | 2018-11-21 | 一种基于子事务流的分布式事务动态处理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491768A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611479A (zh) * | 2020-05-07 | 2020-09-01 | 北京达佳互联信息技术有限公司 | 用于网络资源推荐的数据处理方法及相关装置 |
CN112231144A (zh) * | 2020-09-29 | 2021-01-15 | 上海艾融软件股份有限公司 | 一种数据处理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
CN108415757A (zh) * | 2018-02-02 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及装置 |
CN108519918A (zh) * | 2018-03-14 | 2018-09-11 | 广东能龙教育股份有限公司 | 一种基于事务链的分布式事务处理方法 |
-
2018
- 2018-11-21 CN CN201811393380.4A patent/CN109491768A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
CN108415757A (zh) * | 2018-02-02 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及装置 |
CN108519918A (zh) * | 2018-03-14 | 2018-09-11 | 广东能龙教育股份有限公司 | 一种基于事务链的分布式事务处理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611479A (zh) * | 2020-05-07 | 2020-09-01 | 北京达佳互联信息技术有限公司 | 用于网络资源推荐的数据处理方法及相关装置 |
CN111611479B (zh) * | 2020-05-07 | 2024-02-13 | 北京达佳互联信息技术有限公司 | 用于网络资源推荐的数据处理方法及相关装置 |
CN112231144A (zh) * | 2020-09-29 | 2021-01-15 | 上海艾融软件股份有限公司 | 一种数据处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020001370A1 (zh) | 一种多链并发交易方法 | |
CN105518641B (zh) | 点对点数据复制方法、设备和***以及主节点切换方法、设备和*** | |
CN111277639B (zh) | 一种保持数据一致性的方法和装置 | |
CN107193672B (zh) | 一种跨区块异步调用合约*** | |
CN106445644A (zh) | 基于改进的一阶段提交的分布式事务的处理方法和装置 | |
CN108415757A (zh) | 分布式事务处理方法及装置 | |
JPH035846A (ja) | リモート・アプリケーシヨン実行方式 | |
KR101099227B1 (ko) | 복제 명령들을 서브스크라이버들에게 분배하는 컴퓨팅 시스템, 컴퓨터화된 방법 및 컴퓨터 판독가능 기록 매체 | |
CN105260238B (zh) | 一种多进程提升性能部署的方法 | |
CN108376142A (zh) | 一种分布式内存数据库数据同步方法及*** | |
CN103139157A (zh) | 一种基于socket的网络通信方法、装置及*** | |
CN108519918A (zh) | 一种基于事务链的分布式事务处理方法 | |
CN106354566A (zh) | 一种命令处理的方法以及服务器 | |
CN109491768A (zh) | 一种基于子事务流的分布式事务动态处理方法和*** | |
CN110300188A (zh) | 数据传输***、方法和设备 | |
WO2024051454A1 (zh) | 处理事务日志的方法及装置 | |
CN106845625A (zh) | 一种用于机器人的交互输出方法以及机器人 | |
CN108090056B (zh) | 数据查询方法、装置及*** | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
CN103729391A (zh) | 能够重新启动事务的客户端装置和数据库服务器及方法 | |
CN106354493B (zh) | 一种解决传统软件开发痛点的开发模式的实现方法 | |
CN109889406A (zh) | 用于管理网络连接的方法、装置、设备和存储介质 | |
CN110109757B (zh) | 一种基于云计算的高性能计算方法 | |
CN107465725A (zh) | 基于客户信息控制***的异构长事务处理***及方法 | |
WO2022267395A1 (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190319 |