Zookeeper理解

1 Zookeeper介紹

        Zookeeper是一個開源分布式應(yīng)用協(xié)調(diào)服務(wù)。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站制作、新巴爾虎左網(wǎng)絡(luò)推廣、小程序定制開發(fā)、新巴爾虎左網(wǎng)絡(luò)營銷、新巴爾虎左企業(yè)策劃、新巴爾虎左品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供新巴爾虎左建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.muchs.cn

簡單來說,zookeeper = 通知機制 + 文件系統(tǒng)

 zookeeper 為什么是奇數(shù)    

        zookeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的。也就是說如果有2個zookeeper,那么只要有1個死了zookeeper就不能用了,因為1沒有過半,所以2個zookeeper的死亡容忍度為0;同理,要是有3個zookeeper,一個死了,還剩下2個正常的,過半了,所以3個zookeeper的容忍度為1。

   

Zookeeper理解

1.1 主要角色

來自服務(wù)器端的

Zookeeper理解

>> 領(lǐng)導(dǎo)者(leader),負責(zé)進行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)(數(shù)據(jù)同步),發(fā)送心跳。

>> 學(xué)習(xí)者(learner),包括跟隨者(follower)和觀察者(observer)。

   >> 跟隨者(follower),用于接受客戶端請求、向客戶端返回結(jié)果,在選主過程中參與投票。

     >> 觀察者(Observer),可以接受客戶端請求,將寫請求轉(zhuǎn)發(fā)給leader,但observer不參加投票過程,只同步leader的狀態(tài),observer的目的是為了擴展系統(tǒng),提高讀取速度。

Zookeeper理解

1)leader失效后會在follower中重新選舉新的leader

2)每個follower都和leader有連接,接受leader的數(shù)據(jù)更新操作

3)客戶端可以連接到每個server,每個server的數(shù)據(jù)完全相同

4)每個節(jié)點的服務(wù)Server,記錄事務(wù)日志和快照到持久存儲

Zookeeper理解

Zookeeper理解

1.2 工作原理

        Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現(xiàn)這個機制的協(xié)議叫做Zab協(xié)議。

        Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當(dāng)服務(wù)啟動或者在領(lǐng)導(dǎo)者崩潰后,Zab就進入了恢復(fù)模式,恢復(fù)模式不接受客戶端請求,當(dāng)領(lǐng)導(dǎo)者被選舉出來,且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。

1.2.1 Zookeeper節(jié)點數(shù)據(jù)操作流程

1)寫操作

Zookeeper理解

Zookeeper理解

發(fā)起提案 proposal

quorum 法定人數(shù)

1)在Client向Follwer 或 Observer 發(fā)出一個寫的請求;

2)Follwer 或 Observer 把請求發(fā)送給Leader;

3)Leader接收到以后向所有follower發(fā)起提案;

4)Follwer收到提案后執(zhí)行寫操作,然后把操作結(jié)果發(fā)送給Leader;

5)當(dāng)多數(shù)follower返回提案結(jié)果后,leader會commit該提議,通知其他Follower 和 Observer 同步信息;

6)Follwer 或Observer把請求結(jié)果返回給Client。

2)讀操作

1)在Client向Follwer 或 Observer 發(fā)出一個讀的請求;

2)Follwer 或 Observer 把請求結(jié)果返回給Client;

1.3 數(shù)據(jù)模型

1)ZooKeeper本質(zhì)上是一個分布式的小文件存儲系統(tǒng);

2)Zookeeper表現(xiàn)為一個分層的文件系統(tǒng)目錄樹結(jié)構(gòu)(不同于文件系統(tǒng)的是,節(jié)點可以有自己的數(shù)據(jù),而文件系統(tǒng)中的目錄節(jié)點只有子節(jié)點),每個節(jié)點可以存少量的數(shù)據(jù)。

3)每個節(jié)點稱做一個ZNode。每個ZNode都可以通過其路徑唯一標(biāo)識。

4)圓形節(jié)點可以含有子節(jié)點,多邊形節(jié)點不能含有子節(jié)點。一個節(jié)點對應(yīng)一個應(yīng)用,節(jié)點存儲的數(shù)據(jù)就是應(yīng)用需要的信息,比如HA狀態(tài)active、standby。

Zookeeper理解

Zookeeper理解

1.4 主要特點

最終一致性:client不論連接到哪個Server,展示給它都是同一個視圖,這是zookeeper最重要的特性;

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

實時性:Zookeeper保證客戶端將在一個時間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息。 但由于網(wǎng)絡(luò)延時等原因,Zookeeper不能保證兩個客戶端能同時得到剛更新的數(shù)據(jù),如果需要最新數(shù)據(jù),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync()接口;

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

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

順序性:按照客戶端發(fā)送請求的順序更新數(shù)據(jù);

1.5 應(yīng)用場景

數(shù)據(jù)發(fā)布與訂閱

    應(yīng)用配置集中到節(jié)點上,應(yīng)用啟動時主動獲取,并在節(jié)點上注冊一個watcher,每次配置更新都會通知到應(yīng)用。

Zookeeper理解

發(fā)布訂閱模式

Zookeeper理解

Zookeeper理解

命名空間服務(wù)

    分布式命名服務(wù),創(chuàng)建一個節(jié)點后,節(jié)點的路徑就是全局唯一的,可以作為全局名稱使用。

分布式通知/協(xié)調(diào)

    不同的系統(tǒng)都監(jiān)聽同一個節(jié)點,一旦有了更新,另一個系統(tǒng)能夠收到通知。

分布式鎖

    Zookeeper能保證數(shù)據(jù)的強一致性,用戶任何時候都可以相信集群中每個節(jié)點的數(shù)據(jù)都是相同的。一個用戶創(chuàng)建一個節(jié)點作為鎖,另一個用戶檢測該節(jié)點,如果存在,代表別的用戶已經(jīng)鎖住,如果不存在,則可以創(chuàng)建一個節(jié)點,代表擁有一個鎖。

Zookeeper理解[][][]

集群管理

    每個加入集群的機器都創(chuàng)建一個節(jié)點,寫入自己的狀態(tài)。監(jiān)控父節(jié)點的用戶會收到通知,進行相應(yīng)的處理。離開時刪除節(jié)點,監(jiān)控父節(jié)點的用戶同樣會收到通知。

Zookeeper理解


分享文章:Zookeeper理解
標(biāo)題來源:http://www.muchs.cn/article24/ghjpje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站維護、服務(wù)器托管、Google搜索引擎優(yōu)化、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司