`

什么是两阶段提交协议 (2阶段提交协议)

阅读更多

上一篇分布式事务是给出了一个大概的描述,大家都喜欢看图说话,这里网上的童鞋们总结了一个实施图故转载来

 

转载自:http://hi.baidu.com/liuhann/blog/item/0a429c1e40a7ef1d40341724.html

 

两阶段提交协议

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

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

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

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

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

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

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


图 1 事务提交

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


图 2 事务被回滚

分享到:
评论

相关推荐

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

    传统的两阶段提交协议(2PC)将事务处理分为两个阶段:预提交阶段和决策阶段。在预提交阶段,事务协调者询问所有参与者是否准备好提交事务,每个参与者基于自身条件作出响应。一旦所有参与者都同意提交,协调者将...

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

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

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

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

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

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

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

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

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

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

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

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

    两阶段提交1

    两阶段提交(Two-Phase Commit, 2PC)是一种分布式协调协议,用于在分布式系统中确保所有参与者对事务的一致性处理。在MySQL等数据库管理系统中,2PC被用来协调参与分布式事务的不同节点,保证数据的一致性和完整性...

    事务和两阶段提交法1

    这时,两阶段提交(Two-Phase Commit, 2PC)协议成为了确保多节点间事务原子性的常用方法。2PC分为准备阶段和提交阶段,确保了分布式环境下的事务原子性,但并不直接负责一致性(由数据库的完整性约束保证)和隔离性...

    心跳技术3阶段协议

    #### 2阶段提交协议 (2PC) 2PC 是一种经典的分布式事务提交协议。它将事务参与者分为协调者(Coordinator)和参与者(Participants)。协议分为两个阶段: 1. **准备阶段**:协调者向所有参与者发送“准备提交”...

    分布式系统一致性发展史(二)丨两阶段和三阶段提交1

    本篇将探讨两种早期用于解决一致性问题的协议:两阶段提交(Two-Phase Commit, 2PC)和三阶段提交(Three-Phase Commit, 3PC)。这两个协议在分布式事务处理中扮演了重要角色,但各自也有其局限性。 ### 两阶段提交...

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

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

    关于2PC协议对分布式数据库的事务恢复机制.pdf

    分布式数据库事务恢复机制中二阶段提交协议(2PC)对分布式数据库的事务恢复机制的研究 摘要: 本文主要研究了分布式数据库系统中的事务恢复机制,特别是二阶段提交协议(2PC)在分布式数据库的事务恢复机制中的...

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

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

    WebSphere MQ与Oracle 数据库的XA事务(两阶段提交)实现

    XA事务是一种两阶段提交(Two-Phase Commit, 2PC)协议,广泛应用于多资源协调的分布式系统中。 首先,让我们了解一下MQ独立事务。在WebSphere MQ中,每个消息发送或接收操作都可以作为一个事务进行。这意味着如果...

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

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

    mysql索引,分布式事务,三阶段协议,b+树

    为了缓解2PC的问题,提出了三阶段提交协议,分为预准备、预备和提交三个阶段。3PC增加了确认阶段,降低了阻塞概率,但仍然存在网络延迟和单点故障的风险。 四、Java与MySQL交互 Java是常用的数据库操作语言,通过...

    MongoDB数据库两阶段提交实现事务的方法详解

    两阶段提交是一个分布式协调协议,用于确保分布式系统中所有参与者对于一个事务的提交达成一致。在这个过程中,事务分为两个阶段:准备阶段(Prepare Phase)和提交阶段(Commit Phase)。 1. 准备阶段: 在这个...

Global site tag (gtag.js) - Google Analytics