1、ZAB協(xié)議介紹
ZAB 協(xié)議全稱:Zookeeper Atomic Broadcast(Zookeeper 原子廣播協(xié)議)。
Zookeeper 是一個為分布式應用提供高效且可靠的分布式協(xié)調服務。在解決分布式一致性方面,Zookeeper 并沒有使用 Paxos ,而是采用了 ZAB 協(xié)議,ZAB是Paxos算法的一種簡化實現(xiàn)。
ZAB 協(xié)議定義:ZAB 協(xié)議是為分布式協(xié)調服務 Zookeeper 專門設計的一種支持 崩潰恢復 和 原子廣播 的協(xié)議。下面我們會重點講這兩個東西。
基于該協(xié)議,Zookeeper 實現(xiàn)了一種 主備模式 的系統(tǒng)架構來保持集群中各個副本之間數(shù)據(jù)一致性。具體如下圖所示:
上圖顯示了 Zookeeper 如何處理集群中的數(shù)據(jù)。所有客戶端寫入數(shù)據(jù)都是寫入到Leader節(jié)點,然后,由 Leader 復制到Follower節(jié)點中,從而保證數(shù)據(jù)一致性。
那么復制過程又是如何的呢?復制過程類似兩階段提交(2PC),ZAB 只需要 Follower(含leader自己的ack) 有一半以上返回 Ack 信息就可以執(zhí)行提交,大大減小了同步阻塞。也提高了可用性。
簡單介紹完,開始重點介紹 消息廣播 和 崩潰恢復。整個 Zookeeper 就是在這兩個模式之間切換。 簡而言之,當 Leader 服務可以正常使用,就進入消息廣播模式,當 Leader 不可用時,則進入崩潰恢復模式。文章來源:http://www.zghlxwxcb.cn/news/detail-726305.html
2、消息廣播
ZAB 協(xié)議的消息廣播過程使用的是一個原子廣播協(xié)議,類似一個 兩階段提交過程。對于客戶端發(fā)送的寫請求,全部由 Leader 接收,Leader 將請求封裝成一個事務 Proposal,將其發(fā)送給所有 Follwer ,然后,根據(jù)所有 Follwer 的反饋,如果超過半數(shù)(含leader自己)成功響應,則執(zhí)行 commit 操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-726305.html
到了這里,關于Zookeeper分布式一致性協(xié)議ZAB源碼剖析的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!