一、zookeeper基本數(shù)據(jù)模型
1.zk存儲(chǔ)的數(shù)據(jù)是樹形結(jié)構(gòu),可以理解為類似Linux文件目錄
2.每一個(gè)節(jié)點(diǎn)都稱為znode帆吻,它可以有自己的節(jié)點(diǎn)普泡,也可以有數(shù)據(jù)
3.每個(gè)節(jié)點(diǎn)可以分為永久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn)播掷,臨時(shí)節(jié)點(diǎn)在客戶端斷開后(并且超過心跳機(jī)制設(shè)置的時(shí)間以后)會(huì)消失。session失效后撼班,臨時(shí)節(jié)點(diǎn)中的數(shù)據(jù)也會(huì)消失歧匈。
4.每個(gè)zk節(jié)點(diǎn)都有自己的版本號(hào),可以通過命令來顯示節(jié)點(diǎn)信息
5.每當(dāng)節(jié)點(diǎn)數(shù)據(jù)發(fā)生變化以后砰嘁,該節(jié)點(diǎn)版本號(hào)會(huì)累加(樂觀鎖)
6.刪除或者修改節(jié)點(diǎn)時(shí)件炉,如果版本號(hào)不匹配會(huì)報(bào)錯(cuò)
7.每個(gè)節(jié)點(diǎn)的數(shù)據(jù)不易過大
8.節(jié)點(diǎn)可以設(shè)置操作權(quán)限
二勘究、zk客數(shù)據(jù)模型基本操作
1.啟動(dòng)zk服務(wù)? ./zkServer.sh start
2.打開客戶端連接? ./zkCli.sh
3.進(jìn)行znode節(jié)點(diǎn)操作
4.關(guān)閉連接(ctrl+c)
三、詳細(xì)操作
打開連接后斟冕,輸入help命令
1.ls 和ls2命令
ls:查看每個(gè)節(jié)點(diǎn)
輸入ls2 path:會(huì)顯示當(dāng)前節(jié)點(diǎn)的信息
dataVersion:數(shù)據(jù)版本號(hào)
aclVersion:權(quán)限版本號(hào)
ephemeralOwner:是永久節(jié)點(diǎn)還是臨時(shí)節(jié)點(diǎn)
2.創(chuàng)建節(jié)點(diǎn)? create?
create? 路徑? 數(shù)據(jù)內(nèi)容? (acl是權(quán)限口糕,這里先不使用)
create -e 路徑 數(shù)據(jù)? ?(是創(chuàng)建臨時(shí)節(jié)點(diǎn)),根據(jù)ephemeralOener可以判斷出
create -s 路徑 數(shù)據(jù)? (創(chuàng)建順序節(jié)點(diǎn))
3.獲取數(shù)據(jù)
get 路徑?
4.修改
set? 路徑? 數(shù)據(jù)
set /zookeeper/zk abc??
dataVersion版本號(hào)發(fā)生變化
set 路徑 數(shù)據(jù) 版本號(hào)(修改的時(shí)候可以帶上版本號(hào))磕蛇,如果版本號(hào)不是當(dāng)前版本號(hào)景描,則會(huì)報(bào)錯(cuò)
5.刪除節(jié)點(diǎn)
可以帶版本號(hào),可以不帶秀撇,如果帶版本號(hào)超棺,需要跟當(dāng)前數(shù)據(jù)匹配度的版本號(hào),否則報(bào)錯(cuò)
6.節(jié)點(diǎn)權(quán)限
getAcl? 路徑? (查看這個(gè)節(jié)點(diǎn)的權(quán)限)
acl構(gòu)成? [scheme:id:permissions]
①scheme:采用哪種權(quán)限機(jī)制
world:只有一個(gè)id呵燕,就是anyone
auth:認(rèn)證登錄? auth:user:password:[permissions]
digest:需要對(duì)密碼進(jìn)行加密才可以訪問
digest:user:BASE64(SHA1(password)):[permissions]
ip:限制ip
super:擁有所有權(quán)限
② permissions:權(quán)限? cdrwa是權(quán)限字符串縮寫
create 創(chuàng)建節(jié)點(diǎn)權(quán)限
delete 刪除節(jié)點(diǎn)權(quán)限
read 獲取節(jié)點(diǎn)權(quán)限
write 設(shè)置節(jié)點(diǎn)權(quán)限
admin 設(shè)置權(quán)限
二棠绘、watch機(jī)制
1.針對(duì)每一個(gè)節(jié)點(diǎn)操作,都會(huì)有一個(gè)監(jiān)督者再扭,watcher是一個(gè)時(shí)間
2.當(dāng)監(jiān)督的某個(gè)對(duì)象(znode)發(fā)生變化氧苍,就會(huì)觸發(fā)watcher時(shí)間
3.zookeeper中的watcher是一次性的。出發(fā)后會(huì)立即銷毀霍衫。
4.父節(jié)點(diǎn)候引,子節(jié)點(diǎn)增刪改都會(huì)觸發(fā)watcher時(shí)間
三、watch事件類型
1.父節(jié)點(diǎn)
創(chuàng)建父節(jié)點(diǎn)觸發(fā):NodeCreated
修改父節(jié)點(diǎn)觸發(fā):nodeCreateChanged事件
刪除父節(jié)點(diǎn)觸發(fā):NodeDeleted事件
2.子節(jié)點(diǎn)
創(chuàng)建子節(jié)點(diǎn)/刪除子節(jié)點(diǎn)敦跌,都會(huì)是NodeChildrenChanged
修改子節(jié)點(diǎn)澄干,不會(huì)觸發(fā)任何事件