zookeeper學習之路二

2021-07-27 10:45:15 字數 820 閱讀 1067

zookeeper 是以fast paxos演算法為基礎的,並做了一些優化,解決了活鎖(有多個交錯提交情況時,會出現相互排斥無法成功提交)的問題。

zookeeper 基本運轉流程,

1. 選舉 leader

2. 同步資料

3. 選舉 leader 標準的一致性

4. leader 要有最高的 zxid(事務id號)

5. 集群中大多數機器得到響應並 follow 選舉出的 leader

zookeeper 集群是以宕機個數過半才會讓整個集群宕機的,所以部署奇數個節點為佳,隨著部署節點的增加服務可靠性就越高。

恢復模式和廣播模式]

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

它們分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰後,zab 就進入了恢復模式,當領導者被選舉出來,

且大多數 server 完成了和 leader 的狀態同步以後,恢復模式就結束了。狀態同步保證了 leader 和 server 具有相同的系統狀態。

[事務順序的一致性]

為了保證事務的順序一致性,zookeeper 採用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上了 zxid。

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

[每個server 在工作過程中有三種狀態]

ZooKeeper學習筆記(二)

2.將解壓後的zookeeper複製出2份,將這三分分別命名 如 z1,z2,z3 ticktime 2000 initlimit 10 synclimit 5 datadir data clientport 2181 server.1 127.0.0.1 2222 2223 server.2 12...

zookeeper(二)zookeeper單機啟動

其實都不用想單機邏輯肯定非常簡單,畢竟一台伺服器,很多都很好實現。整個流程圖如下 其中箭頭中的數字是呼叫的順序,橫向表示在同乙個方法中,而黃色區域為該方法的注釋。單機啟動的整個體系就是這個展開的。從啟動項就能明白,我們指定了配置檔案啟動,所以肯定是把配置檔案的引數解析出來,然後載入到記憶體中,最後初...

JS學習之路(二)

最近一直在ie6上除錯頁面的相容性,因此,給出一些自己常用的方法 1 對於頁面上按鈕跳不見,或位置不對,一般要修改css中的position,設定position absolute,一般就能夠解決,但是有時候,在絕對位置下,頁面變寬了,可以再修改width,讓它在可視範圍內 2 ie6上修改樣式時,...