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

一、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. 大数据-hdfs技术

    hadoop 理论基础:GFS----HDFS:MapReduce---MapReduce:BigTable----HBase 项目网址:http://hadoop.apache.org/ 下载路径: ...

  2. cef源码分析之cefsimple

    下面是cefsimple的入口代码,主要分成两个部分 // Entry point function for all processes. int APIENTRY wWinMain(HINSTANC ...

  3. 简单实现一个button控制两种状态

    <button class="btn a-bgcolor" data-toggle="tooltip" data-placement="left ...

  4. GIL/Copy/私有/面向对象

    1. GIL Python语言和GIL没有关系.仅仅是由于历史原因在Cpython虚拟机(解释器),难以移除GIL. GIL:全局解释器锁.每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个 ...

  5. Java查询数据库

    创建数据库 创建 user 数据库 创建 teacher 数据库 teacher表的user_id列与user表的id列建立一对多连接,user_id作为外键. Java编程查询数据库 向user数据 ...

  6. maven设置指定jdk版本

    今天心血来潮准备折腾一下jeecg,去下载了一个maven版本的项目,既然下载了maven版的,当然就要配置好maven环境了. 因为之前简单学习过maven,当时使用的版本是3.3.9的,但是今天在 ...

  7. 吴裕雄 python 机器学习——数据预处理嵌入式特征选择

    import numpy as np import matplotlib.pyplot as plt from sklearn.svm import LinearSVC from sklearn.li ...

  8. Python(三)enumerate函数

    原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...

  9. 【JavaScript基础#1】

    "   目录 #. 概述 1. ECMAScript与JavaScript的关系 2. ECMAScript版本历史 3. 简单总结 #. 用法 1. 引入方式 2. 规范 3. 变量声明 ...

  10. VS2017中使用C++语言编写delay函数实现延迟

    秒级别的延时 //定义函数 void delay(int sec){ time_t start_time, cur_time; // 变量声明 time(&start_time); do { ...