1. 从zkServer.sh启动脚本可以看到启动类QuorumPeerMain
①解析配置文件zoo.cfg,
②DatadirCleanupManager启动和调度清洗任务,
③如果启动加上配置文件参数且有severs配置,则启动集群模式,否则启动standalone单机模式
1) 启动ZooKeeperServerMain
2) 反射创建连接工厂(无配置,默认):NIOServerCnxnFactory
3) 调用其configure,初始化连接等参数
4) 启动startup:
①保证当前线程是启动着;
②设置zkServer;
③加载、初始化zkDb;
④创建并且启动SessionTracker,启动请求处理器,注册JMX,记录状态state=RUNNING,notifyAll()其它线程。
1) 创建QuorumPeer,并且初始化
2) QuorumPeer.start
3) 加载、初始化zkDb;
4) 启动客户端连接管理工厂;
5) 开始Leader选举
6) quorumPeer线程根据状态(LOOKING、OBSERVING、FOLLOWING、LEADING)进行while循环处理
系列:
0-ZooKeeper介绍 https://blog.verysu.com/article/381
1-IDEA导入Zookeeper源码 https://blog.verysu.com/article/366
PS:若有不对的地方,欢迎指正!