Raft 假设节点故障但不作恶。拜占庭模型把”撒谎的节点”也纳入考量,是区块链与开放联盟链的理论基础之一。

要解决什么问题

Crash-stop 故障下 Raft 够用;若节点被入侵、伪造消息或双重投票,简单多数派无法保证安全。跨组织联盟链、部分许可链需要在不可信参与者间达成共识,成本远高于公司内部 etcd 集群。

核心原理

拜占庭将军问题:n 个将军需一致行动,存在叛徒传假消息。经典结论:3f+1 节点最多容忍 f 个拜占庭节点。PBFT 等 BFT 算法通过 pre-prepare/prepare/commit 多轮交互和签名验证达成一致,消息复杂度 O(n²) 级别,延迟显著高于 Raft。

方案权衡

BFT 安全强但性能开销大,一般企业内部系统用 CP 的 Raft/ZAB 即可,假设节点非恶意但会 crash。区块链因开放参与和经济激励才广泛用 BFT 变体(PoW/PoS 等是另一种威胁模型)。威胁模型驱动算法选择,不要过度设计。

落地要点

内部微服务用 mTLS 和审计降低恶意风险;评估是否真需要 BFT 往往答案是否。了解 PBFT 三阶段直觉即可。若面试区块链,再深入 PoW 与 BFT 差异。安全团队关注 key 泄露而非 Byzantine 数学证明。

常见误区

误区:所有分布式都要 BFT;混淆 2f+1 crash fault 与 3f+1 byzantine;以为 Raft 能防恶意 Leader 伪造日志;忽视 BFT 的通信和存储签名成本。

小结

拜占庭问题提醒我们:共识算法与威胁模型绑定。大多数互联网后台只需 crash fault 容忍,不必为 BFT 的复杂度买单。把它当作视野拓展即可:当你进入区块链或跨组织联盟链领域,再深入 PBFT 和激励机制设计也不迟。