1. 程式人生 > >1. Zookeeper-簡介

1. Zookeeper-簡介

Zookeeper 是一個開源的,為分散式專案提供協調服務的專案。

1.1 Zookeeper的工作機制

Zookeeper 從設計模式角度來理解,是一個基於觀察者模式設計的分散式服務管理框架,他負責儲存和管理大家都關心的資料,然後接受觀察者的註冊,一旦資料的狀態發生變化,Zookeeper 就將負責通知已經在 Zookeeper 註冊的觀察者做出相應的反應。

1.2 Zookeeper 的特點

  1. Zookeeper:一個領導者(leader),多個跟隨者(follower)組成的叢集。
  2. 叢集中只要有半數以上的節點存活,Zookeeper 就可以正常服務。
  3. 全域性資料一致:沒個server儲存一份相同的資料副本,client 無論連線到那個 server,資料都是一致的。
  4. 更新請求順序進行,來自同一個 client 的更新請求按其傳送順序一次執行。
  5. 事務更新原子性,一次資料更新要麼成功,要麼失敗。(事務)
  6. 實時性,在一定時間範圍內,client 能讀到最新資料。

1.3 Zookeeper 的資料結構

zookeeper 資料模型的結構與 Unix 檔案系統類似,整體上可以看做一棵樹,沒個節點稱為一個ZNode。每個ZNode大概可以儲存1M的資料。每個ZNode都可以通過其路徑唯一標識。

1.4 Zookeeper 的應用場景

1.4.1 統一命名服務

在分散式環境下,經常需要對應用/服務進行統一命名,便於識別。

1.4.2 統一配置管理

1. 分散式環境下,配置檔案同步非常常見的

  • 一般要求一個叢集中,所有節點的配置資訊是一致的。
  • 對配置檔案修改後,希望能夠快速同步到各個節點上。

2. 配置管理可由 Zookeeper 實現

  • 可將配置資訊寫入 Zookeeper 的一個 ZNode 節點上。
  • 各個客戶端服務監聽這個 ZNode
  • 一旦 ZNode 中的資料被修改,Zookeeper 將通知各個客戶端的伺服器。

1.4.3 統一叢集管理

1. 分散式環境中,實時掌握沒個節點是非常必要的

  • 可根據節點實時狀態做出調整。

2. Zookeeper 可以實現實時監聽節點狀態變化

  • 可將節點資訊寫入 Zookeeper 上的一個 ZNode
  • 監聽這個ZNode 可獲取他實時狀態的變化

1.4.4 伺服器動態上下線

1.4.5 軟負載均衡

在 Zookeeper 中記錄每臺伺服器的訪問數,讓訪問數最少的伺服器去處理最新的客戶端請求