zookeeper


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

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

一、zookeeper定義

zookeeper是一個針對大型分布式系統的可靠協調系統。

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

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

 

 

二、zookeeper的特點

1、 最終一致性:為客戶端展示同一視圖。

2、可靠性:如果一條消息被一台服務器接受,那么它將被所有服務器接受。

3、實時性:zookeeper不能保證兩個客戶端同事得到剛剛更新的數據,如果需要更新數據,應該在讀數據之前調用sync()接口。

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

5、原子性:更新操作要么成功,要么失敗,沒有中間狀態。

6、順序性:對於所有server,同一消息發布順序一致。

三、zookeeper角色

四、leader選舉

1、leader選舉采用paxos協議

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

     如果有3個服務器,那么有兩個寫入成功,則數據寫入成功。

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

3、server數量一般為奇數,如3、5、7等。

     如果有3個服務器,最多允許1個掛掉。

     如果有4個服務器,最多同樣允許3個掛掉。

4、zookeeper 的寫入操作。

五、zookeeper數據模型。

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

2、每個節點在zookeeper中叫做znode,並且有一個唯一的路徑標識。

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

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

5、客戶端可以在節點上設置監視器(watch)。

6、znode不支持部分讀寫,需要一次性全部執行完成。

7、znode類型在創建時確定,並不能修改。

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

 

六、zookeeper統一命名服務。

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

1.1 類似於ip和域名的關系。

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

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

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

七、zookeeper--配置管理。

1、 分布式環境下,需要經常配置文件管理和同步。

1.1  y一個集群中,所有的節點配置和信息是一致的。

1.2 我們對配置文件修改后,需要盡快同步到各個節點中。

 

2  配置管理可以交給zookeeper實現。

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

2.2  各個節點監聽這個znode。

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

 

八、zookeeper集群管理。

1、分布式環境中,我們需要實時掌握每個節點的狀態。

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

2、k可交由zookeeper實現。

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

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

 

九、 zookeeper分布式通知與協調。

1、分布式環境中,一個服務經常需要知道他的子服務狀態,

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

1.2 resource manager需要知道nodemanager狀態

2、zookeeper實現心跳監測機制,實時信息推送,相當於一個發布/訂閱系統。

 

十、zookeeper分布式鎖。

1、zookeeper是強一致性的

2、實現鎖的獨占性。

3、控制鎖的時序。

 

十一、分布式隊列

分布式隊列有兩種

1、當一個隊列全部都聚齊時,這個隊列才可以用,否則這個隊列會一直等所有成員到達,這種成為同步隊列。

1.1 當一個job由所有的task組成時,所有的任務完成后,job才運行。

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

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM