阅读声明:以下内容是结合网上材料及工作内容所写的个人理解,如有不当,欢迎大家指正~~~谢谢啦

一、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的原理(二)的更多相关文章

  1. 研究Zookeeper的原理(一)

    阅读声明:以下内容是结合网上材料所写个人理解,如有不当,欢迎大家指正~~~谢谢 一.Zookeeper介绍 zookeeper,见名知意嘛,zoo动物园,keeper保持者.管理员,结合起来就是动物管 ...

  2. Zookeeper工作原理二

    ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出错的关键服务 ...

  3. Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管 ...

  4. zookeeper选举原理

    zookeeper的领导者选举和原子广播   目录:     1.工作原理概述     2.Fast Leader选举算法(领导者选举)     3.Leader与Follower同步数据(原子广播) ...

  5. word2vec原理(二) 基于Hierarchical Softmax的模型

    word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...

  6. 【转载】深入研究Windows内部原理绝对经典的资料

    原文:深入研究Windows内部原理绝对经典的资料 另一篇资料:深入研究Windows内部原理系列 (为了方便大家下,我打包了放在一下地址: 1-6:http://download.csdn.net/ ...

  7. ZooKeeper的原理(转)

    一.ZooKeeper的角色 领导者(Leader),负责进行投票的发起和决议,更新系统状态. 学习者(Learner),包括跟随者(Follower)和观察者(Observer),Follower用 ...

  8. zookeeper工作原理、安装配置、工具命令简介

    1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...

  9. Zookeeper 3、Zookeeper工作原理(详细)

    1.Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新系统状态 » 学习者(learner),包括跟随者(follower)和观察者(observer),follow ...

随机推荐

  1. C语言数据结构——第二章 线性表

    二.线性表 2.1-线性表简介 2.1.1-线性表的定义 线性表是由若干个相同特性的数据元素组成的有限序列.若该线性表不包含任何元素,则称为空表,此时长度为0,当线性表不为空时,表中的元素的个数就是线 ...

  2. easy-rules

    我们在写业务代码经常遇到需要一大堆if/else,会导致代码可读性大大降低,有没有一种方法可以避免代码中出现大量的判断语句呢?答案是用规则引擎,但是传统的规则引擎都比较重,比如开源的Drools,不适 ...

  3. 如何使用 idea提交svn代码

    链接:https://jingyan.baidu.com/article/b2c186c80d81b1c46ff6ff59.html

  4. Dictionary-Guided Editing Networks for Paraphrase Generation解读

    过程:输入->检索->编码->解码 解释:检索:输入一句话x,首先从PPDB中检索出M * 10 个释义对,并排序,记为x的本地字典: 编码:将所有的释义对编码为向量,单字转为字向量 ...

  5. maven中的pom.xml中的scope的作用

    pom.xml配置文件中, <dependency>中的<scope>,它主要管理依赖的生效范围.目前<scope>可以使用5个值: * compile,缺省值,适 ...

  6. mybatis会自动把字段名中的下划线转为驼峰命名法?

    先看一下转化的调用堆栈: 代码如下: 上面代码只是去掉了下划线,并没有首字母小写变大写的代码.再跟进findProperty方法可以找到获取驼峰结果的代码如下: 可以看出通过reflector.fin ...

  7. 设置textarea不可拉伸

    默认情况下,我们将鼠标移动到textarea的右下角时发现文本域是可以通过拖动的方式改变其大小的,这会影响我们原本的页面布局.若想设置其不可拖动,可为其添加如下属性: style="resi ...

  8. Qt: 释放窗口资源

    1. 对于使用指针,使用new创建的窗口,当然可以使用delete显示的释放其占用的资源: Widget *w = new Widget(); delete w;   2. 对于使用指针,使用new创 ...

  9. 喵星之旅-狂奔的兔子-linux安装

    一.前言 本文演示虚拟机安装,和真机区别可能在网卡驱动上有差异. 真机环境:CentOS Linux release 7.6.1810 (Core) 虚拟机(虽然centos系统自带虚拟机软件,但是习 ...

  10. 关于ActiveMq的Exception occurred while processing this request, check the log for more information!问题

    错误原因:jsp渲染的时候报错了.根本原因在于jdk版本和activemq版本的问题. 两种解决方案: 1.把jdk版本改为jdk1.7 2.activeMQ采用5.15,它依赖于jdk1.8