新聞中心
Zookeeper作為分布式系統(tǒng)的底層協(xié)調(diào)服務(wù)有著其簡單可依靠的數(shù)據(jù)模型,數(shù)據(jù)模型加之?dāng)?shù)據(jù)同步、一致性處理和可靠性,在此之上有很多經(jīng)典的應(yīng)用,例如,分布式鎖、服務(wù)器動(dòng)態(tài)上線下感知、主節(jié)點(diǎn)選舉、數(shù)據(jù)發(fā)布與訂閱、負(fù)載均衡等等,本篇文章重點(diǎn)為大家講解一下Zookeeper數(shù)據(jù)模型。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),平果企業(yè)網(wǎng)站建設(shè),平果品牌網(wǎng)站建設(shè),網(wǎng)站定制,平果網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,平果網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
數(shù)據(jù)模型
在 zookeeper 中,可以說 zookeeper 中的所有存儲(chǔ)的數(shù)據(jù)是由 znode 組成的,節(jié)點(diǎn)也稱為 znode,并以 key/value 形式存儲(chǔ)數(shù)據(jù)。
整體結(jié)構(gòu)類似于 linux 文件系統(tǒng)的模式以樹形結(jié)構(gòu)存儲(chǔ)。其中根路徑以 / 開頭。
進(jìn)入 zookeeper 安裝的 bin 目錄,通過sh zkCli.sh打開命令行終端,執(zhí)行 “l(fā)s /” 命令顯示:
$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota
我們直觀的看到此時(shí)存儲(chǔ)的數(shù)據(jù)在根目錄下存在 runoob 和 zookeeper 兩個(gè)節(jié)點(diǎn),zookeeper 節(jié)點(diǎn)下存在 quota 這個(gè)節(jié)點(diǎn)。 runoob 節(jié)點(diǎn)是在我們之前章節(jié)創(chuàng)建,并且通過 java 客戶端設(shè)置值 0,現(xiàn)在我們在命令行終端執(zhí)行 get /runoob 顯示此節(jié)點(diǎn)的屬性。
$ get /runoob
ZooKeeper 數(shù)據(jù)模型簡介ZooKeeper 數(shù)據(jù)模型簡介
Znode 的狀態(tài)屬性
| cZxid | 創(chuàng)建節(jié)點(diǎn)時(shí)的事務(wù)ID |
|---|---|
| ctime | 創(chuàng)建節(jié)點(diǎn)時(shí)的時(shí)間 |
| mZxid | 最后修改節(jié)點(diǎn)時(shí)的事務(wù)ID |
| mtime | 最后修改節(jié)點(diǎn)時(shí)的時(shí)間 |
| pZxid | 表示該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最后一次修改的事務(wù)ID,添加子節(jié)點(diǎn)或刪除子節(jié)點(diǎn)就會(huì)影響子節(jié)點(diǎn)列表,但是修改子節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容則不影響該ID**(注意,只有子節(jié)點(diǎn)列表變更了才會(huì)變更pzxid,子節(jié)點(diǎn)內(nèi)容變更不會(huì)影響pzxid)** |
| cversion | 子節(jié)點(diǎn)版本號,子節(jié)點(diǎn)每次修改版本號加1 |
| dataversion | 數(shù)據(jù)版本號,數(shù)據(jù)每次修改該版本號加1 |
| aclversion | 權(quán)限版本號,權(quán)限每次修改該版本號加1 |
| ephemeralOwner | 創(chuàng)建該臨時(shí)節(jié)點(diǎn)的會(huì)話的sessionID。**(**如果該節(jié)點(diǎn)是持久節(jié)點(diǎn),那么這個(gè)屬性值為0) |
| dataLength | 該節(jié)點(diǎn)的數(shù)據(jù)長度 |
| numChildren | 該節(jié)點(diǎn)擁有子節(jié)點(diǎn)的數(shù)量**(只統(tǒng)計(jì)直接子節(jié)點(diǎn)的數(shù)量)** |
顯示詳細(xì)信息
了解上面狀態(tài)屬性值,我們對 /runoob 節(jié)點(diǎn)做一次修改,執(zhí)行命令 set /runoob 1 ,如下圖所示:
$ set /runoob 1
對比上面結(jié)果,可以看到 mZxid、mtime、dataVersion 都發(fā)生了變化。
在 /runoob 節(jié)點(diǎn)下,我們再添加一子節(jié)點(diǎn),執(zhí)行:
$ create -e /runoob/child 0
$ get /runoob
提示:更多命令使用后面章節(jié)會(huì)詳解介紹。
執(zhí)行完終端命令行顯示: 可見 /runoob 節(jié)點(diǎn)的 pZxid、cversion、numChildren 都發(fā)生了相應(yīng)的改變。
當(dāng)前題目:詳解Zookeeper數(shù)據(jù)模型
文章路徑:http://fisionsoft.com.cn/article/cocjcji.html


咨詢
建站咨詢
