研究Zookeeper的原理(二)
阅读声明:以下内容是结合网上材料及工作内容所写的个人理解,如有不当,欢迎大家指正~~~谢谢啦
一、ZooKeeper的选举机制、FailOver机制
我们知道ZooKeeper在分布式环境中协调服务,如果宕机,那么整体的协调服务失效,所以单台ZooKeeper存在单点故障问题,由此我们引入ZooKeeper的集群模式,搭建环境在博主的另一篇博文,谢谢大家。
选举机制:一句话,选出ZooKeeper集群中的领导者Leader。
假如当前有5台ZooKeeper服务启动,如下图所示。
ZooKeeper的选举机制有两个阶段:
①数据恢复阶段
在该阶段,当每台ZooKeeper启动时,会去持久化目录中寻找自身所拥有的最大事务Id。
事务Id:每发生一次事务操作(除了读操作以外),ZooKeeper集群都会为这个事务分配一个全局递增事务id,每个ZooKeeper之所以找到自身所拥有的最大事务id,是因为事务id越大,事务越新
②选举阶段
每个ZooKeeper会提交选举协议信息如下:
1)自身拥有的最大事务id
2)自身的选举Id(server.id)
3)逻辑时钟值,作用是确保每台zk服务器在同一个选举轮次中
4)自身的服务器状态
*:Looking 选举状态
*:Leader 领导状态
*:Follower 从属状态
*:Observer 观察者状态
③ZooKeeper的PK原则(必须满足过半性原则)
1.优先比较最大事务id,谁大谁当leader
2.如果最大事务id相同,比较选举id,谁大谁当leader
例如:
③FailOver机制
当集群中的Leader宕机后,剩余节点Follower会选举出新的Leader
⑤过半性
ZooKeeper有过半性存活的特性,即集群中节点数量必须超过半数以上,才能正常提供服务和选举。
另外集群数量最好以奇数为准,否则可能出现“脑裂”。
二、ZAB协议与PAXOS算法
这里暂时还在研究中,后续会补充。
研究Zookeeper的原理(二)的更多相关文章
- 研究Zookeeper的原理(一)
阅读声明:以下内容是结合网上材料所写个人理解,如有不当,欢迎大家指正~~~谢谢 一.Zookeeper介绍 zookeeper,见名知意嘛,zoo动物园,keeper保持者.管理员,结合起来就是动物管 ...
- Zookeeper工作原理二
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出错的关键服务 ...
- Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管 ...
- zookeeper选举原理
zookeeper的领导者选举和原子广播 目录: 1.工作原理概述 2.Fast Leader选举算法(领导者选举) 3.Leader与Follower同步数据(原子广播) ...
- word2vec原理(二) 基于Hierarchical Softmax的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- 【转载】深入研究Windows内部原理绝对经典的资料
原文:深入研究Windows内部原理绝对经典的资料 另一篇资料:深入研究Windows内部原理系列 (为了方便大家下,我打包了放在一下地址: 1-6:http://download.csdn.net/ ...
- ZooKeeper的原理(转)
一.ZooKeeper的角色 领导者(Leader),负责进行投票的发起和决议,更新系统状态. 学习者(Learner),包括跟随者(Follower)和观察者(Observer),Follower用 ...
- zookeeper工作原理、安装配置、工具命令简介
1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...
- Zookeeper 3、Zookeeper工作原理(详细)
1.Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新系统状态 » 学习者(learner),包括跟随者(follower)和观察者(observer),follow ...
随机推荐
- 大数据-hdfs技术
hadoop 理论基础:GFS----HDFS:MapReduce---MapReduce:BigTable----HBase 项目网址:http://hadoop.apache.org/ 下载路径: ...
- cef源码分析之cefsimple
下面是cefsimple的入口代码,主要分成两个部分 // Entry point function for all processes. int APIENTRY wWinMain(HINSTANC ...
- 简单实现一个button控制两种状态
<button class="btn a-bgcolor" data-toggle="tooltip" data-placement="left ...
- GIL/Copy/私有/面向对象
1. GIL Python语言和GIL没有关系.仅仅是由于历史原因在Cpython虚拟机(解释器),难以移除GIL. GIL:全局解释器锁.每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个 ...
- Java查询数据库
创建数据库 创建 user 数据库 创建 teacher 数据库 teacher表的user_id列与user表的id列建立一对多连接,user_id作为外键. Java编程查询数据库 向user数据 ...
- maven设置指定jdk版本
今天心血来潮准备折腾一下jeecg,去下载了一个maven版本的项目,既然下载了maven版的,当然就要配置好maven环境了. 因为之前简单学习过maven,当时使用的版本是3.3.9的,但是今天在 ...
- 吴裕雄 python 机器学习——数据预处理嵌入式特征选择
import numpy as np import matplotlib.pyplot as plt from sklearn.svm import LinearSVC from sklearn.li ...
- Python(三)enumerate函数
原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...
- 【JavaScript基础#1】
" 目录 #. 概述 1. ECMAScript与JavaScript的关系 2. ECMAScript版本历史 3. 简单总结 #. 用法 1. 引入方式 2. 规范 3. 变量声明 ...
- VS2017中使用C++语言编写delay函数实现延迟
秒级别的延时 //定义函数 void delay(int sec){ time_t start_time, cur_time; // 变量声明 time(&start_time); do { ...