因项目中大量使用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集群配置详解 详细描述在linux集群环境中搭建zookeeper的步骤
Zookeeper可以进行集群的配置管理,名字服务,分布式锁,集群管理等等
本文提出了一种基于ZooKeeper 的配置信息存储方案。首先介绍了ZooKeeper 的架构和ZooKeeper 的相关概念,然后分析了当前配置信息存储方案的不足;最后重点介绍 基于ZooKeeper 的配置信息存储方案,包括架构和实现...
一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...
dubbo+zookeeper集群配置.docx 希望这份文档dubbo+zookeeper集群配置.docx可以帮助学习者
ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群ZooKeeper安装配置 集群...
zookeeper集群zoo.cfg配置文件,下载后将zookeeper地址改成实际地址,可以直接使用
zookeeper集群配置
dubbo容器资源库zookeeper的配置详解
3、storm项目-流数据监控系列3《实例运行》4、storm项目-流数据监控系列4《MetaQ接口》5、storm项目-流数据监控系列5《zookeeper统一配置》 6、storm项目-流数据监控系列6《最新代码树及详解》。希望能对大家有所...
大数据技术基础实验报告-Zookeeper的安装配置和应用实践
hbase和zookeeper的详细配置
最佳的实战,在linux环境中 zookeeper单机和分布式集群配置,包括服务器网卡配置,jdk安装 ,环境变量的配置 zookeeper的操作和命令,对于初学者很实用
Zookeeper单机及集群安装配置
基于Zookeeper的配置管理中心设计与实现.pdf
zookeeper配置文件.zip
zookeeper配置.docx
hadoop集群配置流程以及用到的配置文件,hadoop2.8.4、hbase2.1.0、zookeeper3.4.12
zookeeper集群配置带图片详解内容较为清晰上市公司所用的pdf版本的集群配置如有不懂可联系
zookeeper集群的配置文件示例,zoo.cfg,里面已经配置好了,一看就懂。只要把该文件放在zookeeper目录下的conf文件夹下即可