一分钟了解两阶段提交2PC(运营MM也懂了)

简介: 本文说的是分布式事务的一种实现方式2PC。

上一期分享了“一分钟了解mongoDB”【回复“mongo”阅读】,本期将分享分布式事务的一种实现方式2PC。

一、概念

二阶段提交2PC(Two phase Commit)是指,在分布式系统里,为了保证所有节点在进行事务提交时保持一致性的一种算法。

二、背景

在分布式系统里,每个节点都可以知晓自己操作的成功或者失败,却无法知道其他节点操作的成功或失败。
当一个事务跨多个节点时,为了保持事务的原子性与一致性,需要引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)的操作结果,并指示它们是否要把操作结果进行真正的提交(commit)或者回滚(rollback)。

三、思路

2PC顾名思义分为两个阶段,其实施思路可概括为:
(1)投票阶段(voting phase):参与者将操作结果通知协调者;
(2)提交阶段(commit phase):收到参与者的通知后,协调者再向参与者发出通知,根据反馈情况决定各参与者是否要提交还是回滚;

四、缺陷

算法执行过程中,所有节点都处于阻塞状态,所有节点所持有的资源(例如数据库数据,本地文件等)都处于封锁状态。
典型场景为:
(1)某一个参与者发出通知之前,所有参与者以及协调者都处于阻塞状态;
(2)在协调者发出通知之前,所有参与者都处于阻塞状态;
另外,如有协调者或者某个参与者出现了崩溃,为了避免整个算法处于一个完全阻塞状态,往往需要借助超时机制来将算法继续向前推进,故此时算法的效率比较低。
总的来说,2PC是一种比较保守的算法。

五、举例

甲乙丙丁四人要组织一个会议,需要确定会议时间,不妨设甲是协调者,乙丙丁是参与者。
投票阶段:
(1)甲发邮件给乙丙丁,周二十点开会是否有时间;
(2)甲回复有时间;
(3)乙回复有时间;
(4)丙迟迟不回复,此时对于这个活动,甲乙丙均处于阻塞状态,算法无法继续进行;
(5)丙回复有时间(或者没有时间);
提交阶段:
(1)协调者甲将收集到的结果反馈给乙丙丁(什么时候反馈,以及反馈结果如何,在此例中取决与丙的时间与决定);
(2)乙收到;
(3)丙收到;
(4)丁收到;

六、结论

2PC效率很低,分布式事务很难做。

image.png

目录
相关文章
|
4月前
|
人工智能 弹性计算 调度
阿里云无影AgentBay是什么?AgentBay使用、积分计费规则及问题解答FAQ
阿里云无影AgentBay是面向AI Agent的云基础设施,提供浏览器、桌面、代码、移动端全覆盖的安全沙箱环境,支持SDK与MCP接入,助力开发者高效构建与运行智能体。新用户可0.01元领取100积分体验券,用于抵扣资源消耗。平台支持秒级弹性伸缩、千级并发调度,适用于金融分析、跨境电商、医疗诊断等多场景。采用基础权益包+订阅包+后付费模式,灵活计费。
339 1
|
2月前
|
人工智能 分布式计算 大数据
碾压级优势!阿里云AI云市场份额超过2-4名总和,2026新晋AI时代”领导者“
阿里云以35.8%的中国AI云市场份额稳居第一,远超第二至第四名总和,是亚太唯一在生成式AI四大领域均获最高评级的云服务商。全栈自研“云+大模型+芯片”,通义千问成全球第一开源大模型,下载超6亿次。
|
8月前
|
安全 IDE Java
SonarQube Server 2025 Release 4 新增功能简介 - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 4 新增功能简介 - 代码质量、安全与静态分析工具
336 0
SonarQube Server 2025 Release 4 新增功能简介 - 代码质量、安全与静态分析工具
|
缓存 JSON 安全
深入了解 Elasticsearch:10个常见面试问题及详细答案
Elasticsearch 是一个强大的搜索和分析引擎,广泛应用于处理大型数据集和构建实时搜索应用程序。在准备 Elasticsearch 面试时,掌握一些常见问题的答案至关重要。本文将为你提供10个常见的 Elasticsearch 面试问题,并详细解答每个问题。
|
安全 Shell 网络安全
看完这篇 教你玩转渗透测试靶机vulnhub—Emplre: Lupinone
看完这篇 教你玩转渗透测试靶机vulnhub—Emplre: Lupinone
453 0
|
JavaScript 前端开发 Java
IT入门知识第六部分《后端开发》(6/10)
IT入门知识第六部分《后端开发》(6/10)
|
小程序 Python
Python实现读取Word表格计算汇总写入Excel
本文通过一个实例介绍了通过Python实现读取Word表格计算汇总写入Excel
478 0
Python实现读取Word表格计算汇总写入Excel
|
存储 JSON 缓存
【微信小程序】项目实战—抽签应用
【微信小程序】项目实战—抽签应用
1249 0
|
Web App开发 负载均衡
新功能:阿里云负载均衡SLB支持HTTP访问强制跳转HTTPS
很高兴的告诉大家,阿里云负载均衡SLB已经在澳大利亚(悉尼)、日本(东京)、阿联酋(迪拜)、美国 (弗吉尼亚)、美国(硅谷)、马来西亚(吉隆坡)、德国(法兰克福)、新加坡、印度尼西亚(雅加达)上述地域,支持HTTP访问强制跳转HTTPS功能。
17306 1
|
存储 Linux 对象存储
MinIO 搭建
MinIO 搭建 MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
5223 0

热门文章

最新文章