zookeeper集群节点数为啥是奇数个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper集群节点数为啥是奇数个相关的知识,希望对你有一定的参考价值。

参考技术A

zookeeper集群搭建的时候都是推荐奇数个节点,而且其leader选举机制要求,只有当前节点获得的票数 > 总票数/2的情况下才会晋升为leader节点( 不是≥,是>!!!!!!!!!很重要 )。主要原因如下:

所以,7个节点和8个节点的容错能力相同,所以选择7个节点的集群方案更加节省资源。

2.防止脑裂造成集群不可用:
上图集群中如果由于通信问题,使左侧与右侧失去联系,而同侧集群可以正常运行。此时由于只有只有7/2 + 1 = 4个节点投同一个节点时,才能选举出master。所以左侧集群还是可用的。 不管如何划分,奇数个集群总是可用的。
如果集群改为偶数个,假设是6个,如果三个集群“失联”,则直接就导致,剩下的3个集群无法选举出master,导致集群不可用!

ZooKeeper 集群为啥最好奇数台?

ZooKeeper 集群在宕掉几个 ZooKeeper 服务器之后,如果剩下的 ZooKeeper 服务器个数大于宕掉的个数的话整个 ZooKeeper 才依然可用。假如我们的集群中有 n 台 ZooKeeper 服务器,那么也就是剩下的服务数必须大于 n/2。先说一下结论,2n 和 2n-1 的容忍度是一样的,都是 n-1,大家可以先自己仔细想一想,这应该是一个很简单的数学问题了。比如假如我们有 3 台,那么最大允许宕掉 1 台 ZooKeeper 服务器,如果我们有 4 台的的时候也同样只允许宕掉 1 台。假如我们有 5 台,那么最大允许宕掉 2 台 ZooKeeper 服务器,如果我们有 6 台的的时候也同样只允许宕掉 2 台。

综上,何必增加那一个不必要的 ZooKeeper 呢?

以上是关于zookeeper集群节点数为啥是奇数个的主要内容,如果未能解决你的问题,请参考以下文章

zookeeper集群节点数量为什么要是奇数?

Zookeeper 学习笔记之 节点个数

zookeeper集群搭建

部署Zookeeper集群

ZooKeeper 集群为啥最好奇数台?

Kafka 系列—— 基于 ZooKeeper 搭建 Kafka 高可用集群