【0】Zookeeper QA
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对比
出处: https://www.cnblogs.com/DeepInThought
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载于:https://www.cnblogs.com/DeepInThought/p/11037449.html
【0】Zookeeper QA相关推荐
- 钉钉工作流报错:50001流程处理异常:审批系统错误,原因为【{0}】
目录 完整报错如下 操作过程如下 猜测原因 咨询官方原因 完整报错如下 {"code": 50001,"msg": "流程处理异常:审批系统错误,原因 ...
- 【分布式】ZooKeeper论文总结
文章目录 1. ZK是什么 1.1 简介 1.2 作用 1.3 应用场景 2. ZK的关键技术 2.1 共识算法和一致性 2.1.1 强一致性 2.1.1.1 顺序一致性 2.1.1.2 线性一致性 ...
- 【Flink】Zookeeper connection loss leads to Flink job restart
1.概述 转载:添Zookeeper connection loss leads to Flink job restart 看这个之前可以先看看:[Flink]Flink 报错 ResourceMan ...
- PlutoSDR学习指南【0】PlutoSDR介绍
[注]前几篇文章介绍了PlutoSDR的简单实用,这一篇文章在补一个对PlutoSDR的介绍,本应当放在第一篇推文,这篇文章就是第0篇吧! ADI Pluto是ADI公司推出的主动学习模块(Activ ...
- 树莓派ZeroW学习笔记【0】wiringPi安装和测试
一.wiringPi简介 [1]wiringPi是仅应用于树莓派平台的GPIO控制库函数,遵循GNU LGPLv3开源协议,并由GIT工具维护,任何人都可以免费使用该软件包.wiringPi使用C或者 ...
- ArcGisPro脚本工具【0】——制作你的第一个脚本工具
本系列以ArcGisPro2.8为例.Pro的脚本采用的python版本是3.X,相比于ArcGis10.X采用的python2.X,有了很大的进步,尤其是对中文字符的支持,可以避免很多奇怪的bug. ...
- 【PEST++】05 QA常见问题释疑
目录 0 PEST++系列文章 1 第一位朋友 ZJ 2 第二位朋友 LGH 3 第三位朋友 XY 0 PEST++系列文章 [PEST++]01 参数优化与灵敏度分析 [PEST++]02 新安江模 ...
- 【I2C】I2C QA
[I2C]在中断函数中能否使用I2C传输?为什么? 不能,多点原因. 1.中断要求尽快处理,否则会影响到其他中断的响应.(I2C和SPI传输过程都比较耗时) 2.I2C传输(I2C_transfer) ...
- 【0】PhotoShop常用快捷键备忘录
[单个英文字母] ⒈[V]:移动工具 ⒉[M]:选择工具 ⒊[W]:快速选择工具 ⒋[C]:裁剪工具 ⒌[]: ⒍[]: ⒎[]: ⒏[]: ⒐[]: ⒑[delete]:删除所选图层 [ctrl+] ...
最新文章
- SAP PM项目导向维护
- 密码技术--椭圆曲线算法EDCSA数字签名及Go语言应用
- buu [AFCTF2018]Morse
- c语音 udp最大长度_c语言udp自定义头文件 网络通信程序
- WPF使用Canvas绘制可变矩形
- 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
- ElementUI+Java实现搜索提示列表
- 第三部分 Calendar函数接口
- vue3.0项目服务器部署
- arm linux samba,嵌入式linux系统教你制作samba服务器
- Nacos 启动报错 Unable to start embedded Tomcat
- C#解析json和xml数据
- 压箱底的Android UI开源库(一)
- python处理excel函数库_Python 操作 Excel 的函数库
- 中国保险业过去五年基础数据分析
- Altium Designer系列:添加泪滴
- vivox70pro怎么拍出好看的月亮
- 海尔为什么要向青年一代提出“修身”解决方案?
- mdx词典包_欧路词典—使用体验
- android 获取年月日
热门文章
- Office web apps 服务器运行一段时间之后CPU就是达到100%
- Intel亚太研发有限公司段建钢:存储市场的那些年
- 小P寻宝记——好基友一起走
- Jumpserver web界面跳板机
- java日志记录的5条规则
- snort 使用mysql的安装
- ural 1353. Milliard Vasya's Function
- python评语生成_电商 Python 生成补单公司需要的评论格式3
- 女生做产品经理好吗_产品经理如何做产品架构设计
- hyperterminal使用教程_如何在Win中安装使用超级终端HyperTerminal.doc