看到这个方法,有没有两眼放光的感觉?没错,前面铺垫了这么长,终于进入leader选举的方法了

synchronized public void startLeaderElection() { try { //构建一个票据,用于投票 currentVote = new Vote(myid, getLastLoggedZxid(), getCurrentEpoch()); } catch(IOException e) { RuntimeException re = new RuntimeException(e.getMessage()); re.setStackTrace(e.getStackTrace()); throw re; } //这个getView返回的就是在配置文件中配置的server.myid=ip:port:port。view在哪里解析的呢? for (QuorumServer p : getView().values()) { if (p.id == myid) {//获得当前zkserver myid对应的ip地址 myQuorumAddr = p.addr; break; } } if (myQuorumAddr == null) { throw new RuntimeException("My id " + myid + " not in the peer list"); } //根据electionType匹配对应的选举算法,electionType默认值为3.可以在配置文件中动态配置 if (electionType == 0) { try { udpSocket = new DatagramSocket(myQuorumAddr.getPort()); responder = new ResponderThread(); responder.start(); } catch (SocketException e) { throw new RuntimeException(e); } } this.electionAlg = createElectionAlgorithm(electionType);
}

leader选举的源码分析-startLeaderElection相关推荐

  1. leader选举的源码分析

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

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

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

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

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

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

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

  5. leader选举的源码分析-quorumPeer.createElectionAlgorithm

    根据对应的标识创建选举算法 protected Election createElectionAlgorithm(int electionAlgorithm){ Election le=null; / ...

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

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

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

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

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

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

  9. Zookeeper之Leader选举源码分析

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

最新文章

  1. .net get set 初始化_RAM初始化的下板验证(Xilinx)
  2. Swift - 14 - 字符串的基础操作
  3. 《三体》动画版官宣!B站出品 刘慈欣“倒吸一口凉气”
  4. sqlserver2008安装报错 “Previous releases of Microsoft Visual Studio 2008″ failed.
  5. jmeter下载图片
  6. win 7-8-10 下 删除我的电脑下多余的设备和驱动器,腾讯视频,酷我音乐,手机
  7. Confluence 6 数据库表-杂项(Miscellaneous)
  8. 非template/render模式下使用iview组件时标签需要转化
  9. 服务器的svnserver修改密码
  10. 小黑与Vista试用手记
  11. three.js教程和手册
  12. 国家/地区 语言缩写代码 查询备用
  13. sd内存卡 a1 a2 区别
  14. android pie_Android Pie中的新安全功能,以及为什么对它们感到兴奋
  15. 华中科技大学计算机网络教材,华中科技大学计算机网络复习资料.ppt
  16. Python 常用的标准库以及第三方库
  17. strongbox-数论
  18. 机器人参加高考还拿高分,究竟怎么做到的?
  19. 研发效能度量标准与实践
  20. 【Matlab学习笔记】控制运算精度digits和vpa函数

热门文章

  1. webconfig和appconfig中出现特殊字符如何处理
  2. MongoDB基础--数据库和集合基本操作
  3. Pdshell教程-利用现有数据库(没有PDM情况下)导出数据库PMD文件
  4. Life Cycle Stages of ASP.NET Web Page.
  5. java 分层概念 要点
  6. 每周一个 Python 模块 | calendar
  7. Service 深度解析
  8. Windows消息机制详解
  9. 锁、C#中Monitor和Lock以及区别
  10. 在html使用a标签 直接下载图片 不通过后台实现直接下载