Zookeeper 之 概述
- 概述:
官網:https://zookeeper.apache.org/
官方文件:https://zookeeper.apache.org/doc/r3.7.0/index.html
Zookeeper 是一個開源的分散式的,為分散式應用提供協調服務的 Apache 專案。
- Zookeeper工作機制
Zookeeper從設計模式角度來理解:是一個基於觀察者模式設計的分散式服務管理框架,它負責儲存和管理大家都關心的資料,然後接受觀察者的註冊,一旦這些資料的狀態發生變化,Zookeeper就將負責通知已經在Zookeeper上註冊的那些觀察者做出相應的反應。
Zookeeper 相當於檔案系統 + 通知機制
作用:
1、Dubbo 框架 springcloud 框架 zk 註冊中心 AService Bservice
2、Hadoop Hbase 元件 叢集架構 zk 叢集管理者
3、zk實現分散式鎖 redis分散式
ZooKeeper(動物園管理者) 簡稱 ZK,一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。ZooKeeper 使用 Java 所編寫,但是支援 Java 和 C 兩種程式語言。
- Zookeeper 叢集特點
1、Zookeeper:一個領導者(Leader),多個跟隨者(Follower
2、叢集中只要有半數以上節點存活,Zookeeper叢集就能正常服務(奇數部署)
3、全域性資料一致:每個Server儲存一份相同的資料副本,Client無論連線到哪個Server,資料都是一致的(資料也不會很大,只儲存重要的配置及路徑資料)
4、更新請求順序進行(針對每一個客戶端而言),來自同一個Client的更新請求按其傳送順序依次執行。
5、資料更新原子性,一次資料更新要麼成功,要麼失敗。
6、實時性,在一定時間範圍內,Client能讀到最新資料。
- 資料結構
ZooKeeper資料模型的結構與Unix檔案系統很類似,整體上可以看作是一棵樹,每個節點稱做一 個ZNode
模型的特點:
1、每個子目錄如/node1都被稱作一個znode(節點)。這個 znode 是被它所在的路徑唯一標識
2、znode 可以有子節點目錄,並且每個 znode 可以儲存資料
3、znode 是有版本的,每個 znode 中儲存的資料可以有多個版本,也就是一個訪問路徑中可以儲存多份資料
4、znode 可以被監控,包括這個目錄節點中儲存的資料的修改,子節點目錄的變化等,一旦變化可以通知設定監控的客戶端
- 運用場景:
提供的服務包括:統一命名服務、統一配置管理、統一叢集管理、伺服器節點動態上下線、軟負載均衡等
- 統一命名服務
在分散式環境下,經常需要對應用/服務進行統一命名,便於識別。
例如:IP不容易記住,而域名容易記住
- 統一配置管理
1、分散式環境下,配置檔案同步非常常見重要的
(1):一般要求一個叢集中,所有節點的配置資訊是一致的,比如 Kafka 叢集
(2):對配置檔案修改後,希望能夠快速同步到各個節點上。
2、配置管理可交由ZooKeeper實現
(1):可將配置資訊寫入ZooKeeper上的一個Znode
(2):各個客戶端伺服器監聽這個Znode
(3):一 旦Znode中的資料被修改,ZooKeeper將通知各個客戶端伺服器
- 統一叢集管理
1、分散式環境中,實時掌握每個節點的狀態是必要的。
(1)可根據節點實時狀態做出一些調整。
2、ZooKeeper可以實現實時監控節點狀態變化
(1)可將節點資訊寫入ZooKeeper上的一個ZNode。
(2)監聽這個ZNode可獲取它的實時狀態變化。
- 伺服器動態上下線
客戶端能實時洞察到伺服器上下線的變化
- 軟負載均衡
在Zookeeper中記錄每臺伺服器的訪問數,讓訪問數最少的伺服器去處理最新的客戶端請求
。。。。
本文來自部落格園,作者:Vermeer,轉載請註明原文連結:https://www.cnblogs.com/Alay/p/15479112.html