1. 程式人生 > >Zookeeper學習筆記.md

Zookeeper學習筆記.md

Zookeeper的功能

1、Zookeeper是什麼

Zookeeper是一個分散式,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,它是叢集的管理者,監視著叢集中各個節點的狀態,根據節點提交的反饋進行下一步的合理操作。最終將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。

Zookeeper提供了什麼

  1. 檔案系統
  2. 通知機制

檔案系統

每個子目錄項如 NameService 都被稱作為znode,和檔案系統一樣,我們能夠自由的增加、刪除znode,在一個znode下增加、刪除子znode,唯一的不同在於znode是可以儲存資料的。

  1. PERSISTENT-持久化目錄節點,客戶端與Zookeeper斷開連線後,該節點依然存在。
  2. PERSISTENT_SEQUENTIAL持久化順序編號目錄節點,斷開連線後,節點依舊存在,只是Zookeeper給該節點進行順序編號。
  3. EPHEMERAL-臨時目錄節點,斷開連線後,該節點被刪除。
  4. EPHEMERAL_SEQUENTIAL-臨時順序編號目錄節點,斷開連線後,只是Zookeeper給該節點進行順序編號。

Zookeeper的通知機制

客戶端註冊監聽它關心的目錄節點,當目錄節點發生變化(資料改變、被刪除、子目錄節點增加刪除)時,Zookeeper會通知客戶端。

Zookeeper做了什麼

  1. 命名服務(建立目錄,唯一的path)
  2. 配置管理
  3. 叢集管理
  4. 分散式鎖
  5. 佇列管理

配置管理

程式總是需要配置的,如果程式分散部署在多臺機器上,要逐個改變配置就變得困難。現在把這些配置全部放到zookeeper上去,儲存在 Zookeeper 的某個目錄節點中,然後所有相關應用程式對這個目錄節點進行監聽,一旦配置資訊發生變化,每個應用程式就會收到 Zookeeper 的通知,然後從 Zookeeper 獲取新的配置資訊應用到系統中。

叢集管理

  1. 是否有機器退出和加入、選舉master。

設計目的

1.最終一致性:client不論連線到哪個Server,展示給它都是同一個檢視,這是zookeeper最重要的效能。

2.可靠性:具有簡單、健壯、良好的效能,如果訊息被到一臺伺服器接受,那麼它將被所有的伺服器接受。

3.實時性:Zookeeper保證客戶端將在一個時間間隔範圍內獲得伺服器的更新資訊,或者伺服器失效的資訊。但由於網路延時等原因,Zookeeper不能保證兩個客戶端能同時得到剛更新的資料,如果需要最新資料,應該在讀資料之前呼叫sync()介面。

4.等待無關(wait-free):慢的或者失效的client不得干預快速的client的請求,使得每個client都能有效的等待。

5.原子性:更新只能成功或者失敗,沒有中間狀態。

6.順序性:包括全域性有序和偏序兩種:全域性有序是指如果在一臺伺服器上訊息a在訊息b前釋出,則在所有Server上訊息a都將在訊息b前被髮布;偏序是指如果一個訊息b在訊息a後被同一個傳送者釋出,a必將排在b前面。