根据对应的标识创建选举算法

protected Election createElectionAlgorithm(int electionAlgorithm){ Election le=null; //TODO: use a factory rather than a switch switch (electionAlgorithm) { case 0: le = new LeaderElection(this); break; case 1: le = new AuthFastLeaderElection(this); break; case 2: le = new AuthFastLeaderElection(this, true); break; case 3: qcm = createCnxnManager(); QuorumCnxManager.Listener listener = qcm.listener; if(listener != null){ listener.start(); //启动监听器,这个监听具体做什么的暂时不管,后面遇到需要了解的地方再回过头来看 le = new FastLeaderElection(this, qcm);//初始化FastLeaderElection } else { LOG.error("Null listener when initializing cnx manager"); } break; default: assert false; } return le;
}

leader选举的源码分析-quorumPeer.createElectionAlgorithm相关推荐

  1. leader选举的源码分析-QuorumPeer.start

    QuorumPeer.start方法,重写了Thread的start.也就是在线程启动之前,会做以下操作 1. 通过loadDataBase恢复快照数据 2. cnxnFactory.start()  ...

  2. leader选举的源码分析

    源码分析,最关键的是要找到一个入口,对于zk的leader选举,并不是由客户端来触发,而是在启动的时候会触发一次选举.因此我们可以直接去看启动脚本zkServer.sh中的运行命令 ZOOMAIN就是 ...

  3. leader选举的源码分析-startLeaderElection

    看到这个方法,有没有两眼放光的感觉?没错,前面铺垫了这么长,终于进入leader选举的方法了 synchronized public void startLeaderElection() { try ...

  4. leader选举的源码分析-FastLeaderElection

    初始化FastLeaderElection,QuorumCnxManager是一个很核心的对象,用来实现领导选举中的网络连接管理功能,这个后面会用到 public FastLeaderElection ...

  5. leader选举的源码分析-Messenger

    在Messenger里面构建了两个线程,一个是WorkerSender,一个是WorkerReceiver. 这两个线程是分别用来发送和接收消息的线程.具体做什么,暂时先不分析. Messenger( ...

  6. leader选举的源码分析-FastLeaderElection.starter

    starter方法里面,设置了一些成员属性,并且构建了两个阻塞队列,分别是sendQueue和recvqueue.并且实例化了一个Messager private void starter(Quoru ...

  7. leader选举的源码分析-runFromConfig

    从名字可以看出来,是基于配置文件来进行启动. 所以整个方法都是对参数进行解析和设置 , 因为这些参数暂时还没用到,所以没必要去看.直接看核心的代码 quorumPeer.start(), 启动一个线程 ...

  8. Zookeeper之Leader选举源码分析

    Zookeeper源码下载地址:https://github.com/apache/zookeeper 1.选举流程 Zookeeeper的Leader选举会分两个过程. 服务启动时的leader选举 ...

  9. 【Zookeeper】源码分析之Leader选举(一)

    一.前言 分析完了Zookeeper中的网络机制后,接着来分析Zookeeper中一个更为核心的模块,Leader选举. 二.总结框架图 对于Leader选举,其总体框架图如下图所示 说明: 选举的父 ...

最新文章

  1. 计算几何题中的英语生词
  2. Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件
  3. Count the Colors ZOJ - 1610
  4. 16 代码分割之错误边界与Suspense和命名导出
  5. 【c语言】棋盘游戏--三子棋
  6. 洛谷P2312解方程题解
  7. ZIP压缩输入/输出流
  8. MongoDB进阶系列(12)——MongoDB 固定集合
  9. 基于Java+MyEclipse+Socket+GUI的网络通讯录(C#可以参考为WinForm通讯录结构大体类似)
  10. 推荐计算机科学类的经典书籍
  11. 组播负载分担、静态组播路由和MBGP技术原理
  12. 无线路由器的几种破解方法
  13. CentOS 7安装TeamView
  14. C++模板编程(18)---模板实例化instantiation
  15. 计算机毕业设计JAVA便利店系统mybatis+源码+调试部署+系统+数据库+lw
  16. 新视野大学英语读写2 78单元翻译
  17. 给女朋友讲解什么是代理模式 【java3y将东西太有意思了】
  18. Android开发——kotlin语法基础
  19. 龙芯Fedora21平台制作feodra21-loongson-app docker镜像
  20. Python-字符版gif图

热门文章

  1. VC++ 删除当前读取行 代码
  2. 怀念mj--20090902
  3. JavaWeb完整项目要用到的专业技能
  4. Sublime Text3前端必备插件
  5. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
  6. Ubuntu 下安装Beyond Compare 安装解决方案
  7. Hybris CronJob.
  8. iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)
  9. FFmpeg编译出错_img_convert 找不到
  10. ip camera芯片级解决方案