1. 源码下载:https://github.com/apache/zookeeper
2. 生成 eclipse 工程,并导入 idea
具体参见 https://yq.aliyun.com/articles/39056 写的非常详细了
若是遇到无 Info 类的错误,运行 VerGen.main() 自动生成,要是自动生成也搞不定,就按照 VerGen.generateFile() 里面的代码生成方法,手工敲一个?
3. 寻找启动入口
zkServer.sh 中找到启动入口类 org.apache.zookeeper.server.quorum.QuorumPeerMain
4. 集群版配置,见下图,几点说明
- zoo.cfg 配置文件(1)中加入 dataDir(2) 和 集群成员配置(3)。如果没有集群成员配置,启动的时候走的是单机版流程,就没有了 leader 选举了
- 为 dataDir 建个目录,我这里就用 temp 了,见下图中(5)
- 在 dataDir 目录中建个 myid 的文件,里面存放 myid 的值,这里我写的是 3
- 将 conf 目录下的 log4j.properties 拷贝到 src/java/main 目录下(4),这样启动时就不会报日志配置错误
5. Idea 中配置 ZK 启动信息
6. QuorumPeerMain 中的 main 方法打上断点,成功 debug