ZooKeeper啟動過程

2021-09-07 10:50:58 字數 1531 閱讀 5180

zookeeper啟動過程

zkserver.sh【linux】或 zkserver.cmd【windows】

以zkserver.cmd為例(zkserver.sh中內容太多):

能夠清晰的看出:呼叫了quorumpeermain這個類,傳的引數為%zoocfg%【在zkenv.cmd中定義。就是zoo.cfg】。

到quorumpeermain類中一看,果然有個main方法,且接受乙個引數【配置檔案路徑】:

當然。接受的引數不是乙個也沒關係,僅僅只是就不能集群了。僅僅能以單機模式執行。僅當接受乙個引數作為配置檔案路徑,且此配置檔案沒有設定為單機模式,才會開啟zookeeper集群啟動過程【上圖120行,runfromconfig】。

2.啟動過程源**分析

能夠看出,程式轉移到了quorumpeer。首先設定一系列zoo.cfg中的屬性值。而後start。quorumpeer繼承了thread類,自然轉到了quorumpeer.run()。

run方法太長了。精簡了一下。僅僅留了骨架:

@override

public void run() catch (exception e) finally

break;

case following:

try catch (exception e) finally

break;

case leading:

try catch (exception e) finally

updateserverstate();

}break;}}

} finally

}

能夠看出。僅僅要沒有stop或者沒有異常丟擲。這個執行緒便一直在執行,沒有興許很多其它的操作了,所有在這個迴圈裡。

到此為止,zookeeper集群中的這乙個節點【peer】啟動完成。

從run()方法能夠清晰的看到,zookeeper中的節點能夠有四種狀態:

當中,getpeerstate()方法中state初始化為looking,因此每個節點啟動時的狀態都是looking。

下一步。就是參與投票,選出zookeeper集群的leader,見下篇文章:zookeeper fastleaderelection演算法。

ZooKeeper服務端啟動過程 集群模式

本文主要對zookeeper服務端集群模式的啟動過程進行簡要說明。整個集群的啟動是由quorumpeermain這個類負責執行的。在該類的main方法中執行initialzeandrun 方法,如下 protected void initializeandrun string args throws...

mysql啟動過程長 mysql啟動過程

mysql啟動過程經過以下順序 1.mysql讀取配置檔案的順序 讀取順序 etc my.cnf etc mysql my.cnf usr etc my.cnf my.cnf 2.mysql啟動方式 mysql啟動方式有三種 mysqld mysqld safe mysqld multi 主要用於多...

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...