知识卡片
容错共识算法的代价与局限
内容
容错共识虽然是分布式系统的重要突破——能在多数节点正常时始终保证一致同意、完整性、有效性并持续取得进展——但并不是免费的,代价体现在四方面:节点在决定前要对提议投票,本质是一种同步复制,比大多数数据库默认使用的异步复制慢,故障切换时已提交数据丢失的风险也随之改变;共识系统总要依赖严格多数才能运转,容忍1个节点故障至少需要3个节点、容忍2个需要至少5个,一旦网络分区把节点切成互不连通的两半,只有多数所在那一侧能继续工作,另一侧会被阻塞;大多数共识算法假设参与投票的节点集合是固定的,动态增删节点需要更复杂的”动态成员扩展”,比静态成员算法难理解得多;共识算法普遍依赖超时侦测失效节点,在网络延迟剧烈波动的环境(尤其是地理上分散的系统)中容易误判领导者失效,引发频繁的重新选举,实际执行时间反而更多耗在权力更迭而非做事上——已证明Raft在特定”某条连接一直不稳定但整个网络仍算正常”的极端情形下会陷入领导者反复切换、系统无法推进的困境,这类对不可靠网络的鲁棒性仍是分布式系统的开放研究问题。
参考来源
- 位置:《数据密集型应用系统设计》第九章《一致性与共识》"共识的局限性"(源文件:_epub-src/ch9_split_001.html)
- 结论依据:原文列举投票即同步复制、需要严格多数节点、大多数算法假设成员固定、超时误判导致频繁领导选举四点共识代价,并举出Raft在特定网络故障下反复切换领导者的已证明极端情形,直接支撑本卡片结论。
- 原始内容:共识系统总是需要严格多数来运转……大多数共识算法假定参与投票的节点是固定的集合……Raft已被证明存在让人不悦的极端情况……设计能健壮应对不可靠网络的算法仍然是一个开放的研究问题。