ZooKeeper的实践(一):ZooKeeper仲裁机制
ZooKeeper仲裁机制
- 概述
- 仲裁
- 深入分析节点的数量问题
- 总结
概述
zk服务器运行模式分成两种:
- 独立模式
- 仲裁模式
如果是用独立模式(standalone),则zk的状态是无法进行复制的,这才生产环境中,会造成一定的风险,事实上,我们确实有这种情况存在,这源于初期架构的思考和公司经济的问题。而在仲裁(quorun)模式下,则是我们当前流行的分布式集群,我们称之为集合。是用仲裁,不仅可以进行状态的复制,也可以同时服务于客户端的请求。
仲裁
采用仲裁方式的复制集群中,由于具备高可用的镜像复写功能,如果客户端需要等待每个服务器完成数据的螺钉后在继续,则延时的问题会变得比较突出,要知道,延时,在大流量的访问中,是不可接收的,但不代表能消灭延时。
此时,在ZK的设计思路中,为了规避这个问题,则衍生除了法定人数的思想,即我们只需要保证我们的集群中,由若干算法模式下实现的人数能完成对应的信息落地之后,则认为客户端可以继续下一波的操作,而不是等到所有集群完全落实才继续下去。例如,我们由5个zk服务器,而法定人数为3人,则我们只需要确保其中的3台服务器保存了对应的数据,客户端就可以继续,而其他两个服务器在正常的中状态下,最终也是能获取到数据,并保存下来
这就是为什么我们要求zk的部署,起码是奇数台的其中一个原因。
请注意,假设我们由f个服务器,则允许其崩溃的数据必须小于服务器数量的一半,即5台,只能允许2台崩溃。
深入分析节点的数量问题
查阅了一些书籍和文档,其实并没有过多的阐述为什么,服务器的数量必须在奇数台或者在偶数台的情况下,为什么不行,事实上并不是认为偶数台不允许部署,而是,作为偶数台的部署,风险性会更大而已
为了避免脑裂,我们在上述的例子中,规定法定人数为3,实际上是至少为3,即集合中的5个服务器的多数原则,为了正常工作,集合中则必须至少有3台服务器是能正常运营的。为了能确保一个请求对状态的更新是否成功,则必须保证以上的3台能确认已经完成了数据复制操作。一次,如果要保证集合可以正常工作,对任何更新操作的完成,我们只好要有1个有效的服务器来保存更新的副本(至少在一个节点上合理的法定人数存在交集)。
假设集合中只有4台服务器,那么多数原则对应的的数量为3个服务器,但是,这集群中只允许1个服务器崩溃,因为两个服务器崩溃就会导致系统丧失多数原则的状态,因此,在4个服务器的情况下,我们仅能允许一个服务器崩溃,而法定人数现在却更大,意味着,对每个请求,我们需要更多的确认操作,底线是,我们需要争取奇数个服务器。
总结
不管出于何种原因,由于zk的重要性,在项目中,一旦使用了zk,建议是用仲裁的机制进行运作,单点故障的情形,往往带来的业务的深度影响。
ZooKeeper的实践(一):ZooKeeper仲裁机制相关推荐
- Ⅵ:zookeeper的Watcher事件监听机制
2021最新zookeeper系列 ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤ ...
- ZooKeeper Dynamic Reconfiguration(ZooKeeper 动态配置重构)
Overview 概览 Prior to the 3.5.0 release, the membership and all other configuration parameters of Zoo ...
- ZooKeeper学习第一期---Zookeeper简单介绍(转)
转载来源:https://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技 ...
- Zookeeper概念学习系列之zookeeper是什么?
1. Zookeeper是Hadoop的分布式协调服务. 2. 分布式应用程序可以基于它,来实现同步服务,配置维护和命名服务等. 3. zookeeper可以保证数据在zookeeper集群之间的数据 ...
- Zookeeper的安装部署,zookeeper参数配置说明,集群搭建,查看集群状态
1.Zookeeper的安装部署 7.1 Zookeeper工作机制 7.1.1.Zookeeper集群角色 Zookeeper集群的角色: Leader 和 follower (Observer ...
- zookeeper专题:使用zookeeper实现分布式锁
文章目录 1. zookeeper为什么可以做分布式锁 ? 2. zookeeper实现非公平锁 3. zookeeper实现公平锁 4. zookeeper实现读写锁(共享锁) 5. Curator ...
- zookeeper专题:使用zookeeper客户端实现动态监听节点并获取数据
文章目录 1. zookeeper原生客户端 2. Curator客户端 1. zookeeper原生客户端 zookeeper原生客户端就是zookeeper官方自带的客户端,作为代码与zk服务器交 ...
- 【转】ZooKeeper学习第二期--Zookeeper命令操作
一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...
- ZooKeeper学习第一期---Zookeeper简单介绍
引用:http://www.cnblogs.com/sunddenly/p/4033574.html 加入了一部分个人理解 一.传统分布式系统(主备) 如图1.1备节点定时ping主节点,返回Ack. ...
最新文章
- 基于CkEditor实现.net在线开发之路(1)
- 我遇到的Quartus II警告及原因——持续更新
- eclipse在ubuntu13.04下崩溃crash
- QWidget::size()和QResizeEvent::size()不一定相同!
- 由windows/linux转向使用Mac的适应期教程
- 比尔盖茨:反垄断案让我分心,不然微软定能打败安卓
- 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台
- 雪色光晕(计算几何+暴力)
- ActivityMQ介绍与使用
- java android实习报告,java和安卓实习报告.pdf
- matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
- Typo Forum
- 机动车c1科三考试语言灯光,史上最全科目三灯光模拟图解
- EMAC和GMAC区别
- SSS1540TypeC转3.5mm线控耳机方案(带按键)参考电路图
- 别问上海配眼镜去哪里好,这几家上海老店你必须知晓!
- python统计文件中每个单词出现的次数_python统计文本中每个单词出现的次数
- 云计算事业部高性能集群使用手册
- 10个你必须知道的实时图片搜索引擎
- 人工智能可以阻止基于物联网的 DDoS 攻击——研究
热门文章
- 酷贝网:站在淘宝肩上收钱
- php抓取新浪微博数据抓取,php利用curl抓取新浪微博内容实例
- Android5g手机排名,2月Android手机好评榜:5G手机将成主流
- 简单的Linux命令-1
- 国内Linux shell,Bash shell 的诞生 | Linux 中国
- error: could not create '/usr/local/lib/python2.7/dist-packages/virtualenv_support': Permission deni
- [BJDCTF 2nd] Y1nglish-y1ng
- 计算机电源更改,win7更改电源设置在哪?
- Python 实现 popocat 回收站图标更换
- 判断APP用户手机是否开启了定位服务