首頁技術(shù)文章正文

云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(2)

更新時(shí)間:2017-09-01 來源:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院 瀏覽量:

2-1體系架構(gòu) 

ZooKeeper的體系架構(gòu)如下圖所示:


客戶端可以連接到每個(gè)Server,每個(gè)Server的數(shù)據(jù)完全相同,每個(gè)Follower都和Leader有連接,接受Leader的數(shù)據(jù)更新操作,Server記錄事務(wù)日志和快照到持久存儲(chǔ);過半數(shù)Server可用,整體服務(wù)就可用。Leader只有一個(gè),宕機(jī)后會(huì)重新選出一個(gè)Leader。


2-2 ZooKeeper基本特性

強(qiáng)一致性:Client不論連接到哪個(gè)Server,展示給它的都是同一個(gè)視圖,這是ZooKeeper最重要的功能。


可靠性:具有簡單、健壯、良好的性能,如果消息Message被一臺(tái)服務(wù)器接受,那么它將被所有的服務(wù)器接受。


實(shí)時(shí)性:ZooKeeper保證客戶端在一個(gè)時(shí)間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息??紤]到網(wǎng)絡(luò)延時(shí)等原因,在需要最新數(shù)據(jù)時(shí),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync實(shí)現(xiàn)。


等待無關(guān)(wait-free):慢的或者失效的Client不得干預(yù)快速的Client的請(qǐng)求,使得每個(gè)Client都能有效的等待。


原子性:更新只能成功或者失敗,沒有中間狀態(tài)。


順序性:包括全局有序和偏序兩種。


2-3 ZooKeeper數(shù)據(jù)模型

ZooKeeper的數(shù)據(jù)模型基于樹型結(jié)構(gòu)的命名空間,與文件系統(tǒng)類似,如下所示:



該數(shù)據(jù)模型有如下幾個(gè)特點(diǎn):

該數(shù)據(jù)模型是分布式的,數(shù)據(jù)節(jié)點(diǎn)被稱為znode,客戶端可以連接到每個(gè)Server,每個(gè)Server的數(shù)據(jù)完全相同;


znode可以是臨時(shí)節(jié)點(diǎn)也可以是持久性的。對(duì)應(yīng)臨時(shí)節(jié)點(diǎn),一旦創(chuàng)建znode的客戶端與服務(wù)器失去聯(lián)系,這個(gè) znode 也將自動(dòng)刪除,ZooKeeper 的客戶端和服務(wù)器通信采用長連接方式,每個(gè)客戶端和服務(wù)器通過心跳來保持連接,這個(gè)連接狀態(tài)稱為 session,如果 znode 是臨時(shí)節(jié)點(diǎn),這個(gè)session 失效,znode 也就刪除了。


znode可以被監(jiān)控,包括這個(gè)目錄節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)的修改,子節(jié)點(diǎn)目錄的變化等,一旦變化可以通知設(shè)置監(jiān)控的客戶端,這個(gè)是 ZooKeeper 的核心特性,ZooKeeper 的很多功能都是基于這個(gè)特性實(shí)現(xiàn)的,通過這個(gè)特性可以實(shí)現(xiàn)的功能包括配置的集中管理,集群管理,分布式鎖等。




本文版權(quán)歸黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com/ 
分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!