ZooKeeper 启动过程分析

单机服务器启动

ZooKeeper服务器启动,大体分为五个主要步骤:配置文件解析、初始化数据管理器、初始化网络I/O管理器、数据恢复和对外服务。


预启动

预启动的步骤如下:
1、统一由QuorumPeerMain作为启动类
2、解析配置文件zoo.cfg
3、创建并启动历史文件清理器DatadirCleanupManager
4、判断当前是集群模式还是单机模式的启动
5、再次进行配置文件zoo.cfg的解析
6、创建服务器实例ZooKeeperServer

初始化

1、创建服务器统计器ServerStats
2、创建ZooKeeper数据管理器FileTxnSnapLog
3、设置服务器tickTime和会话超时时间限制
4、创建ServerCnxnFactory
5、初始化ServerCnxnFactory
6、启动ServerCnxnFactory主线程
7、恢复本地数据
8、创建并启动会话管理器
9、初始化ZooKeeper的请求处理链
10、注册JMX服务
11、注册ZooKeeper服务器实例

集群服务器启动


预启动

预启动步骤如下:
1、统一由QuorumPeerMain作为启动类
2、解析配置文件zoo.cfg
3、创建并启动历史文件清理器DatadirCleanupManager
4、判断当前是集群模式还是单机模式的启动

初始化

初始化步骤如下:
1、创建ServerCnxnFactory
2、初始化ServerCnxnFactory
3、创建ZooKeeper数据管理器FileTxnSnapLog
4、创建QuorumPeer实例
5、创建内存数据库ZKDatabase
6、初始化QuorumPeer
7、恢复本地数据
8、启动ServerCnxnFactory主线程

Leader选举

Leader选举的步骤如下:
1、初始化Leader选举
2、注册JMX服务
3、检测当前服务器状态
4、Leader选举

Leader和Follower启动期交互过程



Leader和Follower服务器启动期交互过程包括如下步骤
1、创建Leader服务器和Follower服务器
2、Leader服务器启动Follower接收器LearnerCnxAcceptor
3、Learner服务器开始和Leader建立连接
4、Leader服务器创建LearnerHandler
5、向Leader注册
6、Leader解析Learner信息,计算新的epoch
7、发送Leader状态
8、Leaner发送ACK消息
9、数据同步
10、启动Leader和Learner服务器

Leader和Follower启动

Leader和Follower启动步骤如下:
1、创建并启动会话管理器
2、初始化ZooKeeper的请求处理链
3、注册JMX服务


更多精彩内容,欢迎关注微信公众号:Java小笔记(ijavanote)

猜你喜欢

转载自blog.csdn.net/itliwei/article/details/54384138