zookeeper:启动原理
  Ta2cNb9VdLMk 2023年12月06日 22 0


主类: QuorumPeerMain,

zookeeper:启动原理_zookeeper


其中调用了main对象的initializeAndRun方法,

zookeeper:启动原理_云原生_02


首先定义了QuorumPeerConfig对象,然后调用了parse方法,parse方法代码如下:

zookeeper:启动原理_分布式_03


其中调用的parseProperties方法的代码如下:

zookeeper:启动原理_指定目录_04


可以看到,它读取了dataDir和clientPort等配置信息,最后调用了setupQuorumPeerConfig

zookeeper:启动原理_云原生_05


setupQuorumConfig方法代码如下:

zookeeper:启动原理_zookeeper_06


其中调用的setupMyId的代码如下:

zookeeper:启动原理_分布式_07


可以看到其中通过读取指定目录的myid这个文件来设置id.返回到initializeAndRun方法,快照清理工作由DatadirCleanManager类来完成,默认保留的快照个数为3(如下图),默认不开启清理。

zookeeper:启动原理_zookeeper_08


zookeeper:启动原理_指定目录_09


如果开启了快照清理,具体的工作由PurgeTask类通过线程池来完成。回到initializeAndRun方法,

zookeeper:启动原理_分布式_10


接下来执行上面截图中的runFromConfig方法,它的代码如下:

zookeeper:启动原理_指定目录_11


zookeeper:启动原理_分布式_12


zookeeper:启动原理_云原生_13


zookeeper:启动原理_zookeeper_14

可以看到,最后调用了quorumPeer.start(),start方法的代码如下:

zookeeper:启动原理_加载数据_15


其中调用的loadDataBase方法用来从快照中读取并加载数据,它的代码如下:

zookeeper:启动原理_zookeeper_16


zookeeper:启动原理_指定目录_17


zookeeper:启动原理_指定目录_18


其中调用的loadDataBase代码如下:

zookeeper:启动原理_加载数据_19


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
Ta2cNb9VdLMk