ZooKeeper启动过程2:FastLeaderElection
前一篇文章中说到,启动ZooKeeper集群时,需要分别启动集群中的各个节点,各节点以QuorumPeer的形式启动,最后到达startLeaderElection和lookForLeader。
先说startLeaderElection
首先,初始化节点自身的currentVote【当前投票】为【myid、zxid、currentEpoch】
然后,初始化选举算法createElectionAlgorithm,默认使用FastLeaderElection算法,在这里,启动两个线程WorkerSender、WorkerReceiver,分别用于向其他所有节点发送自己的投票信息、接收并处理其他节点发送给自己的投票信息。
再说lookForLeader
首先,初始化节点自身的逻辑时钟【logicalclock】,同时初始化节点的投票信息:proposedLeader【myid中读取】、proposedZxid【data目录中读取,默认为0】、proposedEpoch【data目录中读取,默认为0】
然后,向集群中所有节点发送投票信息【包括自身】,使用WorkerSender发送,所有节点使用WorkerReceiver接收投票信息,进行后续处理
转自http://blog.csdn.net/xuefeng0707/article/details/40687625
转载于:https://www.cnblogs.com/catWang/p/4120669.html
ZooKeeper启动过程2:FastLeaderElection相关推荐
- ZooKeeper启动过程
ZooKeeper启动过程 1.如何启动 zkServer.sh[Linux]或 zkServer.cmd[Windows] 以zkServer.cmd为例(zkServer.sh中内容太多): 可以 ...
- zookeeper源码分析之一服务端启动过程
zookeeper简介 zookeeper是为分布式应用提供分布式协作服务的开源软件.它提供了一组简单的原子操作,分布式应用可以基于这些原子操作来实现更高层次的同步服务,配置维护,组管理和命名.zoo ...
- 一次zookeeper启动失败的解决过程
大数据平台:MRS 8.1.2.2 最近集群出现了问题,zookeeper组件常常自动恢复,且造成了hive.hbase等组件在zookeeper上注册失败. 通过观察zookeeper日志,发现大量 ...
- 启动zookeeper_Zookeeper原理篇-Zookeeper启动流程分析
前言 上篇我们通过了解Paoxs算法开始,到Zab协议的两大特性:崩溃恢复和消息广播,学习了Zookeeper是如何通过Zab协议实现高可用,本篇开始我们来学习Zookeeper的启动流程 单机模式启 ...
- Zookeeper启动流程浅析
文章目录 前言 一.启动 二.服务端启动流程 1.zkServer.cmd脚本源码 2.QuorumPeerMain 3.runFromConfig集群启动 4.QuorumPeer run方法 选举 ...
- Nimbus三Storm源码分析--Nimbus启动过程
Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus"来启动 看下源码, 此处和上面client不同, jvmtype=" ...
- Windows下Zookeeper启动zkServer.cmd闪退问题的解决方案
本人今天在使用RPC的过程中使用Zookeeper作为中间节点服务器.在windows中启动Zookeeper 在windows启动Zookeeper双击zkServer.cmd(但是需要保证安装了j ...
- Zookeeper启动和Leader选举机制
Zookeeper启动流程 zookeeper服务器有4个状态: LOOKING:寻找Leader FOLLOWING:作为Follower LEADING:作为Leader OBSERVING:作为 ...
- Zookeeper启动成功后拒绝连接的解决方案
zookeeper启动成功后zkServer.sh status出错 一.问题出现情形 运行zookeeperd后显示启动成功:JMX enabled by default Using config: ...
最新文章
- function在php中,function
- Android应用内展示word、excel、pdf、ppt等文件
- 社会主义基本经济规律是经济效益规律
- C#Redis集合set
- 中望cad2018中文版
- 网络体系结构(OSI模型和TCP/IP协议 功能)
- find命令 -- 之查找指定时间内修改过的文件
- 详解varint编码原理
- win10+cuda10.0.130+cudnn7.5.1+tensorflow-gpu 1.13.1+anaconda3+keras+pycharm2018
- IOS中,在两个ViewController之间传值
- 微积分基本概念相关证明 —— 导数与极限(洛必达法则)
- VC++:如何将程序最小化到托盘 [转]
- Linux shell 数组
- 魔兽名字显示服务器,魔兽世界怀旧服服务器名称
- 分辨率PPI与DPI(转)
- 数据表为什么又叫透明表?
- C++中二维数组的动态创建于处理(zzl
- 移动端使用fiddler抓包步骤
- Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
- Oracle内存结构:SGA PGA UGA