总所周知,zk是用java代码写的,那么启动肯定会调用java的类。那么它具体调用哪个类?两种方法:方法一:查看zkServer.cmd/zkServer.sh启动文件,里面有个关键的类org.apache.zookeeper.server.quorum.QuorumPeerMain.main 。方法二:jps查看zk进程,会看到调用QuorumPeerMain。
配置文件里面是调用了QuorumPeerMain的main方法那么程序启动时他们到底干了什么事情,下面一起解密:
>org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun 解析zoo.cfg文件内容加载到内存中 ,解析下面有个注释Start and schedule the the purge task 大概意思是开始定时执行任务这个不用管 点 cnxnFactory.start();这里有两个实现类一个是NettyServerCnxnFactory另外一个是NIOServerCnxnFactory 怎么知道具体实现哪个类? 返回到runFromConfig方法创建QuorumPeer对象有个createFactory方法 里面是实现NIOServerCnxnFactory这个类
网友评论