ZooKeeper是一個開源的分布式協(xié)調(diào)器,是一個典型的分布式數(shù)據(jù)一致性解決方案,其設(shè)計(jì)目的是將復(fù)雜且容易出錯的分布式一致性服務(wù)封裝起來,構(gòu)成一個高效可靠的系統(tǒng),并以一系列簡單易用的原子操作提供給用戶使用。
ZooKeeper 主要特性
zookeeper本身就是一個分布式程序,只要半數(shù)以上節(jié)點(diǎn)存活,zookeeper就能正常服務(wù)。
為了保證高可用,通常以集群的形態(tài)來部署zookeeper,這樣只要集群中大部分機(jī)器可用,那么zookeeper本身就可用。
zookeeper將數(shù)據(jù)保存在內(nèi)存中,這保證了高吞吐和低延遲
zookeeper是高性能的,在讀多于寫的程序中尤其的高性能,因?yàn)閷憰?dǎo)致所有服務(wù)器間同步狀態(tài)。
zookeeper有臨時節(jié)點(diǎn)概念。當(dāng)創(chuàng)建臨時節(jié)點(diǎn)的客戶端會話保持活動,臨時節(jié)點(diǎn)就一直存在。而當(dāng)會話終結(jié)時,臨時節(jié)點(diǎn)就被刪除了。
zookeeper底層只提供了兩個功能。1 管理用戶程序提交的數(shù)據(jù), 2 為用戶程序提交的數(shù)據(jù)節(jié)點(diǎn)提供監(jiān)聽服務(wù)。
ZooKeeper 特點(diǎn)
ZooKeeper是以Fast Paxos算法為基礎(chǔ)的,Paxos 算法存在活鎖的問題,即當(dāng)有多個proposer交錯提交時,有可能互相排斥導(dǎo)致沒有一個proposer能提交成功,而Fast Paxos作了一些優(yōu)化,通過選舉產(chǎn)生一個leader (領(lǐng)導(dǎo)者),只有l(wèi)eader才能提交proposer,具體算法可見Fast Paxos。因此,要想弄懂ZooKeeper首先得對Fast Paxos有所了解。 [2]
ZooKeeper的基本運(yùn)轉(zhuǎn)流程:
1、選舉Leader。
2、同步數(shù)據(jù)。
3、選舉Leader過程中算法有很多,但要達(dá)到的選舉標(biāo)準(zhǔn)是一致的。
4、Leader要具有最高的執(zhí)行ID,類似root權(quán)限。
5、集群中大多數(shù)的機(jī)器得到響應(yīng)并接受選出的Leader。
推薦教程:《PHP》