zookeeper的主備同步和leader選舉是通過zab協議來完成的。寫一下能夠記得更牢一些。
因為zk大多數是讀,少部分寫,所以讀都是讀follower。寫的是leader
資料同步的過程類似於二階段提交
client 寫資料到leader,leader為每乙個follower構建佇列,非同步將寫入的資料放到佇列裡
佇列裡的資料傳送proposal給到每乙個follower
follower收到後,將資料寫入,並且傳送ack
leader收到大多數的ack之後,傳送ack給到每乙個follower,follower根據如果沒問題就commit,然後傳送給leader,leader收到之後給到client
像這樣的分布式協議,主要還是考慮特殊情況。
可能出現的特殊情況如下:
leader故障,毫無疑問, zk重新選取主,然後重試
有一半的follower沒ack,然後就沒法commit,client接收到的也是失敗,資料並沒有持久化了,不會丟失。
leader傳送commit 丟了,那麼follower沒法commit,資料也沒持久化下來,client接收到的失敗。
Zookeeper理解 ZAB協議
zab協議 協議介紹 關鍵字 過半數節點 訊息廣播 順序性保證 奔潰恢復 基本特性 leader選舉 資料同步 丟棄資料 結論 深入zab協議 系統模型 存在任意q q是 的子集 q,q 存在任意時候的q1 q2,他們的交集不等於空集合 此處的意義在於q1或q2 任意乙個都超過半數,應此不管如何去交...
Zookeeper集群搭建以及zab協議
單機環境下,jdk zookeeper安裝完畢,基於一台虛擬機器,進行zookeeper的偽集群搭建,zookeeper集群中包含三個節點,節點對外提供服務埠號分別為2181,2182,2183 基於zookeeper 3.4.10複製三份zookeeper安裝好的伺服器檔案,目錄名稱分別為zook...
ZAB協議在Zookeeper中的實現
zookeeper 是乙個典型的分布式資料一致性解決方案,分布式應用程式可以基於 zookeeper 實現諸如資料發布 訂閱 負載均衡 命名服務 分布式協調 通知 集群管理 master 選舉 分布式鎖和分布式佇列等功能。zab 協議是為分布式協調服務zookeeper專門設計的一種支援崩潰恢復的一...