目录
- QuorumPeerMain
QuorumPeerMain
在搭建本地的源码环境中,启动zookeeper服务端的入口为QuorumPeerMain,先看下它的类结构:
它本身只有一个属性quorumPeer
,它代表了zookeeper集群中的一台机器,它会不断检测当前服务器实例的运行状态,同时根据情况发起leader选举;入口函数为main()
函数,看下源码过程:
从源码中可以看出main()
函数主要做了三个工作:
- 加载
zoo.cfg
配置,存放到配置实例QuorumPeerConfig中 - 开启定时清理事务日志与快照数据文件的任务,DatadirCleanupManager
- 根据
zoo.cfg
文件中是否配置了server.*
属性判断是集群模式还是单点模式,后文以集群模式分析。
接下来我们看下集群模式的启动过程:
方法runFromConfig()
最关键的工作主要是创建、初始化并启动了quorumPeer
,这个过程中涉及到的类大致关系如下:
图中的第1/2/3步主要是搭建服务器的通信网络,第4步是服务器处理请求的过程,第5步是关于数据的存储,第6步是客户端的功能,该系列文章的分析顺序是先弄懂zookeeper的整体运行环境,再逐个详细分析每一个请求的全过程。