前一篇文章中说到,启动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相关推荐

  1. ZooKeeper启动过程

    ZooKeeper启动过程 1.如何启动 zkServer.sh[Linux]或 zkServer.cmd[Windows] 以zkServer.cmd为例(zkServer.sh中内容太多): 可以 ...

  2. zookeeper源码分析之一服务端启动过程

    zookeeper简介 zookeeper是为分布式应用提供分布式协作服务的开源软件.它提供了一组简单的原子操作,分布式应用可以基于这些原子操作来实现更高层次的同步服务,配置维护,组管理和命名.zoo ...

  3. 一次zookeeper启动失败的解决过程

    大数据平台:MRS 8.1.2.2 最近集群出现了问题,zookeeper组件常常自动恢复,且造成了hive.hbase等组件在zookeeper上注册失败. 通过观察zookeeper日志,发现大量 ...

  4. 启动zookeeper_Zookeeper原理篇-Zookeeper启动流程分析

    前言 上篇我们通过了解Paoxs算法开始,到Zab协议的两大特性:崩溃恢复和消息广播,学习了Zookeeper是如何通过Zab协议实现高可用,本篇开始我们来学习Zookeeper的启动流程 单机模式启 ...

  5. Zookeeper启动流程浅析

    文章目录 前言 一.启动 二.服务端启动流程 1.zkServer.cmd脚本源码 2.QuorumPeerMain 3.runFromConfig集群启动 4.QuorumPeer run方法 选举 ...

  6. Nimbus三Storm源码分析--Nimbus启动过程

    Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus"来启动 看下源码, 此处和上面client不同, jvmtype=" ...

  7. Windows下Zookeeper启动zkServer.cmd闪退问题的解决方案

    本人今天在使用RPC的过程中使用Zookeeper作为中间节点服务器.在windows中启动Zookeeper 在windows启动Zookeeper双击zkServer.cmd(但是需要保证安装了j ...

  8. Zookeeper启动和Leader选举机制

    Zookeeper启动流程 zookeeper服务器有4个状态: LOOKING:寻找Leader FOLLOWING:作为Follower LEADING:作为Leader OBSERVING:作为 ...

  9. Zookeeper启动成功后拒绝连接的解决方案

    zookeeper启动成功后zkServer.sh status出错 一.问题出现情形 运行zookeeperd后显示启动成功:JMX enabled by default Using config: ...

最新文章

  1. function在php中,function
  2. Android应用内展示word、excel、pdf、ppt等文件
  3. 社会主义基本经济规律是经济效益规律
  4. C#Redis集合set
  5. 中望cad2018中文版
  6. 网络体系结构(OSI模型和TCP/IP协议 功能)
  7. find命令 -- 之查找指定时间内修改过的文件
  8. 详解varint编码原理
  9. win10+cuda10.0.130+cudnn7.5.1+tensorflow-gpu 1.13.1+anaconda3+keras+pycharm2018
  10. IOS中,在两个ViewController之间传值
  11. 微积分基本概念相关证明 —— 导数与极限(洛必达法则)
  12. VC++:如何将程序最小化到托盘 [转]
  13. Linux shell 数组
  14. 魔兽名字显示服务器,魔兽世界怀旧服服务器名称
  15. 分辨率PPI与DPI(转)
  16. 数据表为什么又叫透明表?
  17. C++中二维数组的动态创建于处理(zzl
  18. 移动端使用fiddler抓包步骤
  19. Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
  20. Oracle内存结构:SGA PGA UGA

热门文章

  1. [原创]ActionScript3游戏中的图像编程(连载五)
  2. 在论坛中出现的各种疑难问题:日志收缩问题
  3. 2013搜狗校园招聘笔试题
  4. windows下命令行修改系统时间;修改系统时间的软件
  5. 论中国传统辩证推理科学理论范式(ZZ)
  6. matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc
  7. getopt在Python中的使用
  8. 最健康的睡眠时间究竟是多少?
  9. php队列失败是指什么,队列是什么意思
  10. ssm异常捕获和处理