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

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条)

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻看一个题
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)