`
vvggsky
  • 浏览: 65563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

两阶段提交协议

    博客分类:
  • DB
阅读更多
在第一阶段,交易中间件请求所有相关数据库准备提交(预提交)各自的事务分支,以确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,并给交易中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放(处于锁定状态)。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,释放对共享资源上的锁,并返回给交易中间件失败应答。

在第二阶段,交易中间件审查所有数据库返回的预提交结果,如所有数据库都可以提交,交易中间件将要求所有数据库做正式提交,这样该全局事务被提交。而如果有任一数据库预提交返回失败,交易中间件将要求所有其它数据库回滚其操作,这样该全局事务被回滚。

伪代码:


假设有两个Connection, con1, con2, 大体的过程如下,
con1 = XAResouce1.getConnection...
con2 = XAResouce2.getConnection...

con1 do some thing.
con2 do some thing.
after they finish.

pre1 = XAResouce1.prepare();
pre2 = XAResouce2.prepare();

if( both pre1 and pre2 are OK){
XAResouce1 and 2 commit
}else {
XAResouce1 and 2 rollback
}
分享到:
评论

相关推荐

    分布式事务两阶段提交协议的实现方法研究.pdf

    #资源达人分享计划#

    分布式数据库两阶段提交协议研究与改进.pdf

    #资源达人分享计划#

    level-2pc:leveldb的两阶段提交协议

    leveldb的两阶段提交协议。 描述 为本地群集复制提供强一致性。 群集中的每个节点都是可写的,并且从任何节点进行的所有读取都是一致的。 使用支持可注入的传输,例如实现浏览器兼容性。 建立状态 规格 这是如何...

    分布式事务思想和分布式系统入门.txt

    交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。 第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第二阶段是执行阶段,协调者...

    会员版分布式事务.rar

    为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。 * 阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则...

    数据库并发控制技术论文

    2PC是指Oracle的两阶段提交协议(Two-Phase Commit protocol)。 2PC用于确保所有分布式事务能够同时提交(Commit)或者回滚(Rollback),以便使的数据库能够处于一致性状态(consistent state)。 分布式事务可以...

    事务讨论笔记

    XA 是一个两阶段提交协议,该协议分为以下两个阶段: 第一阶段:事务协调器要求每个涉及到事务的数据库预提交(precommit)此操作,并反映是否可以提交. 第二阶段:事务协调器要求每个数据库提交数据。 BASE理论 ...

    Flink知识点面试点大全总结.docx

    Flink 则使用两阶段提交协议来解决这个问题。 三、Flink 的架构 Flink 架构分为技术架构和运行架构两部分。技术架构包括 API 层、Runtime 层和资源管理层。运行架构包括 Client、JobManager、TaskManager 等组件。...

    java面试常见基础(深层次,高级研发)

    19.2. 2 两阶段提交协议 47 19.2.1. 2.1 预提交阶段 48 19.2.2. 2.2 提交阶段 48 19.3. 3 分布式事务应用框架 48 19.3.1. 3.1 角色 48 19.3.2. 3.2 交互时序 49 19.3.3. 3.3 关键点 50 19.3.4. 参考 50 20. Jvm底层...

    分布式事务入门GitChat问题实录解答

    单数据库的事物隔离级别, 三阶段协议币两阶段提交协议多了一个阶段,那么多出来的那一个阶段操作带来什么好处

    分布式事务1

    1.两阶段提交协议(2PC) 1.)一致性 1.)基本可用(Basically Available)

    消除分布式事务的方法

    由于数据量的巨大,大部分Web应用都需要部署很多个数据库实例。这样,有些用户操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段提交协议^

    分表分库在实际应用中的实践

    [分布式事务]:基于支持两阶段提交协议的数据库,提供的跨应用及数据库的解决数据一致性解决方案。 [幂等]:为了保证保证数据一致性,在跨服务或者服务内部进行数据交换时,通过交换唯一ID来保证数据一致的机制。

    TwoPhaseLocking:严格的两阶段锁定协议用于并发控制,使用等待死锁方法来处理死锁

    严格的两阶段锁定协议用于并发控制,使用等待死锁方法来处理死锁 程序的设计与实现: 我设计了两个HashMap来跟踪所有事务,并设计了PriorityQueue来存储等待的事务。 我们将所有操作的列表存储在交易表(TT)和锁定...

    Web服务事务处理系统的研究与实现 (2005年)

    Web服务具有良好的互操作性,能有效地支持软件的集成。在集成和交互过程中,Web服务需要事务的支持获得一致和可靠的结果...在协调器和参与者的交互过程中使用两阶段提交协议保证事务的原子性和一致性。该系统在处理过程中

    一种基于两阶段封锁的分布式实时提交协议 (2009年)

    分析了当提交状态参与者允许执行状态的参与者访问其数据时,由数据冲突访问而引起的各种依赖关系,提出了一种基于两阶段封锁的乐观提交协议(OCP)。让参与者先发送一个WORK-STARTED消息来代替WORKDONE消息,考虑依赖关系...

    aws-step-functions-长寿交易:使用AWS Step Functions处理微服务架构中分布式组件之间的长寿交易的复杂性

    我们不支持分布式事务处理协调器(DTC)或负责在多个云资源之间协调事务的两阶段提交协议。 我们需要一种协调多个本地交易的机制。 什么是传奇模式? Saga是一种用于处理“长期交易”(LLT)的设计模式,由Garcia-...

    论文研究-协议脆弱性分析及其测试研究.pdf

    在网格合同计算模型中,利用代理技术实现了自治网格合同计算协商机制,该协商机制遵循改进的两阶段提交FIPA协议。在服务合同中导入了软服务合同SSC和硬服务合同HSC概念,并指出动态绑定服务之前所生成的软服务合同...

    分布式实时事务一阶段实时提交 (2006年)

    在此基础上,提出了适合于分布式实时事务的一致性实时提交协议——一阶段实时提交协议(1PRCP),1PRCP通过参与者与协调者的一次消息交换,在一个阶段完成分布式实时事务的提交活动。结合超时恢复协议,1PRCP能避免...

    Replicated-Key-Value-Store-for-the-TCP-Protocol:使用两阶段提交算法构建TCP客户端服务器以支持复制

    TCP协议的复制密钥值存储 使用两阶段提交算法构建TCP客户端/服务器以支持复制。

Global site tag (gtag.js) - Google Analytics