leader選舉的原始碼分析

2021-10-17 03:22:27 字數 708 閱讀 3067

原始碼分析,最關鍵的是要找到乙個入口,對於zk的leader選舉,並不是由客戶端來觸發,而是在啟動的時候會觸發一次選舉。因此我們可以直接去看啟動指令碼zkserver.sh中的執行命令

zoomain就是quorumpeermain。那麼我們基於這個入口來看

quorumpeermain.main方法

main方法中,呼叫了initializeandrun進行初始化並且執行

protected void initializeandrun(string args) throws configexception, ioexception 

// 這裡啟動了乙個執行緒,來定時對日誌進行清理,從命名來看也很容易理解

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) else

}

副本的leader選舉

kafka提供了資料複製演算法保證,如果leader副本所在的broker節點宕機或者出現故障,或者分割槽的leader節點發生故障,這個時候怎麼處理呢?那麼,kafka必須要保證從follower副本中選擇乙個新的leader副本。那麼kafka是如何實現選舉的呢?要了解leader選舉,我們需要...

副本的leader選舉

kafka提供了資料複製演算法保證,如果leader副本所在的broker節點宕機或者出現故障,或者分割槽的leader節點發生故障,這個時候怎麼處理呢?那麼,kafka必須要保證從follower副本中選擇乙個新的leader副本。那麼kafka是如何實現選舉的呢?要了解leader選舉,我們需要...

zookeeper的leader選舉機制

三個核心選舉原則 1.zookeeper集群中只有超過了半數以上的伺服器啟動,此集群才能正常工作 2.在集群正常工作之前,myid小的伺服器會給myid大的伺服器投票,這種投票會一直持續到集群開始正常工作,即,選出了leader。3.選出leader之後,之前的伺服器們的狀態要由looking轉為f...