1. 程式人生 > 其它 >Zookeeper 之 概述

Zookeeper 之 概述

  • 概述:

官網:https://zookeeper.apache.org/

官方文件:https://zookeeper.apache.org/doc/r3.7.0/index.html

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

  • Zookeeper工作機制

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

Zookeeper 相當於檔案系統 + 通知機制

作用:

1Dubbo 框架 springcloud 框架 zk 註冊中心 AService Bservice

2Hadoop Hbase 元件 叢集架構 zk 叢集管理者

3zk實現分散式鎖 redis分散式

ZooKeeper(動物園管理者) 簡稱 ZK,一個分散式的,開放原始碼的分散式應用程式協調服務,是GoogleChubby一個開源的實現,是HadoopHbase的重要元件。ZooKeeper 使用 Java 所編寫,但是支援 Java C 兩種程式語言。

  • Zookeeper 叢集特點

1Zookeeper:一個領導者(Leader),多個跟隨者(Follower

)組成的叢集。

2叢集中只要有半數以上節點存活,Zookeeper叢集就能正常服務(奇數部署)

3、全域性資料一致:每個Server儲存一份相同的資料副本,Client無論連線到哪個Server,資料都是一致的(資料也不會很大,只儲存重要的配置及路徑資料)

4、更新請求順序進行(針對每一個客戶端而言),來自同一個Client的更新請求按其傳送順序依次執行。

5、資料更新原子性,一次資料更新要麼成功,要麼失敗。

6、實時性,在一定時間範圍內,Client能讀到最新資料。

  • 資料結構

ZooKeeper資料模型的結構與Unix檔案系統很類似,整體上可以看作是一棵樹,每個節點稱做一 個ZNode

。每一個ZNode預設能夠儲存 1MB 的資料,每個ZNode都可以通過其路徑唯一標識

模型的特點:

1、每個子目錄如/node1都被稱作一個znode(節點)。這個 znode 是被它所在的路徑唯一標識

2znode 可以有子節點目錄,並且每個 znode 可以儲存資料

3znode 是有版本的,每個 znode 中儲存的資料可以有多個版本,也就是一個訪問路徑中可以儲存多份資料

4znode 可以被監控,包括這個目錄節點中儲存的資料的修改,子節點目錄的變化等,一旦變化可以通知設定監控的客戶端

  • 運用場景:

提供的服務包括:統一命名服務、統一配置管理、統一叢集管理、伺服器節點動態上下線、軟負載均衡等

  • 統一命名服務

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

例如:IP不容易記住,而域名容易記住

  • 統一配置管理

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

(1):一般要求一個叢集中,所有節點的配置資訊是一致的,比如 Kafka 叢集

(2):對配置檔案修改後,希望能夠快速同步到各個節點上。

2、配置管理可交由ZooKeeper實現

1):可將配置資訊寫入ZooKeeper上的一個Znode

2):各個客戶端伺服器監聽這個Znode

3):一 旦Znode中的資料被修改,ZooKeeper將通知各個客戶端伺服器

  • 統一叢集管理

1、分散式環境中,實時掌握每個節點的狀態是必要的。

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

2ZooKeeper可以實現實時監控節點狀態變化

1)可將節點資訊寫入ZooKeeper上的一個ZNode

2)監聽這個ZNode可獲取它的實時狀態變化。

  • 伺服器動態上下線

客戶端能實時洞察到伺服器上下線的變化

  • 軟負載均衡

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

。。。。

本文來自部落格園,作者:Vermeer,轉載請註明原文連結:https://www.cnblogs.com/Alay/p/15479112.html