zookeeper

https://www.cnblogs.com/felixzh/p/5869212.htmlhtml

https://www.w3cschool.cn/zookeeper/zookeeper_overview.htmlnode

1、zookeeper定義linux

zookeeper是一個針對大型分佈式系統的可靠協調系統。服務器

1.1 它的功能包括:配置維護,名字服務,分佈式同步、組服務等。數據結構

1.2 它的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。分佈式

 

 

2、zookeeper的特色性能

一、 最終一致性:爲客戶端展現同一視圖。server

二、可靠性:若是一條消息被一臺服務器接受,那麼它將被全部服務器接受。htm

三、實時性:zookeeper不能保證兩個客戶端同事獲得剛剛更新的數據,若是須要更新數據,應該在讀數據以前調用sync()接口。blog

四、等待無關(wait-free):慢的或者失效的client不干預快速的client的請求。

五、原子性:更新操做要麼成功,要麼失敗,沒有中間狀態。

六、順序性:對於全部server,同一消息發佈順序一致。

3、zookeeper角色

4、leader選舉

一、leader選舉採用paxos協議

二、paxos核心思想是:當多數server寫成功,那麼數據則寫入成功。

     若是有3個服務器,那麼有兩個寫入成功,則數據寫入成功。

     若是有4個或者5個服務器,有3個寫成功,則數據寫成功。

三、server數量通常爲奇數,如三、五、7等。

     若是有3個服務器,最多容許1個掛掉。

     若是有4個服務器,最多一樣容許3個掛掉。

四、zookeeper 的寫入操做。

5、zookeeper數據模型。

一、zookeeper  提供一個層次化目錄結構,命名規範符合常規linux文件目錄命名規範。

二、每一個節點在zookeeper中叫作znode,而且有一個惟一的路徑標識。

三、znode有兩種數據結構,短暫的(ephemeral)和持久的(persistent),節點包含數據和子節點。

四、znode數據包含多個版本。

五、客戶端能夠在節點上設置監視器(watch)。

六、znode不支持部分讀寫,須要一次性所有執行完成。

七、znode類型在建立時肯定,並不能修改。

八、znode有四種類型目錄節點,persistent, persistent_sequential,  ephemeal,  ephemeal_sequential

 

6、zookeeper統一命名服務。

一、在分佈式環境下,常常須要對應用/服務統一命名,便於識別不通服務。

1.1 相似於ip和域名的關係。

1.2 經過名稱來獲取資源或者服務的地址信息。

2 按照層次組織服務/應用名稱。

2.1 它能夠將服務名稱以及地址名稱寫到zookeeper中,客戶端經過服務名稱獲取服務列表。、

7、zookeeper--配置管理。

一、 分佈式環境下,須要常常配置文件管理和同步。

1.1  y一個集羣中,全部的節點配置和信息是一致的。

1.2 咱們對配置文件修改後,須要儘快同步到各個節點中。

 

2  配置管理能夠交給zookeeper實現。

2.1  可將配置文件寫入到一個znode中。

2.2  各個節點監聽這個znode。

2.3  一旦znode的配置文件被修改,zookeeper將通知到其它各個znode

 

8、zookeeper集羣管理。

一、分佈式環境中,咱們須要實時掌握每一個節點的狀態。

1.1 可根據節點狀態實時作出一些調整。

二、k可交由zookeeper實現。

2.1 可將zookeeper節點信息寫入到一個znode中。

2.2 監聽這個節點的實時變化。

 

9、 zookeeper分佈式通知與協調。

一、分佈式環境中,一個服務常常須要知道他的子服務狀態,

1.1 namenode需知道各個DataNode的狀態。

1.2 resource manager須要知道nodemanager狀態

二、zookeeper實現心跳監測機制,實時信息推送,至關於一個發佈/訂閱系統。

 

10、zookeeper分佈式鎖。

一、zookeeper是強一致性的

二、實現鎖的獨佔性。

三、控制鎖的時序。

 

11、分佈式隊列

分佈式隊列有兩種

一、當一個隊列所有都聚齊時,這個隊列才能夠用,不然這個隊列會一直等全部成員到達,這種成爲同步隊列。

1.1 當一個job由全部的task組成時,全部的任務完成後,job才運行。

1.2可爲job建立一個/job,而後在該目錄下,爲每一個完成task建立一個臨時的znode,當臨時節點的目錄數達到task總數時,則job表示完成。

二、隊列實現FIFO模式,實現生產者和消費者模型。

 

相關文章
相關標籤/搜索