基于Zookeeper的使用詳解
更多內(nèi)容請查看zookeeper官網(wǎng)
Zookper: 一種分布式應(yīng)用的協(xié)作服務(wù)Zookper是一種分布式的,開源的,應(yīng)用于分布式應(yīng)用的協(xié)作服務(wù)。它提供了一些簡單的操作,使得分布式應(yīng)用可以基于這些接口實(shí)現(xiàn)諸如同步、配置維護(hù)和分集群或者命名的服務(wù)。Zookper很容易編程接入,它使用了一個和文件樹結(jié)構(gòu)相似的數(shù)據(jù)模型??梢允褂肑ava或者C來進(jìn)行編程接入。
眾所周知,分布式的系統(tǒng)協(xié)作服務(wù)很難有讓人滿意的產(chǎn)品。這些協(xié)作服務(wù)產(chǎn)品很容易陷入一些諸如競爭選擇條件或者死鎖的陷阱中。Zookper的目的就是將分布式服務(wù)不再需要由于協(xié)作沖突而另外實(shí)現(xiàn)協(xié)作服務(wù)。
設(shè)計(jì)目標(biāo) Zookeeper是簡易的Zookeeper通過一種和文件系統(tǒng)很像的層級命名空間來讓分布式進(jìn)程互相協(xié)同工作。這些命名空間由一系列數(shù)據(jù)寄存器組成,我們也叫這些數(shù)據(jù)寄存器為znodes。這些znodes就有點(diǎn)像是文件系統(tǒng)中的文件和文件夾。和文件系統(tǒng)不一樣的是,文件系統(tǒng)的文件是存儲在存儲區(qū)上的,而zookeeper的數(shù)據(jù)是存儲在內(nèi)存上的。同時(shí),這就意味著zookeeper有著高吞吐和低延遲。
Zookeeper實(shí)現(xiàn)了高性能,高可靠性,和有序的訪問。高性能保證了zookeeper能應(yīng)用在大型的分布式系統(tǒng)上。高可靠性保證它不會由于單一節(jié)點(diǎn)的故障而造成任何問題。有序的訪問能保證客戶端可以實(shí)現(xiàn)較為復(fù)雜的同步操作。
Zookeeper是可重用的ZooKeeper Service

組成Zookeeper的各個服務(wù)器必須要能相互通信。他們在內(nèi)存中保存了服務(wù)器狀態(tài),也保存了操作的日志,并且持久化快照。只要大多數(shù)的服務(wù)器是可用的,那么Zookeeper就是可用的。
客戶端連接到一個Zookeeper服務(wù)器,并且維持TCP連接。并且發(fā)送請求,獲取回復(fù),獲取事件,并且發(fā)送連接信號。如果這個TCP連接斷掉了,那么客戶端可以連接另外一個服務(wù)器。
Zookeeper是有序的Zookeeper使用數(shù)字來對每一個更新進(jìn)行標(biāo)記。這樣能保證Zookeeper交互的有序。后續(xù)的操作可以根據(jù)這個順序?qū)崿F(xiàn)諸如同步操作這樣更高更抽象的服務(wù)。
Zookeeper是高效的Zookeeper的高效更表現(xiàn)在以讀為主的系統(tǒng)上。Zookeeper可以在千臺服務(wù)器組成的讀寫比例大約為10:1的分布系統(tǒng)上表現(xiàn)優(yōu)異。
數(shù)據(jù)結(jié)構(gòu)和分等級的命名空間Zookeeper的命名空間的結(jié)構(gòu)和文件系統(tǒng)很像。一個名字和文件一樣使用/的路徑表現(xiàn),zookeeper的每個節(jié)點(diǎn)都是被路徑唯一標(biāo)識
ZooKeeper's Hierarchical Namespace

下圖顯示了ZooKeeper服務(wù)的高級組件服務(wù)。除了請求處理器,Zookeeper服務(wù)器組的每個服務(wù)器復(fù)制他們自己的每個組件。
ZooKeeper Components

replicated database是一個存儲在內(nèi)存中的包含整個數(shù)據(jù)樹的結(jié)構(gòu)。所有的更新操作都做日志到硬盤上了。并且寫操作在作用在數(shù)據(jù)庫的時(shí)候會序列化存儲到硬盤上。
每個ZooKeeper服務(wù)器都連接了許多個客戶端??蛻舳诉B接到一個服務(wù)器來提交請求。
相關(guān)文章
php+croppic.js實(shí)現(xiàn)剪切上傳圖片功能
最近做項(xiàng)目遇到這樣的需求,需要實(shí)現(xiàn)裁剪圖片上傳,接下來通過本文給大家分享基于php+croppic.js實(shí)現(xiàn)剪切上傳圖片功能,需要的朋友可以參考下2018-08-08
IOS蘋果AppStore內(nèi)購付款的服務(wù)器端php驗(yàn)證方法(使用thinkphp)
這篇文章主要介紹了IOS蘋果AppStore內(nèi)購付款的服務(wù)器端php驗(yàn)證方法(使用thinkphp),需要的朋友可以參考下2022-12-12
Joomla數(shù)據(jù)庫操作之JFactory::getDBO用法
這篇文章主要介紹了Joomla數(shù)據(jù)庫操作之JFactory::getDBO用法,實(shí)例分析了Joomla靜態(tài)類JFactory使用getDBO取得數(shù)據(jù)庫對象的相關(guān)操作技巧,需要的朋友可以參考下2016-05-05
PHP SPL標(biāo)準(zhǔn)庫之?dāng)?shù)據(jù)結(jié)構(gòu)堆(SplHeap)簡單使用實(shí)例
這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫之?dāng)?shù)據(jù)結(jié)構(gòu)堆(SplHeap)簡單使用實(shí)例,本文還同時(shí)講解了最大堆(SplMaxHeap)、最小堆(SplMinHeap)的相關(guān)知識,需要的朋友可以參考下2015-05-05

