Zookeeper集群角色分配原理

ZK内部存在Leader和Follower两个角色,那么这两种角色是怎样划分呢?或者说是怎么样被选举出来呢?以下将详细介绍ZK内部的选举机制。
ZK是通过内部的选举算法来选出Leader。(服务器需要配置对应的ID和文件)如下图所示:
这里写图片描述

第一种情况:集群是全新的集群。

以一个简单的例子来说明整个选举的过程.
假设有五台服务器组成的zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的.假设这些服务器依序启动,来看看会发生什么:
1) 服务器1启动,此时只有它一台服务器启动了,它发出去的报没有任何响应,所以它的选举状态一直是LOOKING状态
2) 服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1,2还是继续保持LOOKING状态.
3) 服务器3启动,根据前面的理论分析,服务器3成为服务器1,2,3中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的leader.
4) 服务器4启动,根据前面的分析,理论上服务器4应该是服务器1,2,3,4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了.
5) 服务器5启动,同4一样,当小弟.

第二种情况:非全新集群的选举机制(数据恢复)

那么,初始化的时候,是按照上述的说明进行选举的,但是当zookeeper运行了一段时间之后,有机器down掉,重新选举时,选举过程就相对复杂了。
需要加入数据id、leader id和逻辑时钟。
数据id:数据新的id就大,数据每次更新都会更新id。
Leader id:就是我们配置的myid中的值,每个机器一个。
逻辑时钟:这个值从0开始递增,每次选举对应一个值,也就是说: 如果在同一次选举中,那么这个值应该是一致的 ; 逻辑时钟值越大,说明这一次选举leader的进程更新.
选举的标准就变成:
1、逻辑时钟小的选举结果被忽略,重新投票
2、统一逻辑时钟后,数据id大的胜出
3、数据id相同的情况下,leader id大的胜出
根据这个规则选出leader。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2016大数据发展7大趋势

1.算法(Algorithms)的崛起 大数据已过时,算法正当道。数据已经成为一种商品,每个组织都能够收集和存储大量的数据。分析大数据也不再那么引人注目了。每个组织都可以聘用或培训大数据分析人员来了解数据模式。 2016年,…

请编写一个方法,实现整数的乘法、减法和除法运算(这里的除指整除)。只允许使用加号。

方法思路 乘法:a*b就等于b个a相加。题目也说了不考虑性能。 减法:a-b就等于a(-1)*b;就等于a加上b的相反数,得到b的相反数就解决了。 除法:a/bn;就是说有n个b相加小于等于a;可以采用b一直加,直到大于a结束。…

MySQL数据库重点概要总结

目录前言:1、结构化查询语言(Structured Query Language)简称SQL。2、基本SELECT语句语法3、多表链接4、笛卡尔积5、ANSI SQL ANSI SQL:1999标准的连接语法6、单行函数和分组函数的区别:7、分组函数8、SQL语句的执行顺序:9、子查询…

《MySQL排错指南》——1.9 许可问题

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.9节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.9 许可问题 MySQL有复杂的…

毕业半年,码过5个城市

时间飞逝,半年前我还在想我的毕业设计要怎么做,还在担心自己的答辩能够拿多少分,而此刻我正在成都写我喜欢的代码,过着我想过的生活。毕业半年,码过5个城市,从厦门->太原-》合肥-》北京-》成都。2016是我…

python ---单例(Singleton)

单例(Singleton) 单例是一种 设计模式 ,应用该模式的类只会生成一个实例。 单例模式保证了在程序的不同位置都 可以且仅可以取到同一个对象实例 :如果实例不存在,会创建一个实例;如果已存在就会返回这个实例…

Oracle-11g-R2 RAC 环境下 GPnP Profile 文件

GPnP Profile 文件的作用&#xff1a; GPnP Profile 文件是一个保存于$GRID_HOME/gpnp/<hostname>/profiles/peer目录下的小型 XML 文件&#xff0c;名称为 profile.xml。其用于正确描述 RAC 每个节点的全局特性。每个节点上都会保存一个本地的 GPnP Profile&#xff0c;…

《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位

本节书摘来自异步社区《Pro/ENGINEER野火版5.0从入门到精通》一书中的第2章&#xff0c;第2.5节&#xff0c;作者 暴风创新科技&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 设置零件单位 由于不同国家单位制的不相同&#xff0c;在企业间合作或沟通…

