`

为什么说zookeeper建议配置为奇数台?

阅读更多

     因项目中大量使用zookeeper,最近在面试几位候选人时,经常会问他们一个问题,

为什么说zookeeper建议配置为奇数台?他们只知道需要这么配置,但回答却不尽人意。

 

     使用过zookeeper的同学都知道,集群中的zookeeper需要超过半数,整个集群对外才可用。

这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来,zookeeper默认采用

quorums来支持Leader的选举。

 

     其实quorums机制有两个作用:

         1.可以保证集群中选举出leader,且是唯一的一个,不会出现脑裂(split-brain)。

         2.当客户端更新数据时,当大多数节点更新成功,客户端就会被通知更新成功了,

          其他节点可以稍后再更新,以致达到数据的最终一致性

 

      可能这还不够清晰,举个列子:设集群的最少节点数为n,

               

集群总节点数 最少可用的节点数  可容忍失效的节点数
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
。。。 。。。 。。。
2n-1 n n-1
2n n+1 n-1

 

       由此可见,当集群总数为1或2,都不行,因为可容忍失效的节点数都为0,所以要想保证zookeeper的高可用,至少需要3台+。同时,我们可以发现一个规律,3个节点与4个节点的效果是一样的,可容忍失效的节点数都是1,即2n-1与2n,可容忍失效的节点数都是n-1。2n-1个节点能达到的效果,为啥要用2n个节点呢?

省一台节省了成本。配置成偶数台也不会有问题,只不过浪费了而已。

分享到:
评论

相关推荐

    zookeeper集群配置.docx

    - `server.X`配置项定义了Zookeeper集群内的各个节点信息,格式为`server.ID=host:port1:port2`,其中`ID`为节点编号,`host`为节点的IP地址或主机名,`port1`为该节点与其他节点通信的端口,`port2`为选举时使用的...

    zookeeper服务器管理手册 (非常实用)

    - **集群规模**:为了确保服务的稳定性和容错性,通常建议集群由奇数台机器组成。例如,当集群中有三台机器时,即使有一台宕机,剩余两台仍可满足“过半存活即可用”的原则,确保集群服务不中断。 - **配置步骤**: ...

    Zookeeper概述

    - **奇数原则**:通常建议使用奇数个Server来保证系统的高可用性和一致性。例如,在具有3个Server的情况下,允许1个Server出现故障;在具有5个Server的情况下,允许2个Server出现故障。 - **Paxos协议**:Leader选举...

    zookeeper之分布式环境搭建的简单分线

    - **数量:**为了提高系统的可用性,建议至少配置三台服务器,且最好为奇数台,这样可以避免“脑裂”现象的发生。 **软件要求:** - **Java环境:**ZooKeeper基于Java开发,因此需要在每台服务器上安装JDK,推荐...

    windows下安装zookeeper.docx

    - **集群稳定性**:虽然可以使用两台服务器搭建伪集群,但推荐使用奇数个服务器来构建集群以确保高可用性。 通过以上步骤,您可以在 Windows 环境下成功安装并配置 ZooKeeper 单机版或伪集群模式。这将有助于理解和...

    ZooKeeper 完全分布式集群环境搭建.md

    - 建议为每台服务器配置静态IP地址,防止因网络问题导致IP地址发生变化而影响集群稳定性。 3. **软件包获取**: - 从官方站点([ZooKeeper官网](https://zookeeper.apache.org/releases.html))下载最新的稳定版本...

    storm集群部署和配置过程详解

    Zookeeper集群需要正确配置,包括设置适当的副本数量(通常为奇数个节点以避免投票冲突)和监控其运行状态。确保Zookeeper运行在监督模式下,以快速应对故障。定期压缩和清理Zookeeper的数据,避免数据占用过多磁盘...

    zookper配置搭建手册

    ### Zookeeper配置搭建手册知识点详解 #### 一、Zookeeper简介 Zookeeper是一个高度可用的分布式协调服务框架,主要用于解决分布式应用程序中常见的数据一致性问题。它不仅能够提供基础的键值存储服务,还支持诸如...

    solrcloud部署文档.docx

    在这个例子中,我们建议使用最小配置,即3个节点的 ZooKeeper 集群。 在部署 SolrCloud 之前,我们需要准备好运行 Solr 和 ZooKeeper 的 Linux 服务器。在这个案例中,我们选择两台机器作为 Solr 节点,三台机器...

Global site tag (gtag.js) - Google Analytics