Distributed Computing Theory · 交互式可视化

分布式计算理论可视化实验室

从 CAP 三选二到 FLP 不可能性,从共识上界到拜占庭容错。8 个模块拆解分布式系统在异步、故障、消息丢失下的根本理论极限。

编号 150分类 Cross-disciplinary模块 8风格 Linear Dark依赖 零渲染 SVG
01CAP 定理 · Consistency Availability Partition

在网络分区 (P) 不可避免时,系统只能在一致性 (C) 与可用性 (A) 间二选一。点击三角顶点切换系统选择,观察分区下的行为。

CP (保一致)
AP (保可用)
CA (无分区)
分区下行为
—
分区发生时:CP 拒绝写入保证一致 (如 ZooKeeper/Paxos);AP 接受写入允许分歧 (如 Dynamo/Cassandra);CA 假设网络可靠,现实不存在。
02FLP 不可能性 · 异步共识无解

Fischer-Lynch-Paterson (1985):异步系统中只要有一个进程可能崩溃,确定性共识协议无法同时保证终止性与安全性。逐步演示为何永远存在「不确定」执行。

阶段0
初始 双价 (bivalent) 状态可被调度推迟到无限——只要有一个进程能在关键时刻崩溃,共识既不能保证终止。实践中用随机化或放宽终止性绕过。
03共识上界 · Quorum 与容错阈值

崩溃故障需 N ≥ 2f+1 (多数派);拜占庭故障需 N ≥ 3f+1。调节故障数 f 观察所需副本数与容忍度。

故障数 f 2
崩溃故障 (CFT)
拜占庭故障 (BFT)
所需副本 N: —
Quorum: —
容错率: —
CFT:N=2f+1,Quorum=f+1 (多数写)。BFT:N=3f+1,Quorum=2f+1 (需超过 2/3 一致)。这是 Raft/Paxos 与 PBFT/HotStuff 的根本分界。
04Wait-Free 层次 · 共识数层级

共识数 (consensus number) CN(X) = 用对象 X 能解共识的最大进程数。层级严格:读/写=1,test-and-set/swap=2,compare-and-swap=∞。点击层级查看。

读写寄存器
TAS / Swap
队列 / 栈
CAS / LL-SC
共识数 CN: —
层级: —
能解 N 进程共识: —
Herlihy 层次定理:若 CN(Y) > CN(X),则 Y 不能用 X 无等待 模拟。CAS (CN=∞) 是通用原语,可构造任意对象的无等待实现。
05拜占庭将军问题 · Byzantine Generals

叛变将军可发任意消息。切换叛徒数量与叛徒行为,观察忠诚将军能否达成一致行动。

将军数 N 5 叛徒数 f 1
协议结论
—
Lamport 定理: Oral 消息协议可解当且仅当 N ≥ 3f+1。叛徒 ≥ N/3 时无解——这是 BFT 区块链 (PBFT/HotStuff) 选 3f+1 副本的根源。
06故障模型对比 · Failure Model Spectrum

崩溃 (crash) → 遗漏 (omission) → 时序 (timing) → 拜占庭 (byzantine),故障行为越来越「任意」。切换模型查看进程可能的行为集合。

Crash
Omission
Timing
Byzantine
故障进程可做的行为
—
故障模型是包含关系:crash ⊂ omission ⊂ timing ⊂ byzantine。模型越强,协议越复杂、副本越多。实际系统多按 crash 假设设计,安全关键场景才用 BFT。
07一致性保证级别 · Consistency Levels

从线性一致性 (最强) 到最终一致性 (最弱),层级按可组合性排列。点击级别查看保证与代价。

Linearizable
Sequential
Causal
FIFO (PRAM)
Eventual
保证: —
代价: —
可组合: —
层级:Linearizable ⊃ Sequential ⊃ Causal ⊃ FIFO ⊃ Eventual。线性一致性可组合 (LOCUS),但需全局总序与同步,延迟最高;最终一致性性能最好但推理最难。
08分布式计算模型 · Shared Memory vs Message Passing

共享内存 (读写寄存器) 与消息传递 (send/receive) 是两种基本模型,在异步可崩溃下等价。切换模型与同步假设查看可解问题。

共享内存
消息传递
异步
同步
模型特性
—
异步+崩溃:共识不可解 (FLP)。同步+崩溃:共识可解 (Paxos 退化为多数派)。共享内存与消息传递可通过 队列/寄存器模拟 互译,计算能力等价。