在zookeeper集群中,会有三种角色,leader、 follower、 observer分别对应着总统、议员、观察者。

半数以上投票通过:可以这样理解。客户端的增删改操作无论访问到了哪台zookeeper服务器,最终都会被转发给leader服务器,再由leader服务器分给zookeeper集群中所有follower服务器去投票(投票指的是在内存中做增删改操作),半数投票通过就被认为操作可执行(commit),否则不可执行。

observer观察者服务器是针对于查询操作做负载的,observer与follower服务器最大的不同在于observer没有投票权,在客户端发起的增删改操中,leader服务器是不会把消息传递给observer服务器让其投票的。但是查询操作跟follower一样,客户端的查询到了observer服务器节点,observer服务器去访问leader服务器取最新的数据然后返回给客户端。

为什么zookeeper集群是单数?

1、容错

由于在增删改操作中需要半数以上服务器通过,来分析以下情况。

2台服务器,至少2台正常运行才行(2的半数为1,半数以上最少为2),正常运行1台服务器都不允许挂掉

3台服务器,至少2台正常运行才行(3的半数为1.5,半数以上最少为2),正常运行可以允许1台服务器挂掉

4台服务器,至少3台正常运行才行(4的半数为2,半数以上最少为3),正常运行可以允许1台服务器挂掉

5台服务器,至少3台正常运行才行(5的半数为2.5,半数以上最少为3),正常运行可以允许2台服务器挂掉

6台服务器,至少3台正常运行才行(6的半数为3,半数以上最少为4),正常运行可以允许2台服务器挂掉

通过以上可以发现,3台服务器和4台服务器都最多允许1台服务器挂掉,5台服务器和6台服务器都最多允许2台服务器挂掉

但是明显4台服务器成本高于3台服务器成本,6台服务器成本高于5服务器成本。这是由于半数以上投票通过决定的。

2、防脑裂

一个zookeeper集群中,可以有多个follower、observer服务器,但是必需只能有一个leader服务器。

如果leader服务器挂掉了,剩下的服务器集群会通过半数以上投票选出一个新的leader服务器。

集群互不通讯情况:

一个集群3台服务器,全部运行正常,但是其中1台裂开了,和另外2台无法通讯。3台机器里面2台正常运行过半票可以选出一个leader。

一个集群4台服务器,全部运行正常,但是其中2台裂开了,和另外2台无法通讯。4台机器里面2台正常工作没有过半票以上达到3,无法选出leader正常运行。

一个集群5台服务器,全部运行正常,但是其中2台裂开了,和另外3台无法通讯。5台机器里面3台正常运行过半票可以选出一个leader。

一个集群6台服务器,全部运行正常,但是其中3台裂开了,和另外3台无法通讯。6台机器里面3台正常工作没有过半票以上达到4,无法选出leader正常运行。

通可以上分析可以看出,为什么zookeeper集群数量总是单出现,主要原因还是在于第2点,防脑裂,对于第1点,无非是正本控制,但是不影响集群正常运行。但是出现第2种裂的情况,zookeeper集群就无法正常运行了。

Zookeeper集群为什么要是单数相关推荐

  1. zookeeper集群为什么是单数

    https://www.cnblogs.com/LeeScofiled/p/7390937.html 在zookeeper集群中,会有三种角色,leader. follower. observer分别 ...

  2. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

  3. Zookeeper集群部署和使用

    Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,Google Chubby的一个开源实现.它是一个分布式应用程序协调服务,提供的功能包括:配置管理,名字服务 ...

  4. 面试官:说说你对ZooKeeper集群与Leader选举的理解?

    作者:TalkingData 史天舒 来自:TalkingData ZooKeeper是一个开源分布式协调服务.分布式数据一致性解决方案.可基于ZooKeeper实现命名服务.集群管理.Master选 ...

  5. 【Zookeeper】Zookeeper集群“脑裂”问题处理大全

    本文重点分享Zookeeper脑裂问题的处理办法.ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能. 脑裂通常会出现在 ...

  6. ZooKeeper集群安装

    ZooKeeper是Apache提供的.分布式服务协调系统,应用比較广泛. 由于项目中使用Kafka MQ,而Kafka全然使用ZooKeeper实现Kafka各组件的服务协调,包含Broker.Co ...

  7. Kafka不停机,如何无感知迁移ZooKeeper集群?

    Kafka 在 Yelp 的应用十分广泛,Yelp 每天通过各种集群发送数十亿条消息,在这背后,Kafka 使用 Zookeeper 完成各种分布式协调任务. 因为Yelp 非常依赖 Kafka,那么 ...

  8. 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇

    使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...

  9. Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控

    一.Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...

最新文章

  1. 重磅日程公布!与百名大咖在线交流技术,2天20个AI论坛不可错过
  2. Wix中注册c#开发的Activex控件
  3. C++Pigeonhole sort鸽巢排序的实现算法(附完整源码)
  4. 雄安大学真的来了!占地总面积2550亩!
  5. ajax的访问 WebService 的方法
  6. FPGA SPI总线协议简介
  7. 常见的python算法题_python笔试常见题
  8. 这才是真相,“轻点,疼”被禁却另有玄机
  9. Unity UnityWebRequest使用方法
  10. dell 电脑关闭触摸板的。
  11. wifi分析仪android 9,Wifi分析仪(无线信号检测)
  12. 16进制颜色透明度对照表
  13. ios降级鸿蒙,iOS 降级 13.3 系统方法,你成功了没
  14. stroj uplink
  15. 计算机网络 有效数据率,在计算机网络中,表征数据传输有效性的指标是( ) A.误码率 B.频带利用率 C.信道容量 D.传输速率...
  16. 「积木库」来了,做网站像搭积木一样简单
  17. python 杀死线程_如何杀死正在运行的线程
  18. Vue 3中令人激动的新功能:Fragment+Suspense+多v-model
  19. AWS和Azure的区域
  20. Maven详解之仓库------本地仓库、远程仓库

热门文章

  1. 怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...
  2. python基础(17)之 JSON
  3. python arcgis批量绘图_ARCGIS中Python实现批量裁剪
  4. 数据结构-链表4-企业链表
  5. 测试管理 | 基于风险的测试
  6. 【Python】logging内置模块基本使用
  7. python中pip已经安装好第三方库,但在pycharm中import时还是标红
  8. plsqldevelop安装教程
  9. sublime写网页代码,里面的中文字符会出现乱码
  10. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 基于数据库资源的多语言实现...