news 2026/4/20 20:25:33

【分布式系统】07 事务(上):2PC 与 3PC —— 追求“完美原子性”的理想与代价

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【分布式系统】07 事务(上):2PC 与 3PC —— 追求“完美原子性”的理想与代价

大家好,我是Tony Bai。

欢迎来到《分布式系统:原理、哲学与实战》微专栏的第七讲。

在上一讲中,我们征服了“分区”这片广阔的疆域。通过将数据“分而治之”,我们获得了构建海量系统的能力。但我们也留下了一个最棘手的“悬念”:

如果一次业务操作,需要原子性地修改位于不同分区的数据,我们该怎么办?

想象一个经典的银行转账场景:用户 Gopher 要从他在分区 A 的储蓄账户,转账 100 元到他在分区 B 的信用卡账户。这个操作包含两个步骤:

  1. 储蓄账户(分区 A)扣款 100 元。

  2. 信用卡账户(分区 B)入账 100 元。

我们对这个操作有一个神圣的、不可违背的要求:原子性 (Atomicity)。这两个步骤必须要么全部成功,要么全部失败。我们绝不能接受扣款成功但入账失败(钱没了),或者扣款失败但入账成功(天降横财)的情况。

在单机数据库中,BEGIN TRANSACTION...COMMIT语句优雅地为我们解决了这个问题。但现在,数据被分割在两个独立的、通过不可靠网络连接的物理节点上。我们如何在一个被“分裂”的世界里,重塑“原子性”的辉煌?

今天,我们将深入探讨对这个问题最早、也是最经典的回答——**两阶段提交协议 (Two-Phase Commit, 2PC)**。我们将看到,它是一个试图在分布式世界中,完美复刻单机事务的“理想主义”英雄。

然而,当这个“英雄”暴露出其致命的脆弱性时,一场旨在拯救它的“改良运动”也随之展开,催生了更复杂的**三阶段提交协议 (Three-Phase Commit, 3PC)**。

本章,我们将共同见证这场围绕“完美原子性”展开的、长达数十年的执着追求与艰难挣扎。我们将剖析 2PC 的伟大构想与悲壮缺陷,并审视 3PC 的改良尝试为何最终也未能成为完美的答案。

我们先从两阶段提交协议( 2PC )开始。

2PC 协议详解:一场由“协调者”主导的投票

两阶段提交引入了两个核心角色:

  • 协调者 (Coordinator):事务的发起者和最终决策者。在我们的例子中,可以是一个专门的事务管理服务,或是发起转账请求的应用服务器。

  • 参与者 (Participants):所有涉及该事务的数据节点。在我们的例子中,就是分区 A 和分区 B。

顾名思义,整个协议分为两个阶段:准备阶段 (Prepare Phase)和 提交阶段 (Commit Phase)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:57:43

Z-Image-Turbo广告行业应用:创意海报生成部署实操案例

Z-Image-Turbo广告行业应用:创意海报生成部署实操案例 1. 引言 1.1 业务场景描述 在数字营销与广告创意领域,高质量视觉内容的生产效率直接影响品牌传播速度和用户转化率。传统海报设计依赖专业设计师手动制作,周期长、成本高,…

作者头像 李华
网站建设 2026/4/18 6:36:22

SGLang编译器机制揭秘:前后端分离设计部署教程

SGLang编译器机制揭秘:前后端分离设计部署教程 1. 引言:SGLang 的定位与核心价值 随着大语言模型(LLM)在实际业务中的广泛应用,如何高效、稳定地部署模型并提升推理吞吐量,成为工程落地的关键挑战。传统部…

作者头像 李华
网站建设 2026/4/20 15:43:28

LobeChat插件开发入门:云端环境免配置,专注编码

LobeChat插件开发入门:云端环境免配置,专注编码 你是不是也遇到过这种情况:兴致勃勃地想为 LobeChat 开发一个实用插件,比如接入公司内部知识库、自动写周报、或者调用天气API做智能提醒。结果刚打开项目文档,就被一堆…

作者头像 李华
网站建设 2026/4/17 22:44:11

机器人学习!(二)ROS2-环境配置(6)2026/01/19

古月居ROS2 - 21讲1、ROS命令行操作帮助命令:ros2 --help 运行节点:ros2 run 功能包 节点名查看节点:ros2 node list/info 查看话题:ros2 topic list, ros2 topic echo 话题名发布话题:ros2 topic pub…

作者头像 李华
网站建设 2026/4/18 13:48:34

万物识别-中文-通用领域部署案例:医疗影像分类系统搭建

万物识别-中文-通用领域部署案例:医疗影像分类系统搭建 1. 引言 1.1 业务场景描述 随着人工智能在医疗领域的深入应用,医学影像的自动分析已成为提升诊断效率和准确率的重要手段。放射科医生每天需要处理大量X光、CT和MRI图像,传统人工阅片…

作者头像 李华
网站建设 2026/4/20 1:55:55

Hunyuan-MT-7B代码实例:Python调用翻译API实战

Hunyuan-MT-7B代码实例:Python调用翻译API实战 1. 背景与应用场景 随着全球化进程的加速,多语言内容处理需求日益增长。在跨境电商、国际交流、跨语言内容创作等场景中,高质量的机器翻译能力成为关键基础设施。腾讯推出的 Hunyuan-MT-7B 是…

作者头像 李华