两阶段提交和三阶段提交的理解

article/2025/9/15 7:49:54

两阶段提交和三阶段提交的理解

本文主要通过梳理流程说明2PC的缺点,并总结3PC的优点。

一、2PC流程及致命问题 
2PC流程图

如图所示,2PC的流程简要: 
1.协调者 参与者都是INIT状态,参与者等待消息。 
2.协调者进入prepare状态发送vote_request消息。 
3.协调者等待消息 
4.参与者收到消息,进入ready状态并发送vote_commit 
5.参与者等待消息 
6.协调者收到所有消息,从prepare变更为commit发送global_commit(或者发送abort)。协调者完毕 
7.参与者收到消息执行commit。 
参与者有两个状态:commit状态或abort状态。

WAIT是容易出问题的地方:一旦超时如何处理? 
WAIT 1(INIT状态等待):参与者自己abort事务 
WAIT 2(prepare状态等待):协调者可以多播abort命令中止 
WAIT 3(ready状态等待): 当参与者处于ready状态 难点!!超时的原因可能有三点 
1.协作者崩溃 没有发出global_commit。 
解决:持久化协作者状态。它在重启后会获取当前状态,若是prepare阶段,则直接abort;若是commit阶段则再次发送commit。 
2.参与者崩溃了 
解决:只有在参与者可互相通信的前提下才能解决。 
3.网络丢包 
解决:只有在参与者可互相通信的前提下才能解决。

参与者互通信解决超时问题: 
参与者P在某个阶段超时,检查另一个参与者Q的状态,以决定自己的状态。 
必须持久化参与者状态 
Q在commit、abort、init状态,则P只需要改为相应状态就行。 
Q在ready状态,检查其余,若都在ready状态,则必须阻塞等待协调者。因为很可能这时协调者是在commit状态下崩溃的,恢复后会执行commit,若参与者因为ready超时而终止,但协调者却认为已经commit了,则导致两者不一致!

综上所述,2PC的致命问题:超时导致进程阻塞以致资源无法释放

二、3PC如何解决阻塞问题 
3PC流程 
如图所示,我们知道2PC所有问题都出在ready阶段,3pc在ready阶段后,加入了precommit阶段,以此解决了阻塞问题。我们分析下它是如何巧妙解决的。 
WAIT超时状态: 
WAIT 3:ready状态超时,参与者可直接abort。因为ready状态超时,其他参与者只能是ready、precommit、abort状态。 
WAIT 4:协调者precommit状态超时(还未发送perpare_commit ,参与者处于ready ),直接abort。原因同上。
WAIT 5:参与者precommit状态超时,直接commit。(有问题),这两个状态都代表了可以commit的意思! 
简而言之,precommit状态(预提交)给予双方一个凭证,可以在未commit前进行“反悔”。参与者部分ready、部分precommit可以直接abort不会影响最终一致性。参与者全部是precommit状态,则完全可以进行commit。

还是有问题:

如果一个参与者是percommit状态 ,则其他参与者 必然处于 ready percommit commit的一种,这三种状态下都可以commit!

但是如果集群里即有ready 又有percommit参与者,参与者在不知道其他参与者状态下,是无法进行决定的。

参考文献:分布式原理与泛型


http://chatgpt.dhexx.cn/article/8VOvwmJd.shtml

相关文章

两阶段提交和三阶段提交的区别

1.分布式理论:一致性协议:2PC 1.1 什么是2PC2PC,即两阶段提交协议的简写,是整个事务过程分为两个阶段,准备阶段(Prepare phase)和提交阶段(Commit phase)两个阶段过程: …

分布式两阶段提交和三阶段提交

随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。 为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本…

MySQL (十四) 两阶段提交

一. 两阶段提交 1.1 利用 binlog 和redolog 做到两阶段提交 从上图中看出:最后提交事务的三个步骤: 写入redo log ,处于prepare状态写binlog修改redo log 状态变为commit 由于redo log 的提交分为prepare 和commit两个阶段,所以我…

mysql之两阶段提交

什么是两阶段提交 当有数据修改时,会先将修改redo log cache和binlog cache然后在刷入到磁盘形成redo log file,当redo log file全都刷入到磁盘时(prepare 状态)和提交成功后才能将binlog cache刷入磁盘,当binlog全部刷…

分布式事务:两阶段提交与三阶段提交

