StackTc 2018-04-15 05:58 采纳率: 90.9%
浏览 2298
已采纳

Zookeeper的容错为什么是2/n + 1求大家说明下

Zookeeper的容错为什么是2/n + 1求大家说明下 如题求大神。

  • 写回答

3条回答 默认 最新

  • Coding1709469290 2018-04-15 15:27
    关注

    zookeeper集群节点数一般设置为奇数个,3,5,7,9....。集群中有一个leader和若干个follower。当 leader崩溃或者leader失去大多数(超过半数节点)的follower,这时候zookeeper进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的节点都恢复到一个正确的状态。为了触发恢复模式,就需要对节点数进行合理配置。就拿三个节点与四个节点做比较。当集群中宕机两个节点后,集群已经不能保证以后继续正常工作,这个时候就要启动恢复模式。明显可以看出,配置三个节点与四个节点的容错数量是一致的,为了节省成本,配置三个节点肯定比配置四个节点要节约很多。五节点与六节点也是如此,五节点集群中挂掉两个节点时,剩下三个节点依然能保证集群正常工作,如果再挂掉一个节点,虽然还剩下两个节点(可能你会有这样的疑问:在三节点中,两个节点正常工作并不会触发恢复模式,为何这里两个节点就会触发),但是正常工作的节点数只占节点总数的较少一部分,已经出现隐患。而在六节点集群中,宕机三个,正常工作的也是三个,刚好各占一半,这就不好决定该不该触发恢复模式。偶数个就会出现这样的尴尬情况,设置成奇数个就没有这样的情况出现。在商业中,zookeeper集群数量相对个人配置的数量肯定要多很多,任何一个节点都有可能在任何时候宕机,在兼顾工作效率与节约成本的情况下,集群节点设置为奇数个,而设置n/2 +1(超过半数) 个容错节点是最合理的。设置奇数个在生活中也是很常见有用的规则,比如某些机构中拥有投票权的人数是奇数个或者投票总数为奇数个,超过半数的机制可以有效的避免出现平局的情况。计算机领域中也有这样的机制,毕竟这些东西都是人设计出来的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。