leader选举的源码分析
生活随笔
收集整理的這篇文章主要介紹了
leader选举的源码分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
源碼分析,最關鍵的是要找到一個入口,對于zk的leader選舉,并不是由客戶端來觸發,而是在啟動的時候會觸發一次選舉。因此我們可以直接去看啟動腳本zkServer.sh中的運行命令
ZOOMAIN就是QuorumPeerMain。那么我們基于這個入口來看
QuorumPeerMain.main方法
main方法中,調用了initializeAndRun進行初始化并且運行
protected void initializeAndRun(String[] args) throws ConfigException, IOException{ //這段代碼比較簡單,設置配置參數,如果args不為空,可以基于外部的配置路徑來進行解析 QuorumPeerConfig config = new QuorumPeerConfig(); if (args.length == 1) { config.parse(args[0]); } // 這里啟動了一個線程,來定時對日志進行清理,從命名來看也很容易理解 DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config.getDataDir(), config.getDataLogDir(), config.getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start(); // 如果是集群模式,會調用runFromConfig.servers實際就是我們在zoo.cfg里面配置的集群節點 if (args.length == 1 && config.servers.size() > 0) { runFromConfig(config); } else {//否則直接運行單機模式 LOG.warn("Either no config or no quorum defined in config, running "+ " in standalone mode"); // there is only server in the quorum -- run as standalone ZooKeeperServerMain.main(args); } }?
總結
以上是生活随笔為你收集整理的leader选举的源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运行过程中的leader选举
- 下一篇: leader选举的源码分析-runFro