Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【JavaP6大纲】分布式事务篇:两阶段提交(2PC)

【JavaP6大纲】分布式事务篇:两阶段提交(2PC)

作者头像
Java廖志伟
发布于 2021-04-08 07:13:42
发布于 2021-04-08 07:13:42
6130
举报
文章被收录于专栏:高级开发进阶高级开发进阶

两阶段提交(2PC)?

两阶段提交(2PC) 第一阶段:协调者询问参与者事务是否执行成功,参与者发回事务执行结果。这一阶段的协调者有超时机制,假设因为网络原因没有收到某参与者的响应或某参与者挂了,那么超时后就会判断事务失败,向所有参与者发送回滚命令。 第二阶段:如果事务在每个参与者上都执行成功,事务协调者才发送通知让参与者提交事务;否则,协调者发送通知让参与者回滚事务。这一阶段的协调者的没法超时,只能不断重试。

协调者是一个单点,存在单点故障问题。 假设协调者在发送准备命令之前挂了,还行等于事务还没开始。 假设协调者在发送准备命令之后挂了,这就不太行了,有些参与者等于都执行了处于事务资源锁定的状态。不仅事务执行不下去,还会因为锁定了一些公共资源而阻塞系统其它操作。 假设协调者在发送回滚事务命令之前挂了,那么事务也是执行不下去,且在第一阶段那些准备成功参与者都阻塞着。 假设协调者在发送回滚事务命令之后挂了,这个还行,至少命令发出去了,很大的概率都会回滚成功,资源都会释放。但是如果出现网络分区问题,某些参与者将因为收不到命令而阻塞着。 假设协调者在发送提交事务命令之前挂了,这个不行,傻了!这下是所有资源都阻塞着。 假设协调者在发送提交事务命令之后挂了,这个还行,也是至少命令发出去了,很大概率都会提交成功,然后释放资源,但是如果出现网络分区问题某些参与者将因为收不到命令而阻塞着。

