第4章 数据复制与一致性
复制架构、一致性模型、逻辑时钟,以及 BASE 与 CRDT。
下载本章 PDF4.1 复制的意义
1. 知识点论述
「4.1 复制的意义」是《分布式计算系统》一致性部分的核心知识点。解释多副本如何读、如何冲突判定,以及强弱一致如何取舍。本知识点首先把握:高可用:一个节点坏了,其他副本继续服务。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 高可用:一个节点坏了,其他副本继续服务。
- 低延迟:副本靠近用户。
- 扩展:多副本分担读请求。
4. 应用场景
- 多活机房提高可用性。
- 就近读副本降低延迟。
- 读多写少业务用副本分担读流量。
4.2 复制架构
1. 知识点论述
「4.2 复制架构」是《分布式计算系统》一致性部分的核心知识点。解释多副本如何读、如何冲突判定,以及强弱一致如何取舍。本知识点首先把握:主从:主节点处理写,从节点同步并承担部分读。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 主从:主节点处理写,从节点同步并承担部分读。
- 分片加复制:数据先拆开,每个分片再指定主分片负责写,副本可跨区域。
4. 应用场景
- MySQL 主从、Kafka ISR、云数据库跨区副本。
- 分片加复制:每个分片独立主从。
- 写路径与读路径分离设计。
4.3 一致性阶梯
1. 知识点论述
「4.3 一致性阶梯」是《分布式计算系统》一致性部分的核心知识点。解释多副本如何读、如何冲突判定,以及强弱一致如何取舍。本知识点首先把握:线性一致性:所有操作像发生在一条与真实时间兼容的全局时间线上。实现依赖共识或带误差界的全局时间,如 Spanner 的 TrueTime。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 线性一致性:所有操作像发生在一条与真实时间兼容的全局时间线上。实现依赖共识或带误差界的全局时间,如 Spanner 的 TrueTime。
- 顺序一致性:所有进程看到相同的写顺序,不要求符合墙钟。全序广播是常见实现手段。
- 因果一致性:只约束有因果关系的写。向量时钟用来识别因果和并发。
- 最终一致性:允许暂时分歧,停止更新后副本收敛。CDN 和购物车常用。
- 一致性越强,延迟和可用性代价通常越高。订单要强一致,推荐可以最终一致。
4. 应用场景
- 金融转账选强一致;推荐列表可用最终一致。
- Spanner/TrueTime 场景理解线性一致代价。
- 产品设计时明确一致性 SLA。
4.4 逻辑时钟
1. 知识点论述
「4.4 逻辑时钟」是《分布式计算系统》一致性部分的核心知识点。解释多副本如何读、如何冲突判定,以及强弱一致如何取舍。本知识点首先把握:Lamport 时钟:收到消息后把自己的时钟拨到不小于对方,再加一。C(a) < C(b) 不能证明 a 在真实时间上先发生。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- Lamport 时钟:收到消息后把自己的时钟拨到不小于对方,再加一。C(a) < C(b) 不能证明 a 在真实时间上先发生。
- 向量时钟:每个进程一个分量。可以判断先后,也可以判断两个事件并发。
- 冲突检测:同一数据的两个更新,若向量不可比,就是并发冲突,需要合并规则。
4. 应用场景
- 版本向量检测并发写冲突。
- 因果消息定序、协作编辑的冲突合并。
- 分布式追踪中理解“逻辑先后”不等于墙钟先后。
4.5 客户端一致性与 BASE、CRDT
1. 知识点论述
「4.5 客户端一致性与 BASE、CRDT」是《分布式计算系统》一致性部分的核心知识点。解释多副本如何读、如何冲突判定,以及强弱一致如何取舍。本知识点首先把握:读己之写:用户随后的读至少能看见自己刚写的值。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 读己之写:用户随后的读至少能看见自己刚写的值。
- BASE:基本可用、软状态、最终一致。
- CRDT:副本可独立更新再合并。;状态型:传播完整状态,用合并函数收敛。;操作型:传播操作,操作本身可交换或可收敛。
4. 应用场景
- 购物车、点赞计数可用 CRDT 或最终一致方案。
- 读己之写保证用户刷新立即看到自己的提交。
- BASE 系统在可用与一致之间显式取舍。