元类被称为 Python 中的“深奥的巫术“

元类被称为 Python 中的“深奥的巫术”。尽管你需要用到它的地方极少&#xff08;除非你基于 zope 编程&#xff09;&#xff0c;可事实上它的基础理论其实令人惊讶地易懂。 一切皆对象 一切都有类型 “class”和“type”之间本质上并无不同 类也是对象 它们的类型是 type 以…

机器学习之必知开源数据集

之前看到的不错的文章&#xff0c;玩机器学习数据是关键&#xff0c;有了这些东西&#xff0c;你就不必再为没有数据而苦恼。 转自&#xff1a;https://www.toutiao.com/i6432197108580745730/ 目录UCIGoogleTrendsKaggleAWS公用数据集ImagenetMINIST/r/数据集其他数据集 目录…

PHP中header函数的用法及其注意重点是什么呢

1、使用header函数进行跳转页面&#xff1b; header(Location:.$url);  其中$url就是将要跳转的url了。 这种用法的注意事项有以下几点&#xff1a; •Location和":"之间不能有空格&#xff0c;否则会出现错误&#xff08;注释&#xff1a;我刚测试了&#xff0c;在…

《计算机科学概论》—第3章3.3节文本表示法

本节书摘来自华章出版社《计算机科学概论》一书中的第3章&#xff0c;第3.3节文本表示法&#xff0c;作者&#xff3b;美]内尔黛尔&#xff08;Nell Dale&#xff09;约翰路易斯&#xff08;John Lewis&#xff09;&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众…

习题

# -*- coding: utf-8 -*- # Time : 2019/08/08 17:38 # Author : Liu # File : zuoye.py# 一、 # 将此功能定义成一个函数&#xff0c; # 电脑随机生成1~100随机数&#xff0c;用户输入一个数字&#xff0c;电脑提示用户大或者小&#xff0c;猜错&#xff0c;继续提示&a…

经典技术面试指南

目录计算机基础知识数据结构算法操作系统计算机网络数据库海量数据处理C语言基础Java基础Java高级Java Web设计模式知识的综合能力工具使用项目相关技术热情表达能力思考方式其他推荐阅读 目录 最近看到一份不错的面试总结&#xff0c;也是每位程序猿都应该掌握的基础&#x…

Linux 共享内存详解一

共享内存段被多个进程附加的时候&#xff0c;如果不是所有进程都已经调用shmdt&#xff0c;那么删除该共享内存段时&#xff0c;会出现一个临时的不完整的共享内存段&#xff08;key值是0&#xff09;&#xff0c;无法彻底删除。只有当所有进程都调用shmdt&#xff0c;这个临时…

python 魔术方法

python 魔术方法 常用魔术方法 魔术方法就是一个类的特殊方法&#xff0c;和普通方法唯一的不同时&#xff0c;普通方法需要调用&#xff01;而魔术方法由系统自动调用。 1.__init__ 初始化魔术方法 触发时机&#xff1a;初始化对象时触发&#xff08;不是实例化触发&#xf…

Storm ack和fail机制再论

之前对这个的理解有些问题&#xff0c;今天用到有仔细梳理了一遍&#xff0c;记录一下 首先开启storm tracker机制的前提是&#xff0c; 1. 在spout emit tuple的时候&#xff0c;要加上第3个参数messageid 2. 在配置中acker数目至少为1 3. 在bolt emit的时候&#xff0c;要加…

Storm编程模型总结

目录前言&#xff1a;1、Storm编程模型2、对应的的WordCount案例总结&#xff1a; 目录 前言&#xff1a; 对于Storm的编程模型有必要做一个详细的介绍&#xff08;配合WC案例来介绍&#xff09; 1、Storm编程模型 上图中组件的解释&#xff1a; DataSource&#xff1a;外…

13_观察者模式

【观察者模式】 也叫作发布/订阅模式&#xff0c;使用较为频繁。 定义了对象间一种一对多的依赖关系&#xff0c;当一个对象改变状态时&#xff0c;则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成&#xff1a; * Subject 被观察者 定义被观察者…

【python】内建异常类的层次

内建异常类的层次 BaseException-- SystemExit-- KeyboardInterrupt-- GeneratorExit-- Exception-- StopIteration-- StopAsyncIteration-- ArithmeticError| -- FloatingPointError| -- OverflowError| -- ZeroDivisionError-- AssertionError-- AttributeError-- …