最近正在整理毕业一年来学到的东西,学艺不精还望各位大佬及时给予帮助,让我能在这条路上越走越远!!
从源码了解zookeeper server端的启动
zookeeper版本为从GitHub拉取的最新源码
1.启动脚本
从zkServer.sh中我们可以获取到server端的启动入口类QuorumPeerMain
org.apache.zookeeper.server.ZooKeeperServerMain 单机启动
org.apache.zookeeper.server.quorum.QuorumPeerMain 自动判断(启动脚本指定启动类)
2.QuorumPeerMain.main()方法
主要的代码为:
QuorumPeerMain main = new QuorumPeerMain();
//启动类中的初始化方法-启动入口
main.initializeAndRun(args);
QuorumPeerMain.initializeAndRun()方法
结合zkServer.sh及zkEnv.sh,其中args 为zoo.cfg路径(shell脚本内逻辑判断,详细过程需阅读shell脚本)
config.parse()方法
parseProperties()方法
将配置文件中的数据根据属性名称读取出来,并赋值给QuorumPeerConfig对象的属性
该处并未对配置的其他节点进行读取,仅抛出异常不做处理
dynamicConfigFile未配置时
结合下图:
根据加载到的节点数量判断是单机还是集群
runFromConfig()方法
未完待续~~~~~