深入分布式缓存-2PC 3PC

简介: 深入分布式缓存-2PC 3PC

前言

在事务处理、关系型数据库以及计算机网络中,2阶段提交协议(2PC)、3阶段提交协议(3PC)是一种典型的原子提交协议(atomic commitment protocol)。同时,它是一种由协调器来进行管理事务提交、事务回滚的分布式算法。

2PC

协议对于事务提交,包括两个阶段

  • 投票阶段或者事务提交请求阶段
    该阶段,对事务接收方,协调器,发起事务提交的请求,当所有的节点返回响应为true,才进行提交阶段
  • 提交阶段
    当提交请求阶段成功,协调器,开始发起正式事务的提交

2PC 时序图

image.png

image.png

2PC最大的不足,是提交协议是阻塞协议,如果协调器发生故障宕机,则导致参与者无法对事务进行处理

使用2PC原则

在高并发网站中,使用分布式事务2PC协议把握以下原则

  1. 能不用2PC的尽量不要使用,如上所述,两个阶段,其实关键在于第三方协调器,就会考虑协调器的可用性
  2. 要获得事务强一致性,也要在性能和一致性做平衡策略,比如需要的时候,加上超时机制,阶段性补偿机制,类似于Paxos和之后我们将要学习的Raft或者Zookeeper采用的ZAB,采用多数服从少数的策略进行补偿。


3PC

3PC 分为三次交互,第一阶段,提交请求阶段,事务协调器会询问参与者是否能够提交Commit,得到肯定响应,第二阶段,进行事务预提交,都确认提交成功之后,第三阶段,进入真实的提交,成功则完成事务,失败,则发起尝试。


对比2PC

与2PC相比,3PC 多了个预提交阶段,增加了一个阶段,当都收到响应之后,协议约定,即使此刻,协调器发生问题,那么通过补偿机制,比如超时机制,会自动保证第三阶段一定顺利执行。

image.png


目录
相关文章
|
Java 关系型数据库 MySQL
面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!
面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!
508 0
面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!
|
3月前
|
分布式计算 算法
分布式系统设计之共识算法—2PC、3PC、 Paxos
分布式系统设计之共识算法—2PC、3PC、 Paxos
44 1
|
9月前
|
算法
分布式系统中的那些一致性(CAP、BASE、2PC、3PC、Paxos、ZAB、Raft)
本文介绍 CAP、BASE理论的正确理解、Paxos 算法如何保证一致性及死循环问题、ZAB 协议中原子广播及崩溃恢复以及 Raft 算法的动态演示。
65 0
|
4月前
|
存储 消息中间件 关系型数据库
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
|
9月前
|
算法 Oracle 关系型数据库
【分布式】分布式事务基础概念(2PC,3PC,TCC)
【分布式】分布式事务基础概念(2PC,3PC,TCC)
312 0
|
11月前
|
消息中间件 缓存 NoSQL
分布式事务 3PC
3PC(Three-Phase Commit)是一种增强型的2PC(Two-Phase Commit)协议,用于解决2PC协议存在的可靠性问题和性能问题。3PC协议将2PC协议的两个阶段分为了三个阶段,同时引入了超时机制,从而提高了协议的可靠性和容错性。
74 0
|
11月前
|
消息中间件 算法 程序员
分布式事务 2PC
分布式事务是指跨越多个计算机节点的事务,涉及到多个数据库或其他资源的访问和更新。在分布式事务中,由于数据分布在不同的节点上,因此需要采用一些特殊的技术来保证事务的一致性和可靠性,其中最常用的技术之一就是两阶段提交(Two-Phase Commit,2PC)。
97 0
分布式事务 2PC
|
12月前
【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
|
12月前
【JavaP6大纲】分布式事务篇:三阶段提交(3PC)
【JavaP6大纲】分布式事务篇:三阶段提交(3PC)
|
消息中间件 存储 监控
七种常见分布式事务详解(2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通知)
七种常见分布式事务详解(2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通知)
798 0