标签:microsoft 开始 col tor ima 集群模式 其他 dir 流程
Zookeeper集群启动过程
预启动
统一由QuorumPeerMain作为启动类
读取zoo.cfg配置文件
创建并启动历史文件清理器DatadirCleanupManager
判断当前是集群模式还是单机模式
初始化
创建ServerCnxnFactory,
初始化ServerCnxnFactory,初始化一个线程,作为整个ServerCnxnFactory的主线程然后在初始化NIO服务器
创建Zookeeper数据管理器FileTxnSnapLog,
创建QuorumPeer实例,Quorum是集群模式下特有的对象,是Zookeeper服务器实例的托管者,从集群层面来看QuorumPeer代表了Zookeeper集群中一台服务器,在运行期间它会不断检查当前服务器实例运行的状态。然后根据情况进行Leader选举。
创建内存数据库ZKDatabase
初始化QuorumPeer,这里把一些核心组件注册到QuorumPeer,这些核心组件包括FileTxnSnapLog、ServerCnxnFactory和ZKDatabase,同时Zookeeper还会对QuorumPeer配置一些参数,包括服务器地址列表,选举算法和会话超时时间等。
恢复本地数据库
启动ServerCnxnFactory主线程
Leader选举
交互和数据同步(看红色部分)
创建会话管理器
初始化Zookeeper的请求处理链
注册JMX
在Leader选举完成之后会有一个Leader和其他服务器(Follower和Observer 统称Learner学习者)进行交互,大致流程如下:
Leader服务器启动Follower接收器,LearnerCnxAcceptor,来接收所有非Leader服务器的连接
Leader与每一个Learner之间都会有一个LearnerHandler实例对应负载它们之间的消息通信和数据同步
Learner和Leader建立连接后,Learner向Leader注册,就是发送自己的信息给Leader,包括当前服务器的SID和ZXID
Leader解析Learner发来的注册信息,在过半向Leader注册的服务器中找到最大的epoch,然后加1,用于确定当前集群的epoch
Leader发送LEADERINFO给Learner
Learner收到LEADERINFO,解析出epoch和ZXID然后给Leader一个反馈
Leader收到Learner响应之后就开始与其进行数据同步
启动Leader和Learner服务器,有过半数完成数据同步就可以启动了。
Leader选举
Zookeeper详解(七):Zookeeper集群启动过程和Leader选举
标签:microsoft 开始 col tor ima 集群模式 其他 dir 流程
原文地址:http://blog.51cto.com/littledevil/2132214