存在的缺点: 同步阻塞 所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作。 单点问题 协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在阶段二发生故障,所有参与者会一直等待状态,无法完成其它操作。 数据不一致 在阶段二,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。 太过保守 任意一个节点失败就会导致整个事务失败,没有完善的容错机制。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
女朋友问敖丙:什么是分布式事务?
上一篇文章已经讲完分布式了,那暖男说要讲分布式事务那就一定会讲,只是我估计大家没料到暖男这么快就肝好了吧?
敖丙
2020/08/17
4850
女朋友问敖丙:什么是分布式事务?
聊聊分布式事务
前面几篇《打开我的收藏夹》文都让我受益匪浅,在此我还是想说一句:都是自己当初收藏的,就不要吃灰了,逐渐放空掉自己的收藏夹未必不是一件好事。
看、未来
2022/05/06
2600
聊聊分布式事务
【JavaP6大纲】分布式事务篇:三阶段提交(3PC)
3PC 相比于 2PC 它在参与者中也引入了超时机制,并且新增了一个阶段使得参与者可以利用这一个阶段统一各自的状态,3PC 包含了三个阶段,分别是准备阶段、预提交阶段和提交阶段 准备阶段的变更成不会直接执行事务,而是会先去询问此时的参与者是否有条件接这个事务,因此不会一来就干活直接锁资源,使得在某些资源不可用的情况下所有参与者都阻塞着。 而预提交阶段的引入起到了一个统一状态的作用,它像一道栅栏,表明在预提交阶段前所有参与者其实还未都回应,在预处理阶段表明所有参与者都已经回应了。 假如你是一位参与者,你知道自己进入了预提交状态那你就可以推断出来其他参与者也都进入了预提交状态。
Java廖志伟
2021/04/08
5770
分布式事务 - 两阶段提交与三阶段提交
在分布式系统中,著有CAP理论,该理论由加州大学伯克利分校的Eric Brewer教授提出,该理论阐述了在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区 容错性(Partition tolerance)。
用户1212940
2022/04/13
1.1K0
分布式事务 - 两阶段提交与三阶段提交
分布式事务2PC && 3PC
转载自 https://blog.csdn.net/secretx/article/details/53322989
allsmallpig
2021/02/25
9870
分布式事务之两阶段提交(2PC)
在计算机网络以及数据库领域内,二阶段提交(Two-phase Commit)是指,为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法。通常,二阶段提交也被称为是一种协议。在分布式系统中,虽然每个节点可以知道自己的操作是成功还是失败,但却无法知道其他节点的操作是成功还是失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一协调所有节点(称作参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。因此,二阶段提交的算法思路可以概括为: 参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情况决定各参与者是否要提交操作还是中止操作。
smartsi
2019/08/07
1.1K0
分布式事务之两阶段提交(2PC)
分布式事务两阶段提交和三阶段提交有什么区别?
在分布式事务中,通常使用两阶段协议或三阶段协议来保障分布式事务的正常运行,它也是 X/Open 公司定义的一套分布式事务标准。
磊哥
2023/07/27
8100
分布式事务两阶段提交和三阶段提交有什么区别?
XA事务prepare和commit执行顺序要求,以及两阶段提交协议(2PC)和三阶段提交协议(3PC)在分布式事务中的作用和区别
按照prepare和commit的顺序执行是为了确保事务的原子性和一致性。 在prepare阶段,事务参与者会执行事务操作,并将操作记录到事务日志中,但是并不会真正提交事务,以避免发生不可恢复的错误。只有在所有参与者都能成功执行prepare操作后,事务协调器才会通知参与者进行commit操作,这样可以保证所有参与者都已经准备好提交事务。如果先执行commit操作而没有经过prepare阶段,可能会导致数据的不一致性,因为有些参与者还没有准备好提交事务。因此,为了保证事务的一致性,正常情况下应按照prepare和commit的顺序执行。
一凡sir
2023/11/21
5160
XA事务prepare和commit执行顺序要求,以及两阶段提交协议(2PC)和三阶段提交协议(3PC)在分布式事务中的作用和区别
我还不懂什么是分布式事务
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。
你呀不牛
2021/05/28
6130
saga分布式事务_本地事务和分布式事务
2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。
全栈程序员站长
2022/10/05
3.3K0
saga分布式事务_本地事务和分布式事务
跟我学分布式事务之2PC和3PC
在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。
小程故事多
2018/08/22
6490
跟我学分布式事务之2PC和3PC
分布式一致性保证:两阶段提交、三阶段提交
在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本,这些副本会放置在不同的物理机器上。
黑洞代码
2021/01/14
2.8K0
分布式一致性保证:两阶段提交、三阶段提交
分布式事务之2PC
分布式事务出现的场景那自然是分布式系统中,在传统的单体系统中,一般数据库就只有一个,所有数据表都存放在一个库中,一般涉及到事务的操作, 我们直接使用本地事务就可以,但是在分布式系统中,由于数据表可能在同一台服务器上的不同库里,也可能存在不同服务器的库里,所以就出现了分布式 事务,分布式的解决方案有多种,例如2PC,3PC,TCC等,今天主要来说一下2PC事务的思想。
小四的技术之旅
2022/07/26
5680
分布式事务之2PC
分布式学习五:二阶段提交协议(2PC)
在分布式系统中,每个节点都知道自己在事务操作的结果是成功还是失败的,却无法直接获取其他分布式节点的事务结果
仙士可
2022/03/01
5040
分布式事务之深入理解什么是2PC、3PC及TCC协议?
在上一篇文章《【分布式事务】基于RocketMQ搭建生产级消息集群?》中给大家介绍了基于RocketMQ如何搭建生产级消息集群。因为本系列文章最终的目的是介绍基于RocketMQ的事物消息来解决分布式系统中的数据一致性问题,所以先给大家率先介绍了RocketMQ消息集群的搭建。
用户5927304
2019/07/31
2.5K0
分布式事务解决方案:两阶段提交(2PC)
大家好!近来,我在开发一个 Go 模块时,遇到了一个分布式系统中的常见问题:如何保证跨多个系统的操作能同时成功或同时失败?今天,我们就一起来探讨其中一个重要的解决方案——两阶段提交(Two-Phase Commit,2PC)。
运维开发王义杰
2023/08/10
6370
分布式事务解决方案:两阶段提交(2PC)
2PC(两阶段提交)
Get
2024/03/25
3830
5种分布式事务解决方案优缺点对比
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。
Java_老男孩
2019/12/02
2.9K0
分布式一致性
在分布式系统的架构设计中,往往需要对可用性和一致性进行权衡,为了解决分布式一致性的问题,诞生了2PC、3PC和Paxos等算法。
shysh95
2019/07/23
6170
分布式事务之三阶段提交3PC(内含个人感悟)
前面我们说了分布式事务的2PC模型,由于2PC阶段提交模型存在单点故障,事务阻塞等问题,所以就引出了3PC模型,3PC和2PC 很像,不过在3PC的基础上它加入一个预提交阶段,并引入了超时机制。
小四的技术之旅
2022/07/26
6410
分布式事务之三阶段提交3PC(内含个人感悟)
相关推荐
女朋友问敖丙:什么是分布式事务?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档