知识卡片

增加副本数反而可能降低可用性

普通读书笔记卡 · 1627

内容

分布式共识系统靠大多数法定人数运作,副本数与容错能力并非线性正相关:5个副本时法定人数是3,系统可容忍40%副本同时不可用;副本增至6个后法定人数变成4,容错阈值却降到33%出头——多加一个副本,能承受的故障比例反而下降。原因是大多数按向上取整计算,副本数从奇数变偶数时容错能力不会同步增长,只是让达成共识需要更多票数。因此调整副本数量前应先重新计算容错阈值,而非默认副本越多越安全。

参考来源

- 位置:《SRE:Google运维解密》第23章《管理关键状态:利用分布式共识来提高可靠性》(源文件:_epub-src/OEBPS/Text/0009_0014.xhtml) - 结论依据:原文"容量规划和负载均衡"一节以ZooKeeper/Chubby常见部署为例,给出5副本法定人数3(可容忍40%不可用)与6副本法定人数4(超过33%不可用即失效)的具体对比,直接说明增加副本可能降低系统可用性。 - 原始内容:对ZooKeeper和Chubby来说,一个常见的部署使用5个副本,一个法定仲裁过程需要3个副本参与。整个系统可以在两个副本,也就是40%不可用的情况下仍然正常工作。当使用6个副本时,仲裁过程需要4个副本:也就是超过33%的副本不可用就会导致系统无法工作。