一.ZK簡述html
Zookeeper,它是一個分佈式程序的協調服務,它主要是用來解決分佈式應用中的一些數據管理問題,好比集羣管理,分佈式應用配置,分佈式鎖,服務註冊/發現等等。java
它是一個相似於文件系統的樹狀結構。每一個目錄被稱爲znode,能夠刪除目錄,添加子目錄這些操做,不一樣的是每一個znode上面都是存儲數據的,以下圖:node
客戶端能夠監聽這些目錄節點,當結點數據發生改變,節點被刪除,增長子節點時,zk會通知客戶端。以此來實現不少分佈式數據管理的操做。好比咱們把服務的一些配置數據放在某個節點上面,全部的該服務都監聽這個節點,一旦節點數據(配置)發生變化,全部的該服務都會收到通知,而後各自更新配置,就不用每一個服務都手動去更新配置了。apache
ZK的節點有四種類型的:windows
持久節點(PERSISTENT):客戶端與ZK斷開鏈接以後,節點依舊存在併發
持久序號節點(PERSISTENT_SEQUENTIAL):同持久節點,只是ZK會給該結點進行順序編號分佈式
臨時節點(EPHEMERAL):客戶端與ZK斷開鏈接以後,節點會被刪除spa
臨時序號節點(EPHEMERAL_SEQUENTIAL):同臨時節點,只是ZK會給該結點進行順序編號3d
2、安裝和配置htm
簡單有個認識以後,安裝來體驗一下:
ZK是java開發的,因此先要有JDK
https://zookeeper.apache.org/releases.html#download
下載解壓這個就贅述了
解壓以後的/conf目錄下面有默認的配置文件zoo_sample.cfg
重命名或者複製一份出來:cp zoo_sample.cfg zoo.cfg
而後去解壓後的bin目錄下面,執行zkServer.sh腳本 默認會使用zoo.cfg配置文件;或者指定配置文件啓動:./zkServer.sh start ../conf/zoo.cfg 若是是windows環境那麼就執行cmd的腳本就能夠了。
至此zk服務就啓動了,默認的端口號2181.
如今咱們再回來看看zk的一些配置信息(zoo.cfg文件):
tickTime=2000 zookeeper時間配置中的基本單位 (毫秒)
initLimit=10 容許follower初始化鏈接到leader最大時長,它表示tickTime時間倍數 即:initLimit*tickTime
syncLimit=5 容許follower與leader數據同步最大時長,它表示tickTime時間倍數
dataDir=/tmp/zookeeper 數據存儲目錄
clientPort=2181 對客戶端提供的端口號
maxClientCnxns=60 單個客戶端與zookeeper最大併發鏈接數
autopurge.snapRetainCount=3 保存的數據快照數量,以外的將會被清除
autopurge.purgeInterval=1 自動觸發清除快照任務時間間隔(超過autopurge.snapRetainCount配置的),小時爲單位。默認爲0,表示不自動清除。
3、體驗
先使用自帶客戶端來鏈接玩玩 bin目錄下面./zkCli.sh
鏈接以後可使用help查看指令
create [-s] [-e] [-c] [-t ttl] path [data] [acl] 建立節點 -s序號節點 -e臨時節點
Delete 刪除節點(有子節點不能刪除)
Deleteall 刪除節點(包含子節點)
Delquota [-n] [-b] 刪除配額(好比節點設置了數據大小限制) -n數量 -b 大小
get [-s] [-w] path 查看節點 -s包含狀態 -w添加監聽
getAcl [-s] path 獲取權限配置
History 查看歷史指令
listquota path 當前節點有哪些配額
ls [-s] [-w] [-R] path 查看全部子節點 -R遞歸查看全部子節點
removewatches path [-c|-d|-a] [-l] 刪除監聽
set [-s] [-v version] path data 修改數據
setAcl [-s] [-v version] [-R] path acl 添加/修改權限
setquota -n|-b val path 設置配額
stat [-w] path 查看狀態
sync path 強制同步節點數據
知道了這些命令以後就能夠玩一下了:
Ls / 查看根節點,能夠看到默認就有一個zookeeper節點
注意點:
1.建立節點要以/開始
2.建立節點只能一級一級的建立
3.臨時節點不能建立子節點