1. 服务端整体架构图
Zookeeper服务器的启动,大致可以分为以下五个步骤
配置文件解析
初始化数据管理器
初始化网络 I/O 管理器
数据恢复
对外服务
2. 单机版服务器启动
单机版服务器的启动其流程图如下
上图的过程可以分为预启动
和初始化过程
。
2.1 预启动
- 统一由 QuorumPeerMain 作为启动类。无论单机或集群,在 zkserver.cmd 和 zkServer.sh 中都配置了QuorumPeerMain 作为启动入口类。
- 解析配置文件 zoo.cfg。zoo.cfg配置运行时的基本参数,如 tickTime、dataDir、clientPort等参数。
- 创建并启动历史文件清理器 DatadirCleanupManager。对事务日志和快照数据文件进行定时清理。
- 判断当前是集群模式还是单机模式启动。若是单机模式,则委托给zooKeeperServerMain 进行启动。
- 再次进行配置文件 zoo.cfg 的解析。
- 创建服务器实例 zooKeeperServer。zookeeper 服务器首先会进行服务器实例的创建,然后对该服务器实例进行初始化,包括连接器、内存数据库、请求处理器等组件的初始化。
2.2 初始化
- 创建服务器统计器ServerStats。ServerStats是zookeeper服务器运行时的统计