GTS的三阶段提交(3PC, Three-Phase Commit)

简介: 【8月更文挑战第24天】

三阶段提交(3PC, Three-Phase Commit)是一种分布式事务管理协议,用于提高两阶段提交(2PC)协议的可靠性和性能。3PC试图解决2PC中的缺点,特别是阻塞问题以及协调者单点故障问题。3PC将整个提交过程分为三个阶段:准备阶段(Can-Commit)、预提交阶段(Pre-Commit)和提交阶段(Do-Commit)。

三阶段提交的主要步骤如下:

  1. 准备阶段(Can-Commit)

    • 协调者询问参与者是否可以准备好提交事务。
    • 参与者响应是否准备好。
  2. 预提交阶段(Pre-Commit)

    • 如果所有参与者都准备好,协调者向参与者发送预提交请求,参与者执行事务操作但不提交。
    • 参与者向协调者确认预提交状态。
  3. 提交阶段(Do-Commit)

    • 协调者根据预提交阶段的结果决定是否提交事务。
      • 如果所有参与者都成功预提交,则协调者发送提交命令。
      • 如果有任何参与者预提交失败,则协调者发送回滚命令。
    • 参与者根据协调者的命令提交或回滚事务。

优点:

  • 减少了参与者阻塞的时间。
  • 即使在协调者故障的情况下,参与者也可以通过超时机制来决定是提交还是回滚事务。

缺点:

  • 仍然存在一定的复杂性。
  • 需要额外的通信轮次。

3PC通过增加一个预提交阶段来降低系统发生阻塞的可能性,并提高了系统的可用性。不过,它也引入了更多的网络交互,这可能会对性能产生一定影响。

目录
相关文章
|
24天前
|
监控 关系型数据库 PostgreSQL
两阶段提交(2PC, Two-Phase Commit)
【8月更文挑战第24天】
64 9
|
2月前
|
中间件
|
2月前
|
中间件 数据库
|
1月前
|
设计模式 运维 测试技术
提交阶段
提交阶段
23 0
|
存储 算法 关系型数据库
对比两阶段提交,三阶段提交做了哪些改进?
在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。在关系型数据库中,由于存在事务机制,可以保证每个独立节点上的数据操作满足 ACID。但是,相互独立的节点之间无法准确的知道其他节点中的事务执行情况,所以在分布式的场景下,如果不添加额外的机制,多个节点之间理论上无法达到一致的状态。 在分布式事务中,两阶段和三阶段提交是经典的一致性算法,那么两阶段和三阶段提交的具体流程是怎样的,三阶段提交又是如何改进的呢?
87 0
|
4月前
|
存储 消息中间件 关系型数据库
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
115 0
|
中间件 Java 调度
Seata两阶段提交AT模式详解
Seata两阶段提交AT模式详解
615 0
Seata两阶段提交AT模式详解
|
存储 算法 NoSQL
分布式事务两阶段提交和三阶段提交有什么区别?
分布式事务两阶段提交和三阶段提交有什么区别?
207 0
分布式事务两阶段提交和三阶段提交有什么区别?
|
监控 关系型数据库 MySQL
分布式事务实战---XA两阶段提交(2PC)方案详解(上)
分布式事务实战---XA两阶段提交(2PC)方案详解
363 0
分布式事务实战---XA两阶段提交(2PC)方案详解(上)
|
SQL 监控 关系型数据库
分布式事务实战---XA两阶段提交(2PC)方案详解(下)
分布式事务实战---XA两阶段提交(2PC)方案详解
585 0
分布式事务实战---XA两阶段提交(2PC)方案详解(下)