主类: QuorumPeerMain,
其中调用了main对象的initializeAndRun方法,
首先定义了QuorumPeerConfig对象,然后调用了parse方法,parse方法代码如下:
其中调用的parseProperties方法的代码如下:
可以看到,它读取了dataDir和clientPort等配置信息,最后调用了setupQuorumPeerConfig
setupQuorumConfig方法代码如下:
其中调用的setupMyId的代码如下:
可以看到其中通过读取指定目录的myid这个文件来设置id.
返回到initializeAndRun方法,快照清理工作由DatadirCleanManager类来完成,默认保留的快照个数为3(如下图),默认不开启清理。
如果开启了快照清理,具体的工作由PurgeTask类通过线程池来完成。
回到initializeAndRun方法,
接下来执行上面截图中的runFromConfig方法,它的代码如下:
可以看到,最后调用了quorumPeer.start(),start方法的代码如下:
其中调用的loadDataBase方法用来从快照中读取并加载数据,它的代码如下:
其中调用的loadDataBase代码如下: