leader选举的源码分析
源码分析,最关键的是要找到一个入口,对于zk的leader选举,并不是由客户端来触发,而是在启动的时候会触发一次选举。因此我们可以直接去看启动脚本zkServer.sh中的运行命令
ZOOMAIN就是QuorumPeerMain。那么我们基于这个入口来看
QuorumPeerMain.main方法
main方法中,调用了initializeAndRun进行初始化并且运行
protected void initializeAndRun(String[] args) throws ConfigException, IOException{ //这段代码比较简单,设置配置参数,如果args不为空,可以基于外部的配置路径来进行解析 QuorumPeerConfig config = new QuorumPeerConfig(); if (args.length == 1) { config.parse(args[0]); } // 这里启动了一个线程,来定时对日志进行清理,从命名来看也很容易理解 DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config.getDataDir(), config.getDataLogDir(), config.getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start(); // 如果是集群模式,会调用runFromConfig.servers实际就是我们在zoo.cfg里面配置的集群节点 if (args.length == 1 && config.servers.size() > 0) { runFromConfig(config); } else {//否则直接运行单机模式 LOG.warn("Either no config or no quorum defined in config, running "+ " in standalone mode"); // there is only server in the quorum -- run as standalone ZooKeeperServerMain.main(args); }
}
leader选举的源码分析相关推荐
- leader选举的源码分析-startLeaderElection
看到这个方法,有没有两眼放光的感觉?没错,前面铺垫了这么长,终于进入leader选举的方法了 synchronized public void startLeaderElection() { try ...
- leader选举的源码分析-QuorumPeer.start
QuorumPeer.start方法,重写了Thread的start.也就是在线程启动之前,会做以下操作 1. 通过loadDataBase恢复快照数据 2. cnxnFactory.start() ...
- leader选举的源码分析-Messenger
在Messenger里面构建了两个线程,一个是WorkerSender,一个是WorkerReceiver. 这两个线程是分别用来发送和接收消息的线程.具体做什么,暂时先不分析. Messenger( ...
- leader选举的源码分析-FastLeaderElection
初始化FastLeaderElection,QuorumCnxManager是一个很核心的对象,用来实现领导选举中的网络连接管理功能,这个后面会用到 public FastLeaderElection ...
- leader选举的源码分析-quorumPeer.createElectionAlgorithm
根据对应的标识创建选举算法 protected Election createElectionAlgorithm(int electionAlgorithm){ Election le=null; / ...
- leader选举的源码分析-FastLeaderElection.starter
starter方法里面,设置了一些成员属性,并且构建了两个阻塞队列,分别是sendQueue和recvqueue.并且实例化了一个Messager private void starter(Quoru ...
- leader选举的源码分析-runFromConfig
从名字可以看出来,是基于配置文件来进行启动. 所以整个方法都是对参数进行解析和设置 , 因为这些参数暂时还没用到,所以没必要去看.直接看核心的代码 quorumPeer.start(), 启动一个线程 ...
- 【Zookeeper】源码分析之Leader选举(一)
一.前言 分析完了Zookeeper中的网络机制后,接着来分析Zookeeper中一个更为核心的模块,Leader选举. 二.总结框架图 对于Leader选举,其总体框架图如下图所示 说明: 选举的父 ...
- Zookeeper之Leader选举源码分析
Zookeeper源码下载地址:https://github.com/apache/zookeeper 1.选举流程 Zookeeeper的Leader选举会分两个过程. 服务启动时的leader选举 ...
最新文章
- halcon:(4)halcon中XLD的概念与应用----汽车引擎盖圆孔检测
- 关于html和CSS的几个基本知识点
- TypePerf收集服务器性能
- Java获得泛型类中T的实例
- js 拼接html 表格,js合并table单元格(拼table的时候并不知道具体几行几列)
- java 的HashMap底层数据结构
- 取消XP和2000专业版的IIS的用户数量限制
- css-博客圆形头象的制作
- linux ansible_使用Ansible在Raspberry Pi上构建基于Linux的HPC系统
- 力扣 根据数字二进制下1的数目排序
- .htaccess 语法以及应用
- NTP、PTP时间同步服务器(时钟系统)
- 前馈神经网络求解XOR问题
- es6 箭头函数 模板字符串 点点点运算符
- 软件Craft.io指导
- 一款软件界面的重要性
- Calcite优化规则之ProjectAggregateMergeRule
- SQL Sever:关于外键引用无效表的问题
- 用户注册(request,get和post中文乱码)
- java-net-php-python-ssm个人理财管理系统登陆计算机毕业设计程序