1、Observer角色如何配置?

Zookeeper集群中的中的Leader和Follower角色是由服务器启动时期的Leader选举产生的,Observer不参与选举,此角色的节点需要在配置文件zoo.cfg中配置。示例如下:

server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
server.4=server4:2888:3888
server.5=server5:2888:3888:observer

2、Zookeeper集群一定要是奇数台服务器吗?

 不一定,偶数台也可以。选择奇数台原因如下:

原因一:容错性

Leader选举算法采用了Paxos协议,其核心就是半数通过。

 对于奇数台服务器,比如3台,2 > 3/2 集群最多允许一台故障;

 对于偶数台服务器,比如4台,2 !> 4/2集群最多允许一台故障;

 由此可见,3、4台的容灾能力是一样的,在性能因素非系统瓶颈的情况下,没必要多增加一台,生产一般使用3/5/7。

原因一:防止脑裂

 对于奇数台服务器,比如5台,当集群出现脑裂时,可能情况为:[1,4]、[2,3]。无论何种情况,都存在能重新进行Leader选举的一方。

 对于偶数台服务器,比如6台,当集群出现脑裂时,可能情况为:[1,5]、[2,4]、[3,3]。当因网络连通问题出现[3,3]这种情况时,即使6台服务器均可正常工作,也无法进行Leader选举。

3、为什么投票要坚持半数原则?

投票半数有两种情况:选举Leader和更新数据。

3.1、对于选举Leader的投票

在脑裂的情况下,未过半数投票即可成为Leader,则集群中会出现多个Leader的情况。

3.2、对于更新数据的投票

假设集群中有三台服务器,节点数据更新情况如下:



情况一:投票未过半未成功。无论哪个节点,都不会影响集群数据一致性。

情况二:投票未过半成功。当server(1)节点故障时,将出现丢失数据的情况。

情况三:投票过半且成功。无论哪个节点故障,集群中都存在节点记录了最新提交的数据。

情况四:同情况三。

 说白了,就是当出现故障时,只要集群能正常向外提供服务(过半数节点未故障),在正常工作的节点中,一定有一个节点上存着本集群数据一致性最后的希望(最新的成功提交的事务)而存有此希望的节点也将成为Leader选举中的种子选手。

 说明:集群中同时故障两个节点的情况不予考虑,因为此时集群将不再提供服务,也就不存在访问到脏数据的情况了。

4、keepalived和zookeeper对比

  • 作者:
    DeepInThought


    出处:
    https://www.cnblogs.com/DeepInThought


    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 【0】Zookeeper Q&A的更多相关文章

    1. 【CQOI2017】小Q的表格

      [CQOI2017]小Q的表格 稍加推导就会发现\(f(a,b)=a\cdot b\cdot h(gcd(a,b))\). 初始时\(h(n)=1\). 询问前\(k\)行\(k\)列时我们就反演: ...

    2. 【入门】ZooKeeper 相关概念总结

      1. 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢? 拿我自 ...

    3. 【实战】ZooKeeper 实战

      1. 前言 这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java客户端 Curator 的基本使用.介绍到的内容都是最基本的操作,能满足日常工作的基本需要. 如 ...

    4. 【进阶】ZooKeeper 相关概念总结

      1. 开卷有益 学习是一种习惯,只有把这种习惯保持下来,每天不学习一点就感觉浑身不自在,达到这样的境界,那么你成为大佬也就不远了买,正如我们标题所写的"开卷有益".人生匆匆,要想过 ...

    5. 【目录】Zookeeper目录

      Zookeeper的目录整理如下 1. [分布式]分布式架构 2. [分布式]一致性协议 3. [分布式]Chubby与Paxos 4. [分布式]Zookeeper与Paxos 5. [分布式]Zo ...

    6. 【转】zookeeper之 zkServer.sh命令、zkCli.sh命令、四字命令

      [FROM]https://www.cnblogs.com/andy6/p/7674028.html 一.zkServer.sh 1.查看 zkServer.sh 帮助信息 [root@bigdata ...

    7. 【Hadoop】ZooKeeper组件

      目录 一.配置时间同步 二.部署zookeeper(master节点) 1.使用xftp上传软件包至~ 2.解压安装包 3.创建 data 和 logs 文件夹 4.写入该节点的标识编号 5.修改配置 ...

    8. 【转】Zookeeper学习---zookeeper 选举机制介绍

      [原文]https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的 ...

    9. 【0】如何在电脑中使用多个python版本【python虚拟环境配置】

      问题: 该篇解决如何在同一个操作系统中可以便捷诶的使用多个python版本.有时候我们在开发的时候会同时需要python2 和python3环境,或者是需要不同的版本,都可以尽心如下配置. (1)在c ...

    随机推荐

    1. 一百零七:CMS系统之权限和角色模型定义

      模型与权限关系映射表 class CMSPersmission: """ 权限管理映射 """ # 255的二进制方式来表示 1111 11 ...

    2. Fluent操作流程&&udf编译

      Fluent 操作流程 1, 读网格模型 2, Scale修改单位 3, Check检查网格是否符合要求,最小体积不能出现负数 4, Time 选择瞬态,重力设置 5, Models-Multipha ...

    3. 等待数据库引擎恢复句柄失败 SqlServer2012安装时报错 Win10

      上周,在一批Win10系统电脑上安装SqlServer 2012时,屡次发生报错,安装失败,显示的失败信息是:等待数据库引擎恢复句柄失败 如下图所示: 面对这样的错误,我的第一反应是百度,在百度上找了 ...

    4. 用事件队列来处理pixi中的场景元素入场

      在pixi中,添加一个精灵元素,你可能需要,先将贴图load进来,然后才能添加到场景中去,所以一般会这么操作 Loader.add("tree","static/imag ...

    5. python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized

      有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...

    6. #内存不够,swap来凑# Linux上创建SWAP文件/分区

      转自:https://www.vmvps.com/how-to-create-a-swap-file-on-the-linux-os.html 很久很久以前,电脑的内存是个珍贵东西,于是乎就有了swa ...

    7. Centos7 安装Jenkins (rpm 方式)

      首先说明本教程基于jenkins 2.183,但是其他版本基本差不多,主要说一下其中比较坑的几点,做一个总结. 1.rpm 包的下载 从官网上下载rpm的速度简直让人不能忍受,所以千万不要去官网下载. ...

    8. 【LOJ】#2985. 「WC2019」I 君的商店

      LOJ#2985. 「WC2019」I 君的商店 一道很神仙的题啊QAQ 居然是智商题--不是乱搞或者是大数据 我们可以用2N问出一个最大值是1 然后对于任意两个值\(x + y\)和\(a\)比较 ...

    9. spring-boot 使用 jackson 出错(五)

      环境 jdk 6 tomcat 6.0.53 sts 4.4.2 maven 3.2.5 原因 spring boot 1.5.22.RELEASE 默认使用的 jackson 的版本是 2.8.x, ...

    10. MySql 枚举和集合 详解

      枚举与集合 枚举类型,enum 每个枚举值均有一个索引值: 在列说明中列表值所允许的成员值被从 1 开始编号. 一般来说就是单选,在定义枚举的时候列出所有的可能性: 代码如下 1. create ta ...