栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

zookeeper源码分析

zookeeper源码分析

:因为zk是由ant来构建的,所以需要使用ant命令来转换成工程,然后导入idea
zk下载地址:https://github.com/apache/zookeeper/tree/release-3.5.4
ant下载地址:http://ant.apache.org/bindownload.cgi


一、ant安装配置

1、配置环境变量
系统环境变量中添加:ANT_HOME:D:ant
path变量结尾添加:;%ANT_HOME%bin;%ANT_HOME%lib

2、验证
cmd中:ant -version


二、编译zookeeper

1、打开cmd,在zk根路径下执行 ant eclipse

执行后发现报错了,不用担心,我们需要修改一个配置
修改源码中build.xml中的配置,将地址:
https://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
更换成
http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
然后再去执行 ant eclipse命令,执行成功!


#### 三、导入idea ![在这里插入图片描述](https://img-blog.csdnimg.cn/f69605dd8c45441d821945e18b1183b1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAX0FkbWlu,size_19,color_FFFFFF,t_70,g_se,x_16) 四、选举算法源码

Zookeeper 的 Leader 选举类是 FastLeaderElection,该类是 ZAB 协议在 Leader 选举中的工程应用,所以直接找到该类对其进行分析。该类中的最为重要的方法为 lookForLeader(),是选举 Leader 的核心方法。该方法大体思路可以划分为以下几块:

选举前的准备工作
创建选举对象、选举过程中需要用到的集合,初始化选举时限等。将自己作为初始化 Leader 投出去
在当前 Server 第一次投票时会先将自己作为 Leader,然后将自己的选票广播给其它所有 Server。验证自己的投票与大家的投票谁更适合做 Leader
在“我选我”后,当前 Server 同样会接收到其它 Server 发送来的选票通知(Notification)。通过 while 循环,遍历所有接收到的选票通知,比较谁更适合做 Leader。若找到一个比自己更适合的 Leader,则修改自己选票,重新将新的选票广播出去。当然,每验证一个选票,则会将其记录到一个集合中,将来用于进行票数统计。判断本轮选举是否结束
在每次验证过谁更适合做 Leader 后,会马上判断当前的选举是否可以结束了,即当前主机所推荐的这个选票是否过半了。若过半了,则直接完成后续的一些收尾工作,例如清空选举过程中所使用的集合,以备下次使用;再例如,生成最终的选票,以备其它 Server来同步数据。若没有过半,则继续从队列中读取出下一个来自于其它主机的选票,然后进行验证。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/706386.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号