`
sharong
  • 浏览: 492243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
D1667ae2-8cfc-3b68-ac7c-5e282789fa4a
论开源
浏览量:8691
7eb53364-fe48-371c-9623-887640be0185
Spring-data-j...
浏览量:13022
社区版块
存档分类
最新评论
阅读更多
这篇文章粗略讲一下两阶段提交协议,即2PC,Two Phase Commitment Protocol。之所以称为两阶段提交,是相对于单库的事务提交方式来说的。我们在单库上完成相关的数据库操作后,就会直接提交或者回滚,而在分布式系统中,在提交之前增加了准备的阶段,所以称为两阶段提交。
图1显示的就是第一阶段提交的情况,可以看到,参与操作的是事务管理器与两个资源。

      图1 第一阶段

图2所示的是第二阶段的情况。

      图2 第二阶段

此外还会遇到的另外一种情况,就是在准备阶段有一个资源失败,那么在第二阶段的处理就是回滚所有资源,如图3和图4所示。

     图3 出现问题的第一阶段

    图4 第一阶段出现问题后的第二阶段

前面对两阶段提交的介绍都是在理想状态下的情况。在实际当中,由于事务管理器自身的稳定性,可用性的影响,以及网络通信中可能产生的问题,出现的情况会复杂很多。此外,事务管理器在多个资源之间进行协调,它自身要进行很多日志记录的工作。网络上的交互次数的增多以及引入事务管理器的开销,是使用两阶段提交协议使分布式事务的开销增大的两个方面。
因此,在进行垂直拆分或者水平拆分后,需要想清楚是否一定要引入两阶段的分布式事务,在必要的情况下才建议使用。
1
0
分享到:
评论

相关推荐

    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