问题:在 Paxos 的 Prepare 和 Accept 阶段,为什么只需向 超过半数 (Majority) 的节点发送请求,而不是全部?

核心逻辑:用“数学重叠”换“系统可用”

1. 性能:消除“长尾效应”

  • 全部发送:系统速度取决于最慢(或已宕机)的节点。
  • 多数派发送:只需等待最快的一半多节点响应。这规避了网络抖动和单点故障对系统性能的拖累。

2. 安全:利用“集合重叠性”

  • 数学原理:在 个节点的集群中,任意两个多数派集合必有交集(至少存在一个公共节点)。
  • 信息传递:只要当前提议获得了多数派批准,下一个提议者在询问多数派时,一定能从公共节点处得知已达成的共识。
  • 结论:发送给全部节点在逻辑上是冗余的,多数派已足以保证一致性。

3. 可用:允许部分失效

  • 容错边界:系统允许在少于一半节点故障时依然正常运作。
  • 对比:若要求“全部响应”,则任何一个节点的离线都会导致整个集群写停摆。

总结

“发送给全部”是追求绝对冗余但牺牲了可用性;“发送给多数派”则是利用数学重叠性,在保证一致性的前提下,获得了分布式系统最核心的高可用高性能