碰見ZooKeeper:初識

0. 什麼是ZooKeeper

ZooKeeper 是一個開源的分佈式,它的設計目標是將那些複雜且容易出錯的分佈式協同服務封裝起來,抽象出一個高效可靠的原語集,並以一系列簡單的接口提供個用戶使用。html

ZooKeeper 有幾大特徵:node

易用

ZooKeeper 的理解和使用成本都很低,它提供的是一種層級式的命名空間,這一點和標準的文件系統相似。apache

可靠

ZooKeeper 服務能夠支持集羣模式,而且可以輕鬆擴展,客戶端能夠鏈接到任意一個服務器,都可以得到服務。bash

有序

ZooKeeper 的節點是能夠保證有序的。每個更新操做都會被標記一個序號,ZooKeeper 執行的時候會按照順序執行。服務器

快速

ZooKeeper 在讀多寫少的應用場景中能夠實現快速響應。這是由於 ZooKeeper 自己的部署架構是主從模式,主節點能夠響應讀寫請求,而從節點只能響應讀請求。當讀寫比例大於10:1時,ZooKeeper 就能夠利用擴展能力改善集羣的響應速度。session

ZooKeeper架構圖

介紹完了 ZooKeeper 的總體狀況,咱們再來看看 ZooKeeper 的另外一個比較重要的概念——節點(Node)。架構

ZooKeeper 的節點叫作Znode,能夠分爲兩種:一種是持久性的,一種是臨時性的。每個 Znode 均可以存儲數據,Znode 的更新是以版本更新的形式迭代的。所以,客戶端接收數據的同時還會接收到版本信息。app

ZooKeeper 臨時節點的生命週期是與 session 相關的,當 session 處於活躍狀態時,臨時節點會一直存在,當 session 消亡時,臨時節點會被刪除。分佈式

Session

ZooKeeper 客戶端在和 Server 端進行鏈接的時候,會建立一個 session,客戶端能夠主動關閉 session。當 ZooKeeper 服務端節點沒有在指定時間內收到客戶端消息的話,服務端也會關閉 session。若是創建鏈接出錯,ZooKeeper 客戶端也會自動和其餘服務端節點嘗試創建新的鏈接。設計

1. 安裝 ZooKeeper

ZooKeeper 的安裝方式很是簡單,首先到官網下載 ZooKeeper 的安裝包,而後解壓安裝包。

接着是修改配置文件,進入目錄apache-zookeeper-3.6.2-bin/conf,從 zoo_sample.cfg 文件複製出來一個名爲 zoo.cfg 的配置文件,修改dataDir=/data/zookeeper,這個目錄用於存儲 ZooKeeper 的數據。配置好以後,咱們就能夠啓動 ZooKeeper 了,不過爲了更好的使用 ZooKeeper 命令,咱們把 ZooKeeper 相關命令配置到 PATH 中。

啓動 ZooKeeper

如今就能夠啓動 ZooKeeper 了。只須要使用下面這個命令便可。

zkServer.sh start

啓動以後,咱們來看一下 ZooKeeper 有沒有報錯,咱們來到 ZooKeeper 目錄下的 logs 目錄,輸入命令

grep -E -i "((exception)|(error))" *

若是沒有輸出,說明 ZooKeeper 啓動沒有報錯。

接着查看對2181端口的監聽

netstat -an | grep 2181

正常監聽的話,咱們就可使用客戶端進行鏈接了。

體驗 ZooKeeper 命令

在確保 ZooKeeper 服務端啓動沒有問題後,咱們使用客戶端進行鏈接。

zkCli

鏈接時會有上圖所示的日誌輸出。

鏈接好以後能夠輸入命令

ls -R /

這個命令用來查看 ZooKeeper 現有的節點。

/
/zookeeper
/zookeeper/config
/zookeeper/quota

最初只有幾個 ZooKeeper 自帶的目錄。

這裏可使用 create /app 命令來建立一個名爲 app 的目錄。

2. 小結

對於 ZooKeeper 的初印象到這裏就結束了,目前我已經對 ZooKeeper 有了一個大概的瞭解,而且可以順利在本機安裝 ZooKeeper,對於 ZooKeeper 的命令也有必定的瞭解。

後面咱們會對 ZooKeeper 常見的應用進行介紹。

相關文章
相關標籤/搜索