中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zk服務預啟動和啟動選舉的過程

發布時間:2021-09-16 22:26:26 來源:億速云 閱讀:184 作者:chen 欄目:大數據

這篇文章主要介紹“zk服務預啟動和啟動選舉的過程”,在日常操作中,相信很多人在zk服務預啟動和啟動選舉的過程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”zk服務預啟動和啟動選舉的過程”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

QuorumPeerMain類
public static void main(String[] args) {
    QuorumPeerMain main = new QuorumPeerMain();
    try {
        main.initializeAndRun(args);
    } catch (IllegalArgumentException e) {
        LOG.error("Invalid arguments, exiting abnormally", e);
        LOG.info(USAGE);
        System.err.println(USAGE);
        System.exit(ExitCode.INVALID_INVOCATION.getValue());
    } catch (ConfigException e) {
        LOG.error("Invalid config, exiting abnormally", e);
        System.err.println("Invalid config, exiting abnormally");
        System.exit(ExitCode.INVALID_INVOCATION.getValue());
    } catch (DatadirException e) {
        LOG.error("Unable to access datadir, exiting abnormally", e);
        System.err.println("Unable to access datadir, exiting abnormally");
        System.exit(ExitCode.UNABLE_TO_ACCESS_DATADIR.getValue());
    } catch (AdminServerException e) {
        LOG.error("Unable to start AdminServer, exiting abnormally", e);
        System.err.println("Unable to start AdminServer, exiting abnormally");
        System.exit(ExitCode.ERROR_STARTING_ADMIN_SERVER.getValue());
    } catch (Exception e) {
        LOG.error("Unexpected exception, exiting abnormally", e);
        System.exit(ExitCode.UNEXPECTED_ERROR.getValue());
    }
    LOG.info("Exiting normally");
    System.exit(ExitCode.EXECUTION_FINISHED.getValue());
}

預啟動

1.由QuorumPeerMain 啟動

2 解析配置文件 集群情況下配置多個節點,啟動清理DatadirCleanupManager

2.1創建zk數據管理器(FileTxnSnapLog)

3 判斷是集群還是單機模式

4通過配置初始化quorumPeer,包括(ElectionType,zkdatabase,quorumVerifier,cnxnFactory,learnerType等)

是zk服務器實例的托管者,quorumPeer會不斷檢測當前服務器實例運行狀態,同時發起leader選舉

5創建內存database,zkdb管理所有會話記錄,事務信息和dataTree數據

6初始化QuorumPeer實例,將FileTxnSnapLog,ServerCnxnFactory,ZkDatabase注冊到QuorumPeer中,配置參數服務器列表,競選時選舉算法和超時時間等

7加載數據庫loadDataBase()

8啟動serverCnxn連接

7-8在QuorumPeer中

public synchronized void start() {
    if (!getView().containsKey(myid)) {
        throw new RuntimeException("My id " + myid + " not in the peer list");
    }
    //加載數據庫
    loadDataBase();
    //啟動服務連接工廠
    startServerCnxnFactory();
    try {
        adminServer.start();
    } catch (AdminServerException e) {
        LOG.warn("Problem starting AdminServer", e);
        System.out.println(e);
    }
    //開始選舉
    startLeaderElection();
    startJvmPauseMonitor();
    super.start();
}

Leader選舉

1初始化leader選舉算法

2集群模式下,zookeeper首先會根據自身服務器id(sid),最新事務id(zxid)(lastLoggedZxid)

3和當前服務器epoch(currentEpoch)來創建選票

4在創建過程中,每個服務器都會給自己投票,然后,根據zoo.cfg配置,創建相應leader選舉算法

zookeeper默認提供了三種算法(LeaderElection,AuthFastLeaderElection,FastLeaderElection),可以通過zoo.cfg的electionArg屬性配置類型,

5但是現在默認支持的是FastLeaderElection選舉算法

在初始化階段 zk會創建選舉需要的網絡io管理器QuorumCnxnManager,同時監聽選舉指定端口,等待其他選舉服務連接

到此,關于“zk服務預啟動和啟動選舉的過程”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

zk
AI

顺平县| 读书| 贵溪市| 博客| 鄂州市| 高安市| 崇仁县| 山东省| 五莲县| 调兵山市| 绥芬河市| 松桃| 镇康县| 麻阳| 武平县| 弥渡县| 买车| 嘉禾县| 玉屏| 甘德县| 洛浦县| 无锡市| 通州市| 高密市| 密山市| 桦南县| 临泽县| 新兴县| 南阳市| 呼伦贝尔市| 孟连| 柳州市| 凌海市| 察哈| 清镇市| 修武县| 深泽县| 自贡市| 北宁市| 宝山区| 项城市|