前言
ZooKeeper是一個分布式服務協調架構,可以用來維護分布式配置資訊、服務注冊中心、實作分布式鎖等。在Hbase、Hadoop、kafka等項目中都有廣泛的應用。随着分布式、微服務的普及,ZooKeeper已經成為我們日常開發工作中無法繞過的一環,本文将從安裝配置到最基礎的使用入手,對其進行介紹。
安裝部署
下載下傳
在
http://mirror.bit.edu.cn/apache/zookeeper/stable/下載下傳推薦的stable版本。可以直接下載下傳編譯好的bin檔案。
目前最新的stable版本是3.5.5
解壓
将下載下傳的檔案解壓至工作目錄,我的工作目錄是/var/workspace/zookeeper
tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz -C /var/workspace/zookeeper
配置
此時如果直接啟動zookeeper是會失敗的,提示找不到zoo.cfg檔案。
需要我們把conf目錄中提供的zoo_sample.cfg示例配置檔案,複制為一份zoo.cfg,zoo.cfg是預設的啟動配置檔案
cp ../conf/zoo_sample.cfg ../conf/zoo.cfg
啟動
預設啟動,使用config/zoo.cfg配置檔案在背景啟動
前台啟動,會将啟動日志列印在終端。終端關閉後服務也關閉。
通路
使用zcCli.sh -server host:port 通路ZooKeeper伺服器。
不加-server參數時,預設使用127.0.0.1:2181
使用
ZooKeeper使用類似資源檔案目錄的方式來管理節點,每個節點可以存儲資料。
ZooKeeper有四種不同類型的節點:
- PERSISTENT:持久化節點,除非手動删除,否則會永久儲存
- PERSISTENT_SEQUENTIAL:持久化順序節點,除非手動删除,否則會永久儲存。預設會在使用者設定的節點名稱後,順序的增加十位的數字字元串。如 test_0000000001
- EPHEMERAL:臨時節點,在session結束後,臨時節點會被自動删除。
- EPHEMERAL_SEQUENTIAL:臨時順序節點,在session結束後,臨時節點會被自動删除。預設會在使用者設定的節點名稱後,順序的增加十位的數字字元串。如 test_0000000001
help
使用zkCli.sh連接配接到服務端後,可以使用help展示常見指令的使用方式。
ls
列出某個路徑下的節點
create
可以使用create {path} 建立節點。
使用 create -s {path} 可以建立有序節點,後面添加十位遞增的數字字尾。
使用 create -e 建立臨時節點,當斷開連接配接後,臨時節點會被删除。
set/get
ZooKeeper的節點可以存儲資料,使用set 方法将資料存在節點中。
使用get 方法,從節點中擷取資料。
set -v {currentVersion} {path} {data}
節點的資料每次更新時,都會遞增,如果要更新節點,請使用上面的指令修改,如果currentVersion不是最新版本時,則更新失敗,類似樂觀鎖CAS。
delete
可以通過delete删除節點。
總結
通過上面的學習,我們已經學會了ZooKeeper最基本的安裝部署及使用方式。需要牢記:
- ZooKeeper的節點是類似檔案系統的管理方式
- Zookeeper有四種節點類型,臨時節點會在會話斷開後自動删除,順序節點字尾序号會自動遞增
- set資料時,可以指定版本号,版本号與目前版本一緻時才更新。這種樂觀鎖的更新方式,可以避免并發時資料被覆寫
更多文章
見我的部落格:
https://nc2era.comwritten by
AloofJr,轉載請注明出處