zk源码解析-2018-11-23

总所周知,zk是用java代码写的,那么启动肯定会调用java的类。那么它具体调用哪个类?两种方法:方法一:查看zkServer.cmd/zkServer.sh启动文件,里面有个关键的类org.apache.zookeeper.server.quorum.QuorumPeerMain.main 。方法二:jps查看zk进程,会看到调用QuorumPeerMain。

配置文件里面是调用了QuorumPeerMain的main方法那么程序启动时他们到底干了什么事情,下面一起解密:

zk源码解析-2018-11-23_第1张图片
>org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun
zk源码解析-2018-11-23_第2张图片
解析zoo.cfg文件内容加载到内存中 ,解析下面有个注释Start and schedule the the purge task  大概意思是开始定时执行任务这个不用管
zk源码解析-2018-11-23_第3张图片
zk源码解析-2018-11-23_第4张图片
zk源码解析-2018-11-23_第5张图片
zk源码解析-2018-11-23_第6张图片
点 cnxnFactory.start();这里有两个实现类一个是NettyServerCnxnFactory另外一个是NIOServerCnxnFactory  怎么知道具体实现哪个类?
zk源码解析-2018-11-23_第7张图片
返回到runFromConfig方法创建QuorumPeer对象有个createFactory方法
zk源码解析-2018-11-23_第8张图片
里面是实现NIOServerCnxnFactory这个类

你可能感兴趣的:(zk源码解析-2018-11-23)