Zookeeper源码分析

本文详细介绍了Zookeeper源码搭建环境,服务端与客户端启动配置,以及核心的单机模式启动和Leader选举算法FastLeaderElection的工作原理。深入剖析了集群模式服务端执行流程,适合理解Zookeeper技术的开发者阅读。

目录

一. 源码环境搭建

(一)源码下载

1. 官方下载网址:

2. 百度网盘下载地址

(二)配置ANT

 (三)编译zookeeper源码

1. 修改配置文件

2. 编译

 (四)将编译后的源码直接open方式导入idea

(五)version.Info类缺失问题处理

二. 服务端与客户端的启动配置

(一)服务端启动

(二)客户端启动

三.  源码分析之单机模式服务端启动

四. 源码分析之Leader选举总体框架

五. 源码分析之Leader选举FastLeaderElection

六. 源码分析之集群模式服务端

(一)执⾏流程图

 (二)源码分析


一. 源码环境搭建

(一)源码下载

1. 官方下载网址:

zookeeper-release-3.5.4下载地址:
:https://github.com/apache/zookeeper/tree/release-3.5.4
apache-ant-1.10.6-bin下载地址:
https://ant.apache.org/bindownload.cgi

 

2. 百度网盘下载地址

zookeeper-release-3.5.4下载地址:zookeeper-release-3.5.4

apache-ant-1.10.6-bin下载地址:apache-ant-1.10.6-bin

(二)配置ANT

1. apache-ant-1.10.6-bin.zip 解压,解压是存放的磁盘路径不要有中文

2. 配置系统环境变量,如下图:

 

 3. 测试ANT是否安装成功

 (三)编译zookeeper源码

1. 修改配置文件

将zookeeper-release-3.5.4.zip解压,解压存放磁盘路径中含中文,修改zookeeper-release-3.5.4目录下的build.xml配置文件,将此配置文件中第1809行的:

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

2. 编译

在zookeeper-release-3.5.4目录下打开CMD,输入ant eclipse命令 开始编译,如图:

由于网速因素,如编译过程较长,请耐心等待,编译完成,显示结果如下图:

 (四)将编译后的源码直接open方式导入idea

(五)version.Info类缺失问题处理

源码导入idea中以后会发现:src/java/main/org/apache/zookeeper/version/Info类缺失,而导致整个源码项目编译失败。下面介绍idea2020.3版本导入zookeeper源码时如何解决这一问题:

1. 找到src/java/main/org/apache/zookeeper/version/util/VerGen.java 这个类,将该类的main方法上添加三个运行参数并删除自动编译:

这三个运行参数为:版本号 1 你自己的编译时间(三个参数之间用空格分隔),如下图:

 2. 选中该类,使用快捷键ctrl+shift+F9进行手动编译

3.执行该类的main方法:

4. 执行完毕后,你会发现Info类文件出现在了

org.apache.zookeeper.version目录下,将其拖到src/java/main/org/apache/zookeeper/version目录下。

二. 服务端与客户端的启动配置

(一)服务端启动

运⾏主类 org.apache.zookeeper.server.QuorumPeerMain ,将 zoo.cfg 的完整路径配置在 Program
arguments

 

VM options 配置,即指定到 conf ⽬录下的 log4j.properties
-Dlog4j.configuration=file:/Users/ericsun/Documents/zookeeper-release-
3.5.4/conf/log4j.properties
(以上改成自己的log4j.properties文件的路径)
运⾏输出⽇志如下:

可以得知单机版启动成功,单机版服务端地址为127.0.0.1:2182 

(二)客户端启动

三.  源码分析之单机模式服务端启动

 zookeeper源码分析之单机模式服务端启动_舞鹤白沙编码日志-优快云博客

四. 源码分析之Leader选举总体框架

分析Zookeeper中⼀个核⼼的模块,Leader选举。

总体框架图

对于Leader选举,其总体框架图如下图所示

 

AuthFastLeaderElection,LeaderElection其在3.4.0之后的版本中已经不建议使⽤。

说明:
  选举的⽗接⼝为 Election ,其定义了 lookForLeader shutdown 两个⽅法, lookForLeader 表示寻找 Leader
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enterpc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值