《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程

目录

  • QuorumPeerMain

QuorumPeerMain

在搭建本地的源码环境中,启动zookeeper服务端的入口为QuorumPeerMain,先看下它的类结构:
《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程_第1张图片

它本身只有一个属性quorumPeer,它代表了zookeeper集群中的一台机器,它会不断检测当前服务器实例的运行状态,同时根据情况发起leader选举;入口函数为main()函数,看下源码过程:
《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程_第2张图片

从源码中可以看出main()函数主要做了三个工作:

  1. 加载zoo.cfg配置,存放到配置实例QuorumPeerConfig
  2. 开启定时清理事务日志与快照数据文件的任务,DatadirCleanupManager
  3. 根据zoo.cfg文件中是否配置了server.*属性判断是集群模式还是单点模式,后文以集群模式分析。

接下来我们看下集群模式的启动过程:
《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程_第3张图片

方法runFromConfig()最关键的工作主要是创建、初始化并启动了quorumPeer,这个过程中涉及到的类大致关系如下:
《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程_第4张图片

图中的第1/2/3步主要是搭建服务器的通信网络,第4步是服务器处理请求的过程,第5步是关于数据的存储,第6步是客户端的功能,该系列文章的分析顺序是先弄懂zookeeper的整体运行环境,再逐个详细分析每一个请求的全过程。
《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程_第5张图片

你可能感兴趣的:(Zookeeper,zookeeper)