zookeeper 原子廣播機制

2021-10-19 22:31:33 字數 1198 閱讀 9311

1)client與server是通過nio方式通訊的。

2)訊息是fifo方式執行的(順序的,先進先出)。

3)讀訊息可以通過zookeeper的leader和所有的follower。

4)寫訊息必須通過leader。

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

zookeeper選舉機制

每個訊息的id(zxid)是64位,前面32位稱為epoch,後面32位稱為counter。

(1)發現集群中被commit的proposal的最大的zxid,之後的leader不會commit比這zxid小的proposal,也就是說leader只能commit比這大的proposal。

(2)建立新的epoch,從而保證之前的leader不能再commit新的proposal(每選舉出乙個新的leader,epoch都會改變,且比之前的大,且保證乙個leader的任期內,epoch不會被改變)。

(3)集群中大部分節點都commit過前乙個leader commit過的訊息,而新的leader是被大部分節點鎖支援的(會選舉出於前leader保持最為緊密的follower作為leader),所以被之前leader commit過的proposal不會丟失,至少被乙個節點所儲存。

(4)新的leader會與所有follower通訊,從而保證大部分節點都擁有最新的資料。

(1)client通過某個follower請求寫操作時,該follower會把這個請求發給leader;

(2)leader再將這個更新(proposal),順序傳送給follower;

(3)follower收到leader更新時,follower會將資料持久化到磁碟;

(4)當follower寫到磁碟後,就會向leader傳送ack;

(5)當leader收到半數以上的follower向它傳送ack後,就向全部的follower傳送commit;

(6)leader並在本地commit訊息(commit的意思是就是這個訊息可對外讀了);

(7)當follower收到leader傳送的commit後,就會將磁碟裡的資料寫進記憶體資料庫,同時commit(每個follower都有記憶體資料庫,client去向follower請求資料時,都是通過記憶體資料庫讀取的)。同時每條訊息,都有乙個遞增的id

Zookeeper原子廣播Zab

zookeeper的原子廣播 zookeeper的核心是原子廣播,這個機制保證了各個server之間的同步。實現這個機制的協議叫做zab協議。zab協議有兩種模式,它們分別是恢復模式 選主 和廣播模式 同步 當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數serve...

關於Zookeeper的原子廣播和崩潰恢復

1.zab zookeeper atomic broadcast 是一套專門為zookeeper設計的用於原子廣播和崩潰恢復的協議 2.zab基於2pc演算法進行設計,利用了過半性和paxos演算法進行了改進 atomic broadcast 原子廣播 1.作用 保證資料一致性。強一致性 最終一致性...

IOS 廣播機制與 android 廣播機制對比

android下廣播機制的實現機制 1.傳送 context的 sendbroadcast實現,傳入intent即可,intent提供了攜帶很多基本型別等的方法,如果想傳遞複雜物件,應該實現parcelable介面,parcelable介面提供了物件序列化的一系列方法。2.接收 接收主要有兩種方法 ...