1. Zookeeper-簡介
阿新 • • 發佈:2018-12-14
Zookeeper 是一個開源的,為分散式專案提供協調服務的專案。
1.1 Zookeeper的工作機制
Zookeeper 從設計模式角度來理解,是一個基於觀察者模式設計的分散式服務管理框架,他負責儲存和管理大家都關心的資料,然後接受觀察者的註冊,一旦資料的狀態發生變化,Zookeeper 就將負責通知已經在 Zookeeper 註冊的觀察者做出相應的反應。
1.2 Zookeeper 的特點
- Zookeeper:一個領導者(leader),多個跟隨者(follower)組成的叢集。
- 叢集中只要有半數以上的節點存活,Zookeeper 就可以正常服務。
- 全域性資料一致:沒個server儲存一份相同的資料副本,client 無論連線到那個 server,資料都是一致的。
- 更新請求順序進行,來自同一個 client 的更新請求按其傳送順序一次執行。
- 事務更新原子性,一次資料更新要麼成功,要麼失敗。(事務)
- 實時性,在一定時間範圍內,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 中記錄每臺伺服器的訪問數,讓訪問數最少的伺服器去處理最新的客戶端請求