美文网首页
zookeeper节点为什么是奇数个?

zookeeper节点为什么是奇数个?

作者: 时待吾 | 来源:发表于2017-06-23 10:53 被阅读2364次

单机模式的zk进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对zk进行部署。

注意

在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。如果只部署2个zk进程,当其中一个zk进程挂掉后,剩下的一个进程并不能构成一个quorum的大多数。

因此,部署2个进程甚至比单机模式更不可靠,因为2个进程其中一个不可用的可能性比一个进程不可用的可能性还大。

zookeeper最主要的应用场景是集群,下面介绍如何在一个集群上部署一个zookeeper。只要集群上的大多数zookeeper服务启动了,那么总的zookeeper服务便是可用的。

另外,最好使用奇数台服务器。如歌zookeeper拥有5台服务器,那么在最多2台服务器出现故障后,整个服务还可以正常使用。

所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的服务数必须大于n/2,zookeeper才可以继续使用,无论奇偶数都可以选举leader。5台机器最多宕掉2台,还可以继续使用,因为剩下3台大于5/2。说为什么最好为奇数个,是在以最大容错服务器个数的条件下,会节省资源,比如,最大容错为2的情况下,对应的zookeeper服务数,奇数为5,而偶数为6,也就是6个zookeeper服务的情况下最多能宕掉2个服务,所以从节约资源的角度看,没必要部署6(偶数)个zookeeper服务。

zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2->0;3->1;4->1;5->2;6->2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。

相关文章

  • zookeeper节点为什么是奇数个?

    单机模式的zk进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对zk进行部署...

  • zookeeper集群节点数为什么是奇数个

    zookeeper集群搭建的时候都是推荐奇数个节点,而且其leader选举机制要求,只有当前节点获得的票数 > 总...

  • Zookeeper集群搭建

    Zookeeper节点部署越多,服务的可靠性越高,建议部署奇数个节点,因为zookeeper集群是以宕机个数过半才...

  • zookeeper系列1——集群搭建

    zookeeper集群搭建 备注: 最少三个节点,建议单数个节点,以3.4.8版本为例,依赖java环境 配置主机...

  • Zookeeper知识点

    Zookeeper 为什么节点数必须是奇数? ZK集群需要一个主节点,主节点选举规则中要求可用节点数>总节点数/2...

  • ZooKeeper实现分布式锁

    ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(...

  • Kafka集群、插件 搭建及配置(三)

    1 简介   kafka 依赖zookeeper,zookeeper 简称ZK,集群官方推荐是奇数个server,...

  • zookeeper 节点类型

    zookeeper 节点类型 Intro Zookeeper 中节点类型按持久化可分为临时节点和持久节点,按顺序性...

  • Zookeeper实现分布式锁

    利用Zookeeper来实现分布式锁,主要基于其临时(或临时有序)节点和watch机制. 为什么是临时节点? 临...

  • 【Zookeeper】ZooKeeper的Observer节点是

    Observer节点不会参与到选举 只会单纯的接收 leader 同步过来的数据,不参与到过半的写机制里面去 le...

网友评论

      本文标题:zookeeper节点为什么是奇数个?

      本文链接:https://www.haomeiwen.com/subject/uhxccxtx.html