分布之壁
你以为分布式系统就是多接几台机器。多出来的每一台机器,都是一道新的裂缝——光速有限、链路会断、节点会撒谎。你唯一的选择是:分区时,要一致性,还是要可用性?
雾锁天机门
你推开天机门,门楣上刻着四个字:"多节点,共状态。"门内没有整齐的机房,只有一片翻涌的雾——雾里隐约可见无数光点在闪烁,像很多台机器在同时运转,却彼此看不见对方的屏幕。雾凝成一面横亘天际的半透明裂壁,壁面布满细密裂纹。
「分布式系统 = 多节点 + 消息传递 + 独立失败 + 共享状态。你以为多接几台机器就行——先过了它这关。」
「来得好。你既信'多接几台机器就行',与我赌一局——这五样东西,哪一样其实不需要分布式系统?」
分布式无例外预测挑战器
反直觉下注(五选一)→ 每件剪影打脸揭真相 → 五热区全亮拼合文明图谱
灵阵台 · 部分失败之渊
石径尽头是一座悬空石台,台上漂浮着五枚光球——五台计算节点,由灵链两两相连。诺依曼老祖站在台边。
「一台机器坏了,你知道——它不亮了。五台里坏了一台呢?你看见的是四台在跑、一台在说谎。你怎么知道是哪一台?」
「多接几台机器嘛,这有什么难的。去吧。」
灵阵台 · 部分失败实验
搭建灵阵 → 注入静默故障 → 心跳阈值调节(误杀/漏检)→ 断链触发分区
复制殿 · 数据复制之幻
灵阵台后是一座环形大殿,殿中央悬浮着一块发光的数据晶——你的本命数据。殿壁上刻着三种阵法图:主从阵、多主阵、无主阵。
「只存一份,坏了就没了。存多份呢?——多存一份,就多一份不一致的可能。」
「两个主节点同时写同一行,你觉得谁说了算?你连'谁先谁后'都答不上——因为你还没有全局时钟。」
复制策略三选一 · 后果推演
主从(单点+异步丢失)→ 多主(冲突爆发)→ 无主(W/R Quorum 调参)
无主阵 · W/R Quorum 调参
分区之壁初现 · CAP 定理
复制殿地面忽然裂开——一面半透明的巨壁从裂缝中升起,把你的五节点灵阵劈成两半:左侧两台,右侧三台。诺依曼老祖的声音从壁的另一侧传来,模糊不清。
「这就是我。网络一定会分区——光缆会被挖断,交换机会丢包,机房会断电。你唯一的选择是:分区时,你要一致性,还是要可用性?」
「这是第一定律。不是你设计得不够好,是物理不允许。」
CAP 不可能相图探索器
CAP三角相图 → 三选一抉择推演 → CA触发不可能证明 → BASE浮现
CAP 不可能证明骨架(Gilbert-Lynch 2002)
共识祭坛 · Paxos 协议
壁后是一座环形祭坛,坛上漂浮着三枚"提案珠"和五枚"承诺珠"。诺依曼老祖的声音从远处传来。
「CAP 说你不能同时要 C 和 A。但如果多数节点同意同一个值——即使少数派被分区隔开,多数派仍然一致。这叫共识。有个协议叫 Paxos,1973 年提出,1998 年重写——花了一代人。它被证明是正确的。但没有人能读懂它。」
「正确但读不懂——这本身就是一种失败。」
Paxos 三阶段角色扮演
Proposer 提案 → Acceptor 承诺 → Learner 学习 → 分区注入看少数派
Raft 之环 · 共识流水线
祭坛化作一个圆环,五枚节点围环而坐。环上漂浮着一份协议卷轴——Raft。
「Raft 把共识拆成三件事:选 leader、复制日志、保安全。它比 Paxos 好懂——但分区时,它一样会让你痛。」
「上次你用 Paxos 绕我,这次用 Raft?好。我等着。」
Raft 共识流水线动画器
随机超时选 Leader → 日志复制流水线 → 分区注入脑裂 → 回滚 → Paxos/Raft 对比
事务天平 · 2PC/3PC 与一致性级别
天平殿里悬着一架巨型天平,左盘刻"Prepare",右盘刻"Commit"。天平下方是一条断裂的灵链——与 S1 灵阵台上断掉的那条一模一样。
「跨节点事务用 2PC:先 Prepare,再 Commit。但如果分区发生在 Prepare 和 Commit 之间——协调者联系不上参与者,参与者不知道该提交还是回滚。它们会永远等下去。」
「你 S1 断的那条链——还记得吗?它回来了。我帮你存着呢。现在它来收利息了。」
2PC/3PC 事务天平
2PC 执行(断链复发阻塞)→ 3PC 补救(断链愈合)→ 一致性级别滑块
一致性级别 · 另一条权衡轴
时钟殿 · 没有全局时间
时钟殿里没有钟。只有一面墙上挂满了碎裂的时钟——每个节点的时钟都显示不同的时间。
「单机有一个时钟,它说了算。五台机器有五个时钟——你说谁说了算?NTP 同步?同步有误差。GPS 授时?机房没有窗户。在分布式系统里,'同时'这个词没有意义。你只能定义'谁导致了谁'——这叫 happens-before。」
事件日志排序 · Lamport / 向量时钟
物理时钟排反 → Lamport(无法区分并发)→ 向量时钟(精确检测并发)→ 共识=模拟逻辑全局时钟
分片与计算 · 接受现实
时钟殿后是一片开阔的星图台,星图上密布着无数数据光点——你的整个数据集。
「你打不过分区。但你可以让分区只影响一小片数据。把数据拆开——一台节点只存一部分。分区了?坏运气只落在那部分数据上。节点不够用了?加一台。但加一台意味着数据要重新分配——怎么搬最少?」
一致性哈希 K/N 迁移公式组装器
分片三选一 → mod N 全搬迁 → 公式组装 K/N → 哈希环增删 → MapReduce 重跑
MapReduce 流水线
Boss 战 · 分区之壁三问
星图台灯火齐灭。分区之壁从四面八方压过来,凝成一面横亘天际的巨壁,壁上每一条裂纹都在发光——那是你这一路刻下的所有"此路不通"。
「我是分区之壁。我不住在你的错误里——错误救不了我。我住在你'以为网络是可靠的'的地方。你每以为多接一台机器就多一份力量,我就胖了一圈。三问。答错一题,壁就厚一分。」
渊账累计 0 笔 · 三问全对后清零
尾声 · 微服务远眺
壁散尽时天机门大开,远处地平线上浮现出一座由无数微光节点组成的巨型城邦——每个节点都是一个独立服务,彼此用光链相连,城邦上空漂浮着消息流的光河。
「你入门了。不是因为你答对了三问——答对的会忘。是因为你摔过的每一跤,都刻在你手上了。看看那座城邦。你这一路学的 CAP、共识、事务、分片——它们最终长成了这个样子。」
知识图谱点亮 · 微服务远眺
RPC 拆解 → 消息流拆解 → 架构演进 → 11 块碎片点亮 → 境界突破