1. 程式人生 > >Zookeeper-概述、安裝及原理

Zookeeper-概述、安裝及原理

1、Zookeeper 概述

1.1、概述

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

1.2、特點

1)Zookeeper:一個領導者(leader),多個跟隨者(follower)組成的叢集。

2)Leader 負責進行投票的發起和決議,更新系統狀態。

3)Follower 用於接收客戶請求並向客戶端返回結果,在選舉 Leader 過程中參與投票。

4)叢集中只要有半數以上節點存活,Zookeeper 叢集就能正常服務。

5)全域性資料一致:每個 server 儲存一份相同的資料副本,client 無論連線到哪個 server,數 據都是一致的。

6)更新請求順序進行,來自同一個 client 的更新請求按其傳送順序依次執行。

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

8)實時性,在一定時間範圍內,client 能讀到最新資料。

1.3、資料結構

ZooKeeper 資料模型的結構與 Unix 檔案系統很類似,整體上可以看作是一棵樹,每個 節點稱做一個 ZNode。每一個 ZNode 預設能夠儲存 1MB 的資料,每個 ZNode 都可以通過 其路徑唯一標識。

1.4、應用場景

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

1.4.1、統一命名服務

1.4.2、統一配置管理

1.4.3、統一叢集管理

1.4.4、伺服器節點動態上下線

1.4.5、軟負載均衡

1.5、下載地址

1)官網首頁:https://zookeeper.apache.org/

2)下載截圖:

2、Zookeeper 安裝

zookeeper安裝方式有三種:單機模式、偽叢集模式、叢集模式。

2.1、本地模式安裝部署

1)安裝前準備:

(1)安裝 jdk

(2)通過 SecureCRT 工具拷貝 zookeeper 到 linux 系統下

(3)修改 tar 包許可權

chmod u+x zookeeper-3.4.10.tar.gz

(4)解壓到指定目錄

tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

2)配置修改:

將/opt/module/zookeeper-3.4.10/conf 這個路徑下的 zoo_sample.cfg 修改為 zoo.cfg;

3)操作 zookeeper:

(1)啟動 zookeeper

(2)檢視程序是否啟動

(3)檢視狀態

(4)啟動客戶端

(5)退出客戶端

(6)停止 zookeeper

2.2、配置引數解讀

解讀zoo.cfg檔案中引數含義

1)tickTime=2000:通訊心跳數,Zookeeper伺服器心跳時間,單位毫秒

Zookeeper使用的基本時間,伺服器之間或客戶端與伺服器之間維持心跳的時間間隔, 也就是每個tickTime時間就會發送一個心跳,時間單位為毫秒。

它用於心跳機制,並且設定最小的session超時時間為兩倍心跳時間。(session的最小超時時間是2*tickTime)

2)initLimit=10:Leader和Follower初始通訊時限

叢集中的follower跟隨者伺服器與leader領導者伺服器之間初始連線時能容忍的最多心 跳數(tickTime的數量),用它來限定叢集中的Zookeeper伺服器連線到Leader的時限。

投票選舉新leader的初始化時間

Follower在啟動過程中,會從Leader同步所有最新資料,然後確定自己能夠對外服務的 起始狀態。

Leader允許Follower在initLimit時間內完成這個工作。

3)syncLimit=5:Leader 和 Follower 同步通訊時限

叢集中Leader與Follower之間的最大響應時間單位,假如響應超過syncLimit * tickTime, Leader認為Follwer死掉,從伺服器列表中刪除Follwer。

在執行過程中,Leader負責與ZK叢集中所有機器進行通訊,例如通過一些心跳檢測機 制,來檢測機器的存活狀態。

如果L發出心跳包在syncLimit之後,還沒有從F那收到響應,那麼就認為這個F已經不線上了。

4)dataDir:資料檔案目錄+資料持久化路徑

儲存記憶體資料庫快照資訊的位置,如果沒有其他說明,更新的事務日誌也儲存到資料 庫。

5)clientPort=2181:客戶端連線埠

監聽客戶端連線的埠

3、Zookeeper 內部原理

3.1、選舉機制

1)半數機制(Paxos 協議):叢集中半數以上機器存活,叢集可用。所以 zookeeper 適合裝在奇數臺機器上。

2)Zookeeper 雖然在配置檔案中並沒有指定 master 和 slave。但是,zookeeper 工作時, 是有一個節點為 leader,其他則為 follower,Leader 是通過內部的選舉機制臨時產生的。

3.2、監聽器原理

3.3、寫資料流程