第一章 Zookeeper入門

1.1 概述

  Zookeeper是一個開源的分佈式的,爲分佈式應用提供協調服務的Apache項目。

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

Zookeeper=文件系統+通知機制(可以存放數據,有數據變化,可以通知註冊的人)

1.2 Zookeeper特點

在這裏插入圖片描述
1)Zokeeper:一個領導者(Leader),多個跟隨着(Follower)組成的集羣
2)集羣中只要有半數以上的節點存活,Zookeeper集羣就能正常服務
3) 全局數據一致,每個Server保存一份相同的數據副本,Client無論連接到哪個Server,數據都是一致的
4)更新請求順序進行,來自同一個Client的更新請求按其發送順序依次執行
5)數據更新原子性,一次數據更新要麼成功,要麼失敗
6)實時性,在一定時間範圍內,Client能讀到最新數據

1.3 數據結構

  Zookrrper數據模型的結構與Unix文件系統很類似,整體上可以看作是一棵樹,每個節點稱作一個zNode,每一個ZNode默認能夠儲存1MB的數據,每個ZNode都可以通過其路徑唯一標識。
在這裏插入圖片描述

1.4 應用場景

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

1.41 統一命名服務

  在分佈式環境下,經常需要對應用/服務進行統一命名,便於識別。
  例如:IP不容易記住,而域名容易記住
在這裏插入圖片描述
(只是舉個例子,並不式真實例子)在這裏將多個域名進行統一的命名服務,改名爲www.baidu.com這樣便於終端機進行記憶,當終端機訪問www.baidu.com的時候,Zookeeper會自動執行下面的域名。

1.4.2 統一配置管理

一、 分佈式環境下,配置文件同步非常常見
(1)一般要求一個集羣中,所有節點的配置信息是一致的,比如Kafka集羣
(2)對配置文件修改後,希望能夠快速同步到各個節點上

二、配置管理可交由ZooKeeper實現
(1)可將配置信息寫入ZooKeeper上的一個Znode,
(2)各個客戶端服務器監聽這個Znode
(3)一旦Znode中的數據被修改,ZooKeeper將通知各個客戶服務器
在這裏插入圖片描述

1.4.3 統一集羣管理

一、分佈式環境中,實時掌握每個節點的狀態是必要的
(1)可根據節點實時狀態做出一些調整

二、Zookeeper可以實現實時監控節點狀態變化
(1)可將節點信息寫入ZooKeeper上的一個ZNode
(2)監聽這個ZNode可獲取它的實時狀態變化

在這裏插入圖片描述

1.4.4 服務器動態上下線

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

1.4.5 軟負載均衡

  在Zookeeper中記錄每臺服務器的訪問數,讓訪問數最少的服務器去處理最新的客戶端請求。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章