- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面试题-为什么Zookeeper集群节点数量要是奇数个?
2021-09-04
为什么Zookeeper集群节点数量要是奇数个?大家在工作中,用到的Zookeeper集群的节点个数都是奇数个。至于为什么要是奇数个,可能都晓得是为了满足选举需要,并不晓得具体的缘由。本文次要说下缘由和原理,以免在面试过程中被Pass。
首先需要明确zookeeper选举的规章:leader选举,要求 可用节点数量 总节点数量/2 ?。留意 是 , 不是 ≥。
注:为什么规章要求?可用节点数量??集群总节点数量/2 ??
假如不这样限制,在集群消灭脑裂的时候,可能会消灭多个子集群同时服务的情况(即子集群各组选举出本人的leader), 这样对整个zookeeper集群来说是紊乱的。
换句话说,假如恪守上述规章进行选举,即便消灭脑裂,集群最多也只能消灭一个子集群可以供应服务的情况(能满足节点数量?总结点数量/2 的子集群最多只会有一个)。
所以要限制?可用节点数量??集群总节点数量/2 。
接受奇数个的节点次要是出于两方面的考虑:
1、防止由脑裂形成的集群不行用。
首先,什么是脑裂?集群的脑裂通常是发生在节点之间通信不行达的情况下,集群会分裂成不同的小集群,小集群各自选出本人的master节点,导致原有的集群消灭多个master节点的情况,这就是脑裂。
下面举例说一下为什么接受奇数台节点,就可以防止由于脑裂形成的服务不行用:
(1) 假如zookeeper集群有 5 个节点,发生了脑裂,脑裂成了A、B两个小集群:?
? ? ?(a) A :1个节点 ,B :4个节点?
? ? ?(b) A :2个节点, B :3个节点 ?
? ? 可以看出,上面这两种情况下,A、B中总会有一个小集群满足 可用节点数量 总节点数量/2 。所以zookeeper集群仍旧能够选举出leader , 仍旧能对外供应服务,只不过是有一部分节点失效了而已。
(2) 假如zookeeper集群有4个节点,同样发生脑裂,脑裂成了A、B两个小集群:
? ? (a) A:1个节点 , ?B:3个节点?
? ? (b) A:2个节点 , B:2个节点
? ? 可以看出,情况(a) 是满足选举条件的,与(1)中的例子相同。但是情况(b) 就不同了,由于A和B都是2个节点,都不满足 可用节点数量 总节点数量/2 的选举条件, 所以此时zookeeper就彻底不能供应服务了。
综合上面两个例子可以看出:在节点数量是奇数个的情况下, zookeeper集群总能对外供应服务(即便损失了一部分节点);假如节点数量是偶数个,会存在zookeeper集群不能用的可能性(脑裂成两个均等的子集群的时候)。
在生产环境中,假如zookeeper集群不能供应服务,那将是致命的 , 所以zookeeper集群的节点数一般接受奇数个。
2、在容错力量相同的情况下,奇数台更节省资源。
leader选举,要求 可用节点数量 总节点数量/2 ?。留意 是 , 不是 ≥。
举两个例子:
(1) 假如zookeeper集群1 ,有3个节点,3/2=1.5 , ?即zookeeper想要正常对外供应服务(即leader选举成功),至少需要2个节点是正常的。换句话说,3个节点的zookeeper集群,允许有一个节点宕机。
(2) 假如zookeeper集群2,有4个节点,4/2=2 , 即zookeeper想要正常对外供应服务(即leader选举成功),至少需要3个节点是正常的。换句话说,4个节点的zookeeper集群,也允许有一个节点宕机。
那么问题就来了, 集群1与集群2都有 允许1个节点宕机 的容错力量,但是集群2比集群1多了1个节点。在相同容错力量的情况下,本着节省资源的准绳,zookeeper集群的节点数维持奇数个更好一些。
文档评论(0)