研究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 ...
随机推荐
- 在springboot项目中引入quartz任务调度器。
quartz是一个非常强大的任务调度器.我们可能使用它来管理我们的项目,常见的是做业绩统计等等.当然它的功能远不止这些.我们在这里不介绍quartz的原理,下面讲讲如何在springboot中使用qu ...
- 可以使用的一些API(转存)
聚合数据 juhe.com 转存的格式不如原文的好看,可以直接访问原文 https://www.jianshu.com/p/9a0acf69b789 api接口应该会越来越火,上个全的,楼主自己找找吧 ...
- ubuntu16.04无法打开终端
最近将自带的python3.5更改为默认的python3.6,所以就出现了终端打不开的情况,以下是我的解决办法: 首先,按ctrl+alt+F1进入命令行模式,也就是无图形截面,这时候会让你输入用户名 ...
- TCP/IP详解,卷1:协议--1
引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P 协议 族允许它们互相进行通信.这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想. T C P ...
- SQL Server 函数大全
本文链接:https://blog.csdn.net/qq_15028299/article/details/81330854SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合.htt ...
- bugku 多种方法解决
首先打开链接发现是一个exe文件 实在是想不出办法了 只能回去看提示 说会有一张图片 不知道怎么就打开了hxd 然后拖进去 发现了一串 用图片base64加密的码 然后在网页中找到 解码 工具 htt ...
- 【代码总结】Struts2 拦截器的处理机制
一.什么是拦截器 拦截器是一个类,可以在Action被调用之前和之后执行代码,通常框架的很多功能都是拦截器实现的,如接收输入的参数.数据验证.文件上传等 二.工作方式 做一些Action执行前的预处理 ...
- navicat导入.csv表格
我本地的navicat不知道啥情况,导入不了表格,然后把表格转为.csv的,然后导入就好了 1.表格另存为.csv格式的 2.打开Navicat,选择要导入的表,然后右键->导入向导,选择.cs ...
- Java - Java 命令行简介: 选项, 属性, 参数
概述 简单介绍一下 java 命令行相关的参数及属性 1. java 命令行 基本 命令 > java <mainClass> 描述 执行 Java 类 需要准备好编译完成的 mai ...
- Python 摄像头 树莓派 USB mjpb
import cv2 import urllib.request import numpy as np import sys host = "192.168.1.109:8080" ...