應(yīng)用使用ZooKeeper客戶端使用ZooKeeper服務(wù),客戶端負(fù)責(zé)和集群的交互。
ZooKeeper集群有兩種模式:
- standalone模式
生產(chǎn)環(huán)境下,一般不使用這個模式。
集群中有一個獨(dú)立運(yùn)行的ZooKeeper節(jié)點(diǎn)。 -
quorum模式
包含多個ZooKeeper節(jié)點(diǎn)。
Session
- 客戶端會選取集群中某一個節(jié)點(diǎn)建立session。
- 客戶端可以主動關(guān)閉Session。
- 如果ZooKeeper節(jié)點(diǎn)沒有在session關(guān)聯(lián)的timeout時間內(nèi)收到客戶端消息,節(jié)點(diǎn)會主動關(guān)閉session。
-
客戶端如果發(fā)現(xiàn)連接的節(jié)點(diǎn)出錯,會自動和其他節(jié)點(diǎn)建立連接
quorum模式
quorum模式集群包含多個幾節(jié)點(diǎn)。
下圖所示,集群有三個節(jié)點(diǎn),節(jié)點(diǎn)1時leader,節(jié)點(diǎn)2和節(jié)點(diǎn)3時follower節(jié)點(diǎn)。
- leader幾點(diǎn)可以處理讀寫請求。
- follower只能處理讀請求。
-
follower在接到寫請求時,會將其轉(zhuǎn)發(fā)給leader節(jié)點(diǎn)處理。
數(shù)據(jù)一致性
- 全局線性寫入:先到達(dá)leader的寫請求仙貝處理,leader決定寫請求的執(zhí)行順序。
- 客戶端FIFO順序:來自給定客戶端的順序按照發(fā)送順序執(zhí)行。
3節(jié)點(diǎn)的quorum模式集群演示
- 配置文件
需要準(zhǔn)備三個配置文件,dataDir和clientPort需要配置不同的值。
三個配置文件的server.n部分是一樣的。
在server.1 = 127.0.0.1:3333:4444中,3333是用于quorum通信的端口,3334是用于leader選舉的端口。
還要為每個節(jié)點(diǎn)創(chuàng)建myid文件,3個節(jié)點(diǎn)的myid文件內(nèi)容分別為1、2和3。
-
啟動集群




