Znode節(jié)點(diǎn)概念
Zookeeper是一個(gè)分布式的協(xié)調(diào)服務(wù),它通過維護(hù)一個(gè)分層的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)和管理數(shù)據(jù)。這個(gè)數(shù)據(jù)結(jié)構(gòu)被稱為znode節(jié)點(diǎn)。每個(gè)znode節(jié)點(diǎn)在Zookeeper的命名空間中都有一個(gè)唯一的路徑,類似于文件系統(tǒng)中的路徑。
Zookeeper中的znode節(jié)點(diǎn)有以下幾種類型:
-
永久節(jié)點(diǎn)(Persistent znode):永久節(jié)點(diǎn)在創(chuàng)建后將一直存在于Zookeeper中,直到被顯示刪除。它們用于存儲(chǔ)持久化數(shù)據(jù),并且能夠擁有子節(jié)點(diǎn)。
-
臨時(shí)節(jié)點(diǎn)(Ephemeral znode):臨時(shí)節(jié)點(diǎn)在創(chuàng)建它的客戶端斷開連接后將自動(dòng)被刪除。它們用于臨時(shí)性的數(shù)據(jù)存儲(chǔ),例如客戶端的臨時(shí)狀態(tài)或會(huì)話信息。
-
順序節(jié)點(diǎn)(Sequential znode):順序節(jié)點(diǎn)在創(chuàng)建后會(huì)自動(dòng)分配一個(gè)唯一的遞增編號(hào)。這些編號(hào)被用于在有序的集合中進(jìn)行排序,以便在分布式環(huán)境中實(shí)現(xiàn)有序操作。
除了以上類型之外,znode節(jié)點(diǎn)還可以具有其他特性:
-
數(shù)據(jù)(Data):每個(gè)znode節(jié)點(diǎn)可以存儲(chǔ)一些數(shù)據(jù),它們以字節(jié)數(shù)組的形式存在。
-
版本號(hào)(Version):每個(gè)znode節(jié)點(diǎn)都有一個(gè)與之關(guān)聯(lián)的版本號(hào),用于實(shí)現(xiàn)樂觀并發(fā)控制。
-
訪問控制列表(ACL):Zookeeper使用ACL來控制對(duì)znode節(jié)點(diǎn)的訪問權(quán)限。
-
監(jiān)聽(Watcher):Zookeeper允許客戶端對(duì)特定的znode節(jié)點(diǎn)注冊(cè)監(jiān)聽器,以便在節(jié)點(diǎn)發(fā)生變化時(shí)得到通知。
znode節(jié)點(diǎn)是Zookeeper中的核心概念,它提供了一個(gè)靈活且可靠的分布式數(shù)據(jù)存儲(chǔ)和協(xié)調(diào)機(jī)制,廣泛應(yīng)用于分布式系統(tǒng)中的各種場景。
進(jìn)入到zkCli.sh客戶端,通過下面的命令可以查看zk節(jié)點(diǎn)信息,默認(rèn)是一個(gè)節(jié)點(diǎn)
ls /
zkCli.sh常見命令
create 節(jié)點(diǎn)名路徑
這個(gè)時(shí)候通過ls /命令可以再次查看根路徑下的節(jié)點(diǎn)信息,不難發(fā)現(xiàn),現(xiàn)在是一共有兩個(gè)節(jié)點(diǎn)了
2、創(chuàng)建并保存數(shù)據(jù)
create 節(jié)點(diǎn)名路徑 數(shù)據(jù)
3、獲取節(jié)點(diǎn)中的數(shù)據(jù)
get 節(jié)點(diǎn)名路徑 #注意:創(chuàng)建和獲取數(shù)據(jù),節(jié)點(diǎn)前都必須加上路徑符號(hào)/,否則就會(huì)報(bào)錯(cuò)
創(chuàng)建節(jié)點(diǎn)命令
持久節(jié)點(diǎn)和持久序列節(jié)點(diǎn)
一、持久節(jié)點(diǎn)
1、認(rèn)識(shí)持久節(jié)點(diǎn)
創(chuàng)建出的節(jié)點(diǎn),在會(huì)話結(jié)束后依然存在,用來保存數(shù)據(jù)
2、創(chuàng)建持久節(jié)點(diǎn)
create 節(jié)點(diǎn)路徑 #就是不帶任何參數(shù)執(zhí)行創(chuàng)建命令,創(chuàng)建出的節(jié)點(diǎn)就叫做持久節(jié)點(diǎn)
二、持久序號(hào)節(jié)點(diǎn)
1、認(rèn)識(shí)持久序號(hào)節(jié)點(diǎn)
創(chuàng)建出的節(jié)點(diǎn),根據(jù)先后順序,會(huì)在節(jié)點(diǎn)后面加上一個(gè)數(shù)值,越后執(zhí)行數(shù)值越大,適用于分布式鎖的應(yīng)用場景,單調(diào)遞增
2、創(chuàng)建持久序號(hào)節(jié)點(diǎn)
ctreate -s 節(jié)點(diǎn)路徑
臨時(shí)節(jié)點(diǎn)(重點(diǎn))
一、認(rèn)識(shí)臨時(shí)節(jié)點(diǎn)
臨時(shí)節(jié)點(diǎn)是在本次會(huì)話中一直存在,會(huì)話結(jié)束后,自動(dòng)被刪除的。通過這個(gè)特性,zk可以實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)的效果,這里就涉及到了臨時(shí)節(jié)點(diǎn)如何維持心跳的問題!
二、臨時(shí)節(jié)點(diǎn)在會(huì)話結(jié)束后消失的原理
運(yùn)用了session的工作機(jī)制
二、創(chuàng)建臨時(shí)節(jié)點(diǎn)方法
create -e 節(jié)點(diǎn)路徑 #為什么是-e?因?yàn)槿〉檬莈phemeral的首字母
臨時(shí)序號(hào)節(jié)點(diǎn)
一、認(rèn)識(shí)臨時(shí)序號(hào)節(jié)點(diǎn)
類似于持久化序號(hào)節(jié)點(diǎn),主要應(yīng)用于臨時(shí)的分布式鎖
二、創(chuàng)建方式
create -e -s 節(jié)點(diǎn)路徑
Container容器節(jié)點(diǎn)
一、什么是容器節(jié)點(diǎn)
當(dāng)容器中沒有任何子節(jié)點(diǎn),該容器節(jié)點(diǎn)會(huì)被zk定期刪除(60s)
二、創(chuàng)建方式
create -c 節(jié)點(diǎn)路徑
三、驗(yàn)證當(dāng)這個(gè)容器節(jié)點(diǎn)下的子節(jié)點(diǎn)全部刪除后,容器節(jié)點(diǎn)會(huì)不會(huì)被zk服務(wù)器刪除
1、創(chuàng)建子節(jié)點(diǎn)
2、刪除子節(jié)點(diǎn)
刪除子節(jié)點(diǎn)的語法是
delete 節(jié)點(diǎn)路徑
3、驗(yàn)證容器節(jié)點(diǎn)是否存在
TTL節(jié)點(diǎn)
一、定義
可以指定節(jié)點(diǎn)的到期時(shí)間,到期后會(huì)被zk定時(shí)刪除。只能用過系統(tǒng)配置開啟
二、配置方式
在項(xiàng)目的配置文件中配置即可
查詢節(jié)點(diǎn)命令
一、常規(guī)查詢
查詢節(jié)點(diǎn)下的信息
ls 節(jié)點(diǎn)路徑
查詢節(jié)點(diǎn)下的所有節(jié)點(diǎn)信息
ls -r 節(jié)點(diǎn)路徑 #-r表示遞歸查詢
二、查詢?cè)敿?xì)數(shù)據(jù)
首席按先了解Zookeeper的組成
通過命令查看Znode節(jié)點(diǎn)詳細(xì)信息(stat元數(shù)據(jù))
get -s 節(jié)點(diǎn)路徑
元數(shù)據(jù)對(duì)應(yīng)的作用:
刪除節(jié)點(diǎn)命令
一、普通刪除
1、刪除一層節(jié)點(diǎn)
delete 節(jié)點(diǎn)路徑
2、如果想要?jiǎng)h除的節(jié)點(diǎn)還有字節(jié)點(diǎn)
deleteall 目標(biāo)節(jié)點(diǎn)路徑
二、樂觀鎖刪除
1、了解zk節(jié)點(diǎn)樂觀鎖
當(dāng)我們創(chuàng)建了一個(gè)新的節(jié)點(diǎn),元數(shù)據(jù)中會(huì)有一個(gè)字段專門存當(dāng)前節(jié)點(diǎn)的版本號(hào),如果有人對(duì)這個(gè)節(jié)點(diǎn)進(jìn)行了修改,那么版本號(hào)+1
2、樂觀鎖刪除方法
delete -v 版本號(hào) 節(jié)點(diǎn)路徑 # -v是version的簡寫,如果輸入的版本號(hào)不是當(dāng)前節(jié)點(diǎn)的版本號(hào),就會(huì)報(bào)刪除失敗,版本號(hào)無效
給節(jié)點(diǎn)添加數(shù)據(jù)
添加數(shù)據(jù)命令
set 節(jié)點(diǎn)路徑 數(shù)據(jù)
Watch機(jī)制監(jiān)聽節(jié)點(diǎn)
一、創(chuàng)建一次性監(jiān)聽
1、創(chuàng)建一個(gè)新節(jié)點(diǎn)
2、通過下面的命令以Watch機(jī)制來監(jiān)聽節(jié)點(diǎn)
get -w 節(jié)點(diǎn)路徑
3、在另一個(gè)客戶端對(duì)這個(gè)節(jié)點(diǎn)進(jìn)行改動(dòng),那么監(jiān)聽該節(jié)點(diǎn)的那臺(tái)服務(wù)器就會(huì)提示:你監(jiān)聽的節(jié)點(diǎn)數(shù)據(jù)發(fā)生了變化
4、當(dāng)我再次在右邊的客戶點(diǎn)對(duì)test9節(jié)點(diǎn)數(shù)據(jù)發(fā)生修改,那么左邊的監(jiān)聽就失效了
二、創(chuàng)建持續(xù)的監(jiān)聽
1、當(dāng)對(duì)某個(gè)節(jié)點(diǎn)通過get -w 節(jié)點(diǎn)路徑進(jìn)行監(jiān)聽
2、在另一臺(tái)客戶端上修改這個(gè)節(jié)點(diǎn)的數(shù)據(jù)
3、在監(jiān)聽的這個(gè)客戶端上繼續(xù)通過get -w 節(jié)點(diǎn)路徑來獲取數(shù)據(jù),那么又一次給節(jié)點(diǎn)上了監(jiān)聽
?文章來源:http://www.zghlxwxcb.cn/news/detail-772014.html
至此,關(guān)于Zookeeper操作Znode節(jié)點(diǎn)的常見命令以及Watch機(jī)制監(jiān)聽節(jié)點(diǎn)的技術(shù)點(diǎn)介紹完畢,后續(xù)還會(huì)持續(xù)更新相關(guān)技術(shù),敬請(qǐng)期待!文章來源地址http://www.zghlxwxcb.cn/news/detail-772014.html
到了這里,關(guān)于Zookeeper篇——深入認(rèn)識(shí)和學(xué)習(xí)Zookeeper節(jié)點(diǎn)-Znode,涵蓋概念以及詳細(xì)操作節(jié)點(diǎn)命令,保姆級(jí)教程,超詳細(xì)、超全面!??!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!