两阶段提交与三阶段提交 分布式事务二阶段提交请求阶段提交阶段举例故障分析柜员侧出现故障或拒绝Proposal第一阶段经理侧出现故障第二阶段经理侧出现故障 二阶段提交存在的问题 三阶段提交canCommit阶段preCommit阶段doCommit阶段特点 参考 分布式事务 满足ACID(原…

正确理解二阶段提交(Two-Phase Commit)

文章目录 明确问题草稿方案原子提交协议希望实现的2个特性正确的二段提交协议(Two-Phase Commit)二阶段提交协议如何满足安全性(Safety)二阶段提交协议如何满足存活性( Liveness) 如何应对超时 超时终止协议 如何应对宕机重启 二阶…

两阶段提交协议(two phase commit protocol,2PC)详解

一、协议概述 两阶段提交协议(two phase commit protocol,2PC)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交或取消(回…

简单谈谈MySQL的两阶段提交

一、简单回顾三种日志 在讲解两阶段提交之前,需要对MySQL中的三种日志即binlog、redo log与undo log有一定的了解。 在这三种日志中,很多同学会把binlog与redo log混淆,下面使用一张表格来简单对比下两者的区别。 当然,如果对bi…

现控笔记(五)稳定性与Lyapunov方法

稳定性与李雅普诺夫方法 线性系统稳定性:只取决于系统的结构和参数,稳定的条件是特征方程的根都具有负实部(在左半根平面),可用劳斯判据、耐奎斯特判据等方法判断、非线性系统的稳定性:与初始条件和外部扰动的大小有关。 稳定性…

Lyapunov稳定性分析复习笔记

前言 本文所提及的稳定性分析是指系统运动状态的稳定性分析,在进行本文标题内容相关的学习之前,我们首先需要回答一个问题,为什么需要进行稳定性分析?其实这个问题是不言而喻的,稳定性问题在当代显得尤为重要&#xf…

Lyapunov-Krasovskii泛函二重积分项求导_原理

Lyapunov-Krasovskii泛函二重积分项求导_原理 回答[引理1][定理1] 2022年下半年,看了很多关于时滞系统和引入时滞的网络化控制系统的论文,对稳定性证明中Lyapunov-Krasovskii泛函中二重积分项求导结果有些疑问,故在知乎上提问寻求帮助&#x…

Lorenz系统最大lyapunov exponent的求解

首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:

matlab 基于Lorenz系统 Lyapunov指数的管道超声导波检测

1、内容简介 略 可以交流、咨询、答疑 2、内容说明 为了提高长距离管道超声导波检测中弱导波信号的识别精度,提出了基于 Lorenz 系统 Lyapunov 指数的 管道超声导波检测方法。基于非共振周期信号的参数激励实现 Lorenz 系统的混沌控制,将待测的导波信…

Lyapunov and Stability Theory

一、什么是稳定点 一个控制系统就和一个社会一样,稳定性是首先要解决的重要问题,是其他一切工作的基础。稳定性问题的字面意思很好理解了,那就是系统在受到扰动后,能否能有能力在平衡态继续工作。大家都知道,历史上社…

Lyapunov稳定性分析2(连续时间系统)

Lyapunov稳定性分析2(连续时间系统) 一、李雅普诺夫第一方法(间接法)二、李雅普诺夫第二方法(直接法)三、李雅普诺夫稳定性判定(连续时间系统)3.1 Lyapunov渐近稳定的充要条件&#…

Lyapunov稳定性判定总结及PI滑膜悬架仿真

目录 前言 1.PD、PSD、ND、NSD概念 2. Stable、asymptotic stability、Globalasymptotic stability 3.线性定常系统的稳定性分析 4. 滑模变结构的拉塞尔(Lasalle)不变性原理 5.比例积分滑模2自由度悬架仿真分析 前言 开始学习控制的时候觉得Lyapunov稳定性判定很普通&…

Lypunov函数是什么?

学习视频网址:https://www.bilibili.com/video/BV1vx411V7EH/?spm_id_fromtrigger_reload 一、 概念 二、 李雅普诺夫第一法 (间接法) 三、 李雅普诺夫第二法 (直接法 - 使用最多) 四、例题

Lyapunov

一、正定函数 令是向量x的标量函数,S是x空间包含原点的封闭有限区域,如果对于S中所有的x,都有: (1)存在且连续 (2) (3)当时, 则V(x)是正定的…

Lyapunov稳定性分析3(离散时间系统)

Lyapunov稳定性分析3(离散时间系统) 一、李雅普诺夫稳定性判定1.1 *Lyapunov*两类稳定性方法分析:1.2 总结: 二、举例2.1 MATLAB函数形式:2.2 MATLAB函数实例: 三、离散Lyapunov方程的解 注:Lya…

第三章——Lyapunov理论基础

文章目录 3.1 非线性系统和平衡点非线性系统自治与非自治系统平衡点常规运动 3.2 稳定性的概念稳定性与非稳定性渐进稳定性和指数稳定性局部和全局稳定性 3.3 线性化和局部稳定性3.4 Lyapunov直接法正定函数和Lyapunov函数平衡点理论全局稳定性的Lyapunov理论不变集理论局部不变…