Zookeeper(四)源码解析

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Zookeeper(四)源码解析

源码构建

源码地址:https://github.com/apache/zookeeper

  1. 使用git clone 源码
  2. 选择分支,我这里选择的是3.5.5分支

源码结构如图:

源码结构.png

  • zookeeper-recipes: 示例源码
  • zookeeper-client: C语言客户端
  • zookeeper-server:主体源码
  1. 刚打开时会发现缺少一大堆的类,根据README.md文件中的说明,我们首先需要先在根目录maven clean + install一次

如果出现类似由于java-doc生成文档失败导致install失败的话,可以将pom.xml文件中的doc项目类插件注释掉重新install

  1. 此时我们所需要的类就会生成到各个项目的target中,但是还是会少一个类org.apache.zookeeper.version.Info
    在包路径下新增类,发布版本时用的,对我们来说没啥用
package org.apache.zookeeper.version;
public interface Info {
    int MAJOR=3;
    int MINOR=5;
    int MICRO=5;
    String QUALIFIER=null;
    int REVISION=-1; //TODO: remove as related to SVN VCS
    String REVISION_HASH="390fe37ea45dee01bf87dc1c042b5e3dcce88653";
    String BUILD_DATE="08/27/2020 03:28 GMT";
}
  1. 打开bin目录下的脚本文件,找到启动类,分别为
  • 客户端:org.apache.zookeeper.ZooKeeperMain
  • 服务端:
  • 单机启动:org.apache.zookeeper.server.ZooKeeperServerMain
  • 集群启动:org.apache.zookeeper.server.quorum.QuorumPeerMain
  1. 此时启动是起不起来的,会报缺少配置文件的错,conf文件下编写配置文件
  • zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=data
clientPort=2181

这里可能会出现找不到类的一些错误,需要将pom文件中相关依赖的scope为provided的改为compile,也可以直接注释,因为默认就是compile

  1. 配置服务启动类的arg参数,Program arguments中填写配置文件的绝对路径,如:D:\zookeeper\conf\zoo.cfg
  2. 启动单机Zookeeper服务端
  3. 接下来尝试启动集群模式的Zookeeper,同样需要编写三份zoo.cfg,并且在数据卷路径下编写myid文件

    集群配置.png
  4. 将配置文件地址配到Program arguments栏中,启动QuorumPeerMain
  5. 启动客户端,客户端默认连接本机2181端口号,在参数栏中指定 server ip:port 可指定连接地址

源码解析

  • 加载配置
  • 开启清理旧日志线程
  • 初始化对外服务(NIO 或 Netty)
  • 初始化会话管理
  • 将日志和快照文件的数据加载到内存中
  • 启动NIO|Netty
  • 开始选举

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
3天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
6天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
16 3
|
4天前
|
存储 NoSQL 算法
Redis(四):del/unlink 命令源码解析
Redis(四):del/unlink 命令源码解析
|
6天前
|
XML Java 数据格式
深度解析 Spring 源码:揭秘 BeanFactory 之谜
深度解析 Spring 源码:揭秘 BeanFactory 之谜
13 1
|
3天前
|
XML Java 数据格式
Spring容器启动源码解析
Spring容器启动源码解析
|
6天前
|
Java Spring
深入解析Spring源码,揭示JDK动态代理的工作原理。
深入解析Spring源码,揭示JDK动态代理的工作原理。
10 0
|
12天前
|
安全 Java 数据安全/隐私保护
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(二)
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(二)
18 0
|
12天前
|
JSON 安全 Java
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(一)
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(一)
23 0
|
14天前
|
Java
|
14天前
|
分布式计算 Java Spark

推荐镜像

更多