DS / LAB 分布式系统
A COURSE IN DISTRIBUTED SYSTEMS / 01

发生故障时,
什么仍有保证?

当消息延迟、节点停止、操作并发时,系统究竟还能承诺什么?先建立模型,再检查真实实验,最后亲手改变条件。

n1n2ⅡLEADERFOLLOWERPAUSED

原理示意 / 3 个投票者 · 多数派 2
真实进程结果单独保存。

07连贯章节
04 × 03实验家族 × 基线重复
etcd 3.6.6固定实现版本
1 host真实进程,有界结论
PLAY → PREDICT → EXPLAIN

七个场景,你的选择会改变结果。

暂停 Leader,把读拖到写之后,复用重试 ID,或让旧工作者先写。再用真实保存证据核对你的预测。

拆掉集群 · 拖动历史 · 恢复旧工作者

新增:真实节点连接分区 · MIT 6.5840 课程地图

按依赖关系建立概念

只需了解进程、文件和请求响应编程,不要求业务背景。1–3 章建立模型,4–6 章应用模型,7 章串起证据链。

01

系统与故障假设

先说明故障模型,再谈能做出的承诺。

25–40 min · 建议学习时间,非测量值
02

时间、因果与并发历史

区分时间戳与真正的顺序约束。

30–45 min · 建议学习时间,非测量值
03

复制与一致性模型

定义共享对象允许哪些观测。

35–50 min · 建议学习时间,非测量值
04

状态机复制、Raft 与多数派

跟踪选主、提交与恢复中的共同决策。

45–60 min · 建议学习时间,非测量值
05

RPC、未知结果与幂等

避免一次重试变成第二次副作用。

35–50 min · 建议学习时间,非测量值
06

租约、锁与 Fencing Token

在接收资源处阻止旧代次的迟到写。

40–55 min · 建议学习时间,非测量值
07

故障恢复与证据

核对未知结果,保留结论的适用范围。

30–45 min · 建议学习时间,非测量值
先知道范围,再看结果。

集群是同机三个真实进程;故障来自自己进程的崩溃/暂停和应用响应延迟。浏览器检查器是另一个小模型;两者都不能证明多机性能。

检查、修改、复现。

阅读无需安装。需要探索不同执行顺序时,再运行配套代码。

互动课堂 ↗

七个动手场景:暂停节点、拖动读操作、调整延迟、回放真实证据。

真实实验证据 ↗

保存全部基线重复:调用者结果、已提交效果、租约代次与恢复读取。

复现真实实验 ↗

下载独立源码,在回环环境执行、检查和修改三类真实实验。

连接不同层次

继续学习本地事务、流式状态、计算恢复与运行时取消,同时保留各自的保证边界。

MySQL Lab · Streaming Lab · Compute Lab · Java Runtime Lab