1.首先创建一个ServerConnectionFactory(这里先分析基于direct NIO,3.4引入了netty),用来监听zkClient的消息并创建ServerConnection处理读写请求

2.ZookeeperServer进行数据恢复:创建ZKDatabase并将PlaybackListener传入,然后ZKDB首先从snapshot中加载有效的镜像构建datatree,加载完成后由Playbacklistener对已经提交但还没有applylog进行reapply,并将最后的zkXid返回

3.ServerConnectionFactory进行session清理并执行一次checkpoint

4.启动ZookeeperServer,同时SessionTracker等线程,将启动请求发送到RequestProcess chain处理后,最后将ServerConnectionFactory传入.

Zookeeper 启动流程_startup