- zookeeper的主类是QuorumPeerMain,启动时读取zoo.cfg配置文件,如果没有配置server列表,则单机模式启动,否则按集群模式启动,这里只分析集群模式
- 根据配置初始化quorumPeer对象,并启动quorumPeer线程,这里主要做了几件事情
- 读取保存在磁盘上的数据,包括db的snapshot和txnlog,zookeeper的存储结构另外专门讲述
- 启动cnxnFactory,这里主要是启动一个server,用来接收来自client的请求,绑定在配置文件中的clientPort端口
- 在QuorumAddress上绑定一个server,用来和其他zookeeper server做交互
- 启动leader选举过程,因为server刚启动时是存在LOOKING状态,需要发一起一次选举过程来获取leader,选举过程另外专门讲述
- 启动quorumPeer的主线程run,根据当前节点的状态来启动不同的流程
- 如果是Looking状态,则调用FastLeaderElection::lookForLeader来发起选举流程
- 如果是OBSERVING状态,则开始Observer流程
- 如果是FOLLOWING状态,则开始Follower流程,另外专门讲述
- 如果是LEADING状态,则开始Leader流程,另外专门讲述