ZK初時 Zookeeper的工作原理

2021-10-06 05:04:10 字數 911 閱讀 7139

通俗來講,zookeeper 的核心是原子廣播,這個機制保證了各個 server 之間的同步。實現這個機制的協議叫做 zab 協議。zab 協議有兩種模式,它們分別是恢復模式和廣播模式。

當服務啟動或者在領導者崩潰後,zab 就進入了恢復模式,當領導者被選舉出來,且大多數 server 的完成了和 leader 的狀態同步以後,恢復模式就結束了。

狀態同步保證了 leader 和 server 具有相同的系統狀態。

一旦 leader 已經和多數的 follower 進行了狀態同步後,他就可以開始廣播訊息了,即進入廣播狀態。這時候當乙個 server 加入 zookeeper 服務中,它會在恢復模式下啟動,發現 leader,並和 leader 進行狀態同步。待到同步結束,它也參與訊息廣播。zookeeper服務一直維持在 broadcast 狀態,直到 leader 崩潰了或者 leader 失去了大部分的followers 支援。

廣播模式需要保證 proposal 被按順序處理,因此 zk 採用了遞增的事務 id 號(zxid)來保證。所有的提議(proposal)都在被提出的時候加上了 zxid。

實現中 zxid 是乙個 64 為的數字,它高 32 位是 epoch 用來標識 leader 關係是否改變,每次乙個 leader 被選出來,它都會有乙個新的 epoch。低 32 位是個遞增計數。

當 leader 崩潰或者 leader 失去大多數的 follower,這時候 zk 進入恢復模式,恢復模式需要重新選舉出乙個新的 leader,讓所有的 server 都恢復到乙個正確的狀態。

如果往多了來講,它內部原理具體分為以下十項:

請求、事務和識別符號

群首選舉

zab:狀態更新的廣播協議

觀察者伺服器的構成

本地儲存

伺服器與會話

伺服器與監視點

客戶端序列化

zookeeper 初步認識zk

由於網際網路的快速發展,業務需求的激增,所以簡單的單體架構已經無法滿足我們的業務需求了,所以分布式架構應運而生。但是當服務越來越多的時候,規模越來越大,單靠人工管理和維護服務以及位址的配置資訊會越來越困難,所以需要有乙個服務發現與註冊中心來統一控制。zk定義 zookeeper 是乙個開源的分布式協...

ZK安裝 ZK配置 ZK集群部署踩過的大坑

天天採坑 來來咱們一起來填zookeeper的坑呀!解決坑一定要注意zk根目錄下的神器,那就是logs目錄下的日誌,第一坑 錯誤 找不到或無法載入主類 org.apache.zookeeper.server.quorum.quorumpeermain 檢視日誌的時候發現 錯誤 找不到或無法載入主類 ...

zk開發 zk中的表單驗證 優化版

驗證表單 需要input元素的constraint屬性的支援 例如 年齡 param formcontainer input元素公共 return 如果驗證成功返回true,否則返回false public static boolean validateform component formcont...