ZooKeeper 是一個開源的分佈式,它的設計目標是將那些複雜且容易出錯的分佈式協同服務封裝起來,抽象出一個高效可靠的原語集,並以一系列簡單的接口提供個用戶使用。html
ZooKeeper 有幾大特徵:node
ZooKeeper 的理解和使用成本都很低,它提供的是一種層級式的命名空間,這一點和標準的文件系統相似。apache
ZooKeeper 服務能夠支持集羣模式,而且可以輕鬆擴展,客戶端能夠鏈接到任意一個服務器,都可以得到服務。bash
ZooKeeper 的節點是能夠保證有序的。每個更新操做都會被標記一個序號,ZooKeeper 執行的時候會按照順序執行。服務器
ZooKeeper 在讀多寫少的應用場景中能夠實現快速響應。這是由於 ZooKeeper 自己的部署架構是主從模式,主節點能夠響應讀寫請求,而從節點只能響應讀請求。當讀寫比例大於10:1時,ZooKeeper 就能夠利用擴展能力改善集羣的響應速度。session
介紹完了 ZooKeeper 的總體狀況,咱們再來看看 ZooKeeper 的另外一個比較重要的概念——節點(Node)。架構
ZooKeeper 的節點叫作Znode,能夠分爲兩種:一種是持久性的,一種是臨時性的。每個 Znode 均可以存儲數據,Znode 的更新是以版本更新的形式迭代的。所以,客戶端接收數據的同時還會接收到版本信息。app
ZooKeeper 臨時節點的生命週期是與 session 相關的,當 session 處於活躍狀態時,臨時節點會一直存在,當 session 消亡時,臨時節點會被刪除。分佈式
ZooKeeper 客戶端在和 Server 端進行鏈接的時候,會建立一個 session,客戶端能夠主動關閉 session。當 ZooKeeper 服務端節點沒有在指定時間內收到客戶端消息的話,服務端也會關閉 session。若是創建鏈接出錯,ZooKeeper 客戶端也會自動和其餘服務端節點嘗試創建新的鏈接。設計
ZooKeeper 的安裝方式很是簡單,首先到官網下載 ZooKeeper 的安裝包,而後解壓安裝包。
接着是修改配置文件,進入目錄apache-zookeeper-3.6.2-bin/conf
,從 zoo_sample.cfg 文件複製出來一個名爲 zoo.cfg 的配置文件,修改dataDir=/data/zookeeper
,這個目錄用於存儲 ZooKeeper 的數據。配置好以後,咱們就能夠啓動 ZooKeeper 了,不過爲了更好的使用 ZooKeeper 命令,咱們把 ZooKeeper 相關命令配置到 PATH 中。
如今就能夠啓動 ZooKeeper 了。只須要使用下面這個命令便可。
zkServer.sh start
啓動以後,咱們來看一下 ZooKeeper 有沒有報錯,咱們來到 ZooKeeper 目錄下的 logs 目錄,輸入命令
grep -E -i "((exception)|(error))" *
若是沒有輸出,說明 ZooKeeper 啓動沒有報錯。
接着查看對2181端口的監聽
netstat -an | grep 2181
正常監聽的話,咱們就可使用客戶端進行鏈接了。
在確保 ZooKeeper 服務端啓動沒有問題後,咱們使用客戶端進行鏈接。
鏈接時會有上圖所示的日誌輸出。
鏈接好以後能夠輸入命令
ls -R /
這個命令用來查看 ZooKeeper 現有的節點。
/ /zookeeper /zookeeper/config /zookeeper/quota
最初只有幾個 ZooKeeper 自帶的目錄。
這裏可使用 create /app
命令來建立一個名爲 app 的目錄。
對於 ZooKeeper 的初印象到這裏就結束了,目前我已經對 ZooKeeper 有了一個大概的瞭解,而且可以順利在本機安裝 ZooKeeper,對於 ZooKeeper 的命令也有必定的瞭解。
後面咱們會對 ZooKeeper 常見的應用進行介紹。