第6章 分布式事务
ACID、隔离级别、并发控制、两阶段提交与典型系统。
下载本章 PDF6.1 事务与 ACID
1. 知识点论述
「6.1 事务与 ACID」是《分布式计算系统》分布式事务部分的核心知识点。把跨节点操作组织成可提交或可回滚的事务。本知识点首先把握:事务是完成一项任务的操作序列,由开始、操作、提交或中止组成。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 事务是完成一项任务的操作序列,由开始、操作、提交或中止组成。
- 原子性:全部生效或全部不生效。
- 一致性:事务把数据从一个正确状态带到另一个正确状态。
- 隔离性:并发事务互不看见不该看见的中间状态。
- 持久性:提交之后故障也不丢失。
4. 应用场景
- 转账、下单、库存扣减等业务事务。
- 用 ACID 对照检查系统保证是否足够。
- 分布式环境下原子性与持久性更难实现。
6.2 隔离级别
1. 知识点论述
「6.2 隔离级别」是《分布式计算系统》分布式事务部分的核心知识点。把跨节点操作组织成可提交或可回滚的事务。本知识点首先把握:读未提交:可能脏读。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 读未提交:可能脏读。
- 读已提交:避免脏读,仍有不可重复读。
- 可重复读:同一行两次读相同,仍可能幻读。
- 快照隔离:事务看见开始时的已提交快照。
- 可串行化:并发执行等价于某个串行顺序。
4. 应用场景
- 按业务选择读已提交、可重复读或可串行化。
- 解释脏读、不可重复读、幻读现象。
- 快照隔离在分析与在线混合负载中常见。
6.3 并发控制
1. 知识点论述
「6.3 并发控制」是《分布式计算系统》分布式事务部分的核心知识点。把跨节点操作组织成可提交或可回滚的事务。本知识点首先把握:悲观:访问前加锁,锁粒度影响并发,不当加锁会死锁。分布式环境下锁要跨节点。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 悲观:访问前加锁,锁粒度影响并发,不当加锁会死锁。分布式环境下锁要跨节点。
- 时间戳排序:用时间戳决定冲突操作谁先谁后。
- 乐观:先执行,提交前验证,冲突就放弃重试。
- MVCC:写产生新版本,读看自己的版本,读写更容易并发。有多版本两阶段锁和多版本乐观控制。
4. 应用场景
- InnoDB MVCC、乐观锁秒杀、分布式锁。
- 读写比例决定悲观/乐观/多版本选型。
- 跨节点锁放大与死锁需要额外协议。
6.4 两阶段提交
1. 知识点论述
「6.4 两阶段提交」是《分布式计算系统》分布式事务部分的核心知识点。把跨节点操作组织成可提交或可回滚的事务。本知识点首先把握:准备阶段:协调者问参与者能否提交,回答 Yes 的参与者进入就绪并等待。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 准备阶段:协调者问参与者能否提交,回答 Yes 的参与者进入就绪并等待。
- 提交阶段:协调者发提交或中止,参与者执行。
- 故障:准备阶段参与者崩溃:协调者收不到票。;提交阶段参与者崩溃:恢复后按日志完成决定。;准备或提交阶段协调者崩溃:参与者可能不知道最终决定,从而阻塞。
- 与共识的关系:可用 Raft 一类复制状态机持久化协调者的决定,减少单点。
4. 应用场景
- 跨库转账、跨服务提交。
- 理解协调者崩溃导致阻塞的风险。
- 用共识日志固化协调者决定。
6.5 系统案例
1. 知识点论述
「6.5 系统案例」是《分布式计算系统》分布式事务部分的核心知识点。把跨节点操作组织成可提交或可回滚的事务。本知识点首先把握:Spanner:跨地域、跨分片,用 TrueTime 给出提交顺序。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- Spanner:跨地域、跨分片,用 TrueTime 给出提交顺序。
- Calvin:先对一个批次的事务确定性排序,再执行,减少运行时协调。
- Anna:无中心协调,换取高可用。
- GeoGauss:多主、乐观处理跨地域并发更新。
4. 应用场景
- 对照 Spanner/Calvin 等论文系统理解不同权衡。
- 多地域事务与时钟、排序、乐观并发的关系。
- 为云数据库选型提供参照。