`
阅读更多

 

    两阶段添加协议目的:处理各种可能出现的故障,解释在各种可能故障情况下会发生什么。

 

 假设:

 

  1. 事务访问资源时,发生炎症错误,发出异常终止;没有发生错误,发出提交操作。
  2. 资源管理器可以提交或终止事务的一部分。
  3. 事务有且仅有一个程序发出提交操作。
两阶段提交定理:
     定理一:对于每一个可能的提交协议(不只是两阶段提交),通信故障可能导致参与者阻塞。
     定理二:没有哪个调教协议可以保证故障的参与者能独立恢复。

 

 故障处理

    协调者角度:

 

  1. prepare接受消息超时或者接受到一个以上的NO消息。异常终止。
  2. 从所有的参与者接受DONE消息,无限等待,如果超时,会想参与者发送提醒重新请求DONE。

 

    参与者角度:

 

  1. 接受prepare,如果超时,单方面终止事务,如果延迟,则投票NO。
  2. 接受做出决定的消息(Commit或者Abort)。如果超时,进入阻塞状态,什么都不做。

故障与日志

 

 

分享到:
评论

相关推荐

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

    两阶段提交(Two-Phase Commit, 2PC)是一种经典的分布式事务提交协议,分为准备阶段和提交阶段。在准备阶段,事务协调者(事务管理器)向所有参与者(资源管理器)发送Prepare消息,参与者执行事务但不提交,处于...

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

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

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

    两阶段提交(Two-Phase Commit, 2PC)是分布式事务中常见的一种协调协议,用于解决分布式环境下数据的一致性问题。这篇博客文章“分布式事务之两阶段提交”深入探讨了这一主题。 首先,我们要理解什么是分布式事务...

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

    ### Oracle与MySQL两阶段提交的例子(EJB3) #### 一、引言 本文将深入探讨在EJB3中实现跨Oracle和MySQL数据库的两阶段提交(Two-Phase Commit, 2PC)机制的具体实例。两阶段提交是一种分布式事务管理协议,用于确保...

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

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

    两阶段提交1

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

    事务和两阶段提交法1

    【事务和两阶段提交法1】深入解析 在数据库领域,事务是确保数据一致性、完整性和可靠性的核心概念。事务的ACID特性是其基石,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

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

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

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

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

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

    为了处理这种情况,MongoDB提供了两阶段提交(Two-Phase Commit)的机制来实现多文档事务。 两阶段提交是一个分布式协调协议,用于确保分布式系统中所有参与者对于一个事务的提交达成一致。在这个过程中,事务分为...

    2PC:两阶段提交版本二

    两阶段提交 分布式计算中的第二个项目:两阶段提交。 第一个项目是在全局范围内的函数中实现的,所以我必须为xmlrpc接口注册所有的put、get、del函数。 后来参考了一些其他同学的作品,我意识到构建系统的更好方法...

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

    【分布式系统一致性发展史(二)】:两阶段与三阶段提交 在分布式系统中,一致性是确保系统在面临各种网络、硬件故障时仍然能够保持数据一致性的关键特性。本篇将探讨两种早期用于解决一致性问题的协议:两阶段提交...

    mongodb-transactions:使用两阶段提交的Mongodb事务

    标题中提到的 "mongodb-transactions" 指的是在 MongoDB 中使用事务的实践,而 "使用两阶段提交的Mongodb事务" 暗示了项目可能包含了一个关于如何在 MongoDB 中实现两阶段提交的示例或库。描述中的 "使用猫鼬重新...

    Greenplum两阶段事务流程分析

    Greenplum两阶段事务源码分析,本ppt主要讲述了整个greenplum的两阶段事务的状态切换、调用流程和日志类型。

    greenplum两阶段事务详解

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

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

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

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

    在给定的标题“Replicated-Key-Value-Store-for-the-TCP-Protocol:使用两阶段提交算法构建TCP客户端服务器以支持复制”中,我们可以推断出这个项目的目标是实现一个基于TCP协议的复制键值存储服务,该服务利用了两...

Global site tag (gtag.js) - Google Analytics