两阶段提交协议
两阶段提交协议
实现分布式事务的关键就是两阶段提交协议。在此协议中,一个或多个资源管理器的活动均由一个称为事务协调器的单独软件组件来控制。此协议中的五个步骤如下:
•
应用程序调用事务协调器中的提交方法。
•
事务协调器将联络事务中涉及的每个资源管理器,并通知它们准备提交事务(这是第一阶段的开始)。
•
为 了以肯定的方式响应准备阶段,资源管理器必须将自己置于以下状态:确保能在被要求提交事务时提交事务,或在被要求回滚事务时回滚事务。大多数资源管理器会 将包含其计划更改的日记文件(或等效文件)写入持久存储区中。如果资源管理器无法准备事务,它会以一个否定响应来回应事务协调器。
•
事务协调器收集来自资源管理器的所有响应。
•
在 第二阶段,事务协调器将事务的结果通知给每个资源管理器。如果任一资源管理器做出否定响应,则事务协调器会将一个回滚命令发送给事务中涉及的所有资源管理 器。如果资源管理器都做出肯定响应,则事务协调器会指示所有的资源管理器提交事务。一旦通知资源管理器提交,此后的事务就不能失败了。通过以肯定的方式响 应第一阶段,每个资源管理器均已确保,如果以后通知它提交事务,则事务不会失败。
图 1 和图 2 通过两个顺序图来说明两阶段提交协议。
图 1 事务提交
图 1 显示事务成功(提交)。图 2 显示由于某种原因,其中一个资源管理器无法提交时的两阶段提交协议。
图 2 事务被回滚
- 大小: 5.8 KB
- 大小: 5.9 KB
分享到:
相关推荐
自己整理的XA两阶段提交和一阶段提交的说明,希望对你有用
mysql数据库一阶段提交和两阶段提交的说明和区别, 各自优点和缺点, 重点介绍两阶段提交的各个过程,
两阶段提交1
NULL 博文链接:https://eleopard.iteye.com/blog/2107415
2 两阶段提交在分布式系统中,事务往往包含有多个参与者的活动,单个参与者上的活动是能够保证原子性的,而多个参与者之间原子性的保证则需要通过两阶段提交来实现,两阶
ejb3事务分容器管理事务(CMT)和Bean管理事务(BMT),这里讲述了CMT情况下,两阶段提交例子(tow-phase commit),展示ejb容器为我们做的事情,其实就是ejb容器提供商,已经帮开发者解决了的问题。数据库分别是oracle...
两阶段提交 分布式计算中的第二个项目:两阶段提交。 第一个项目是在全局范围内的函数中实现的,所以我必须为xmlrpc接口注册所有的put、get、del函数。 后来参考了一些其他同学的作品,我意识到构建系统的更好方法...
#资源达人分享计划#
采用.NET实现以下功能 1. MQ 独立事务 2. 多MQ之间的XA事务 3. MQ与数据库之间的XA事务
本文实例讲述了MongoDB数据库两阶段提交实现事务的方法。分享给大家供大家参考,具体如下: MongoDB数据库中操作单个文档总是原子性的,然而,涉及多个文档的操作,通常被作为一个“事务”,而不是原子性的。因为...
#资源达人分享计划#
leveldb的两阶段提交协议。 描述 为本地群集复制提供强一致性。 群集中的每个节点都是可写的,并且从任何节点进行的所有读取都是一致的。 使用支持可注入的传输,例如实现浏览器兼容性。 建立状态 规格 这是如何...
mongodb交易 使用猫鼬重新实现 基于本文的 如何运行两阶段提交 yarn twoPhase
Flink MySQL二阶提交代码,为了保证前一次 CheckPoint 成功后到这次 CheckPoint 成功之前这段时间内的数据不丢失,如果执行到一半过程任务失败了,从而导致前一次CheckPoint成功后到任务失败前的数据已经存储到了...
TCP协议的复制密钥值存储 使用两阶段提交算法构建TCP客户端/服务器以支持复制。
交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。 第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第二阶段是执行阶段,协调者...
传统拜占庭一致性中常见的中心化和去中心化算法在解决合法性验证的过程中存在容错率低、消息复杂度高等问题,为此,提出新的区块链一致性算法,引入两阶段提交和法定人数投票的过程,利用区块链协议的分布式总账特点...