`
lt200819
  • 浏览: 188233 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两阶段提交协议

 
阅读更多

两阶段提交协议

实现分布式事务的关键就是两阶段提交协议。在此协议中,一个或多个资源管理器的活动均由一个称为事务协调器的单独软件组件来控制。此协议中的五个步骤如下:

应用程序调用事务协调器中的提交方法。

事务协调器将联络事务中涉及的每个资源管理器,并通知它们准备提交事务(这是第一阶段的开始)。

为 了以肯定的方式响应准备阶段,资源管理器必须将自己置于以下状态:确保能在被要求提交事务时提交事务,或在被要求回滚事务时回滚事务。大多数资源管理器会 将包含其计划更改的日记文件(或等效文件)写入持久存储区中。如果资源管理器无法准备事务,它会以一个否定响应来回应事务协调器。

事务协调器收集来自资源管理器的所有响应。

在 第二阶段,事务协调器将事务的结果通知给每个资源管理器。如果任一资源管理器做出否定响应,则事务协调器会将一个回滚命令发送给事务中涉及的所有资源管理 器。如果资源管理器都做出肯定响应,则事务协调器会指示所有的资源管理器提交事务。一旦通知资源管理器提交,此后的事务就不能失败了。通过以肯定的方式响 应第一阶段,每个资源管理器均已确保,如果以后通知它提交事务,则事务不会失败。

图 1 和图 2 通过两个顺序图来说明两阶段提交协议。

图 1 事务提交

图 1 显示事务成功(提交)。图 2 显示由于某种原因,其中一个资源管理器无法提交时的两阶段提交协议。

图 2 事务被回滚

分享到:
评论

相关推荐

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

    两阶段提交协议是实现分布式事务保证原子性、一致性、隔离性和持久性(即ACID属性)的关键技术之一。 传统的两阶段提交协议(2PC)将事务处理分为两个阶段:预提交阶段和决策阶段。在预提交阶段,事务协调者询问...

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

    《分布式数据库两阶段提交协议研究与改进》这篇论文主要探讨了分布式数据库中的关键问题——如何确保分布式事务的ACID特性,即原子性、一致性、隔离性和持久性。为了解决这一问题,文章深入研究了两阶段提交(2PC)...

    XA两阶段提交及一阶段提交说明

    XA接口支持两阶段提交协议,确保跨多个资源的事务一致性。JTA在Java平台上提供了对XA事务的支持,其规范定义了接口,但具体的实现由供应商提供,如J2EE容器的JTA实现或独立的JTA实现(如JOTM, Atomikos)。 【二...

    分布式事务之两阶段提交,转载自:银河里的星星

    两阶段提交协议(2PC)就是为了实现这种原子性而设计的。它主要分为两个阶段: 1. 准备阶段(Prepare Phase): 在这个阶段,事务协调者(通常是事务发起者)询问所有参与者(每个涉及事务的节点)是否准备执行...

    oracle-mysql 两阶段提交例子(ejb3)

    两阶段提交协议包括两个主要阶段: 1. **准备阶段**(Prepare Phase):在这个阶段,事务协调者向所有参与事务的资源管理器发送“准备”命令。每个资源管理器执行事务操作,并记录必要的信息以便能够在后续阶段进行...

    基于非阻塞的分布式事务提交协议的实现.pdf

    标题《基于非阻塞的分布式事务提交协议的实现》和描述提到了关于分布式事务提交协议的最新研究和实现,具体内容中介绍了两阶段提交(2PC)和三阶段提交(3PC)协议的...,并提出了一种新的基于非阻塞的两阶段提交协议方案...

    数据库一阶段提交和两阶段提交区别和说明

    一阶段提交(One-Phase Commit)和两阶段提交(Two-Phase Commit)是分布式事务中常见的两种提交协议,它们主要用于保证跨多个数据库节点的事务一致性。 1. **一阶段提交** 一阶段提交简单直接,应用程序向数据库...

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

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

    一种基于非阻塞的分布式数据库原子提交协议.pdf

    传统的原子提交协议包括两阶段提交协议(2PC)和三阶段提交协议(3PC)。2PC是最广泛使用的协议之一,它简单且有效,但它的主要缺点是具有阻塞性。所谓阻塞性,是指在发生故障时,事务处理会被挂起,等待恢复或终止...

    分布式短事务系统中提交协议的研究.pdf

    由于短事务的这些特点,传统的两阶段提交协议不适合直接应用于短事务系统。因此,研究者通过创新设计了一种适合短事务特点的提交协议,既保留了传统协议的可靠性,同时克服了它们在短事务场景下的不足,提高了系统的...

    greenplum两阶段事务详解

    在Greenplum数据库中,事务是通过两阶段提交协议来实现的,即Prepare和Commit两个阶段。 在事务的开始阶段,客户端会向服务器发送BeginTransaction命令,以启动事务。服务器收到命令后,会创建一个事务块...

    分布式数据库系统的故障恢复方法.pdf

    本文探讨了分布式数据库系统的故障恢复方法,并详细分析了备份恢复技术和日志恢复技术,以及基于这两种技术的两阶段提交协议和三阶段提交协议。 在分布式数据库系统中,数据分布带来的问题主要包括保持分布一致性、...

    基于Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理

    它能够协调参与事务的各个资源管理器(如数据库),确保遵循两阶段提交协议。 MyBatis是一个轻量级的持久层框架,它允许开发者使用SQL来定义数据操作。在分布式事务场景下,MyBatis可以通过Atomikos提供的JTA支持,...

    分布式数据库系统的故障恢复方法探讨.pdf

    故障恢复技术的实践应用,如日志恢复和备份恢复技术的结合使用,以及两阶段提交协议和三阶段提交协议的运用,都是确保系统从故障状态恢复正常的关键步骤。 分布式数据库系统的故障恢复是一个复杂的过程,需要充分...

    Twophase_#twophase_zip_

    这个压缩包文件可能包含了实现两阶段提交协议的相关源代码。 首先,我们来看一下核心的"twophase.h"头文件。在这个头文件中,可能会定义相关的数据结构、类以及接口。这些通常包括`Coordinator`和`Participant`的...

    支付宝TCC模型

    1. 两阶段提交协议(2PC):这是传统分布式事务处理的一种方法,分为准备和提交两个阶段。在准备阶段,分布式事务协调者请求所有参与者准备执行事务。只有所有参与者都回应准备成功后,协调者才会进入第二阶段,向...

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

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

    Saga分布式事务解决方案与实践.docx

    两阶段提交协议包括准备和提交两个阶段。在准备阶段,所有的资源都被锁定,直到提交阶段完成。如果提交阶段失败,则所有的资源都会回滚。这种协议可以保证事务的一致性,但是它也存在一些缺陷,例如性能不高、全局锁...

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

    在两阶段提交协议中,协调者首先向所有参与者发送准备请求,并等待所有参与者准备好提交事务。如果所有参与者都同意提交,协调者会向所有参与者发出提交请求,然后每个参与者执行提交操作。问题在于,如果协调者在...

Global site tag (gtag.js) - Google Analytics