首頁(yè)技術(shù)文章正文

Znode儲(chǔ)存結(jié)構(gòu)是怎樣的?節(jié)點(diǎn)類(lèi)型有哪幾種?

更新時(shí)間:2020-11-03 來(lái)源:黑馬程序員 瀏覽量:

Zookeeper的底層是一套數(shù)據(jù)儲(chǔ)存結(jié)構(gòu),其中的節(jié)點(diǎn),我們稱(chēng)之為znode。Zookeeper中數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)和標(biāo)準(zhǔn)文件系統(tǒng)非常類(lèi)似,擁有一個(gè)層次的命名空間,也是使用斜杠(/)進(jìn)行分割,兩者都是采用樹(shù)形層次結(jié)構(gòu)。不同的是,標(biāo)準(zhǔn)文件系統(tǒng)是由文件夾和文件來(lái)組成的樹(shù),而Zookeeper是由什么來(lái)組成的樹(shù)呢?下面我們來(lái)看一下Zookeeper數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),如圖1所示。

1604392764356_51.jpg

圖1 Zookeeper數(shù)據(jù)模型

  從圖2可知,Zookeeper是由節(jié)點(diǎn)組成的樹(shù),樹(shù)中的每個(gè)節(jié)點(diǎn)被稱(chēng)為—Znode。每個(gè)節(jié)點(diǎn)都可以擁有子節(jié)點(diǎn)。每一個(gè)Znode默認(rèn)能夠存儲(chǔ)1MB的數(shù)據(jù),每個(gè)Znode都可以通過(guò)其路徑唯一標(biāo)識(shí),如圖5-2中第三層的第一個(gè)Znode~~,~~,它的路徑是/app1/p_1。Zookeeper數(shù)據(jù)模型中的每個(gè)Znode都是由三部分組成,分別是stat(狀態(tài)信息,描述該Znode的版本,權(quán)限信息等組成)、data(與該Znode關(guān)聯(lián)的數(shù)據(jù))、children(該Znode下的子節(jié)點(diǎn))。

  Znode有兩種類(lèi)型,分別是臨時(shí)節(jié)點(diǎn)和永久節(jié)點(diǎn)。

  臨時(shí)節(jié)點(diǎn),該生命周期依賴(lài)于創(chuàng)建它們的會(huì)話,一旦會(huì)話結(jié)束,臨時(shí)節(jié)點(diǎn)將會(huì)被自動(dòng)刪除,當(dāng)然也可以手動(dòng)刪除。雖然每個(gè)臨時(shí)的Znode都會(huì)綁定到一個(gè)客戶端,但它們對(duì)所有的客戶端還是可見(jiàn)的。另外,需要注意的是臨時(shí)節(jié)點(diǎn)不允許擁有子節(jié)點(diǎn)。

  永久節(jié)點(diǎn),該生命周期不依賴(lài)于會(huì)話,并且只有在客戶端顯示執(zhí)行刪除操作的時(shí)候,它們才能被刪除。

  由于Znode的序列化特性,在創(chuàng)建節(jié)點(diǎn)時(shí),用戶可以請(qǐng)求在該Znode的路徑結(jié)尾添加一個(gè)不斷增加的序列號(hào),序列號(hào)對(duì)于此節(jié)點(diǎn)的父節(jié)點(diǎn)來(lái)說(shuō)是唯一的,這樣便會(huì)記錄每個(gè)子節(jié)點(diǎn)創(chuàng)建的先后順序。它的格式為“%010d”(10位數(shù)字,沒(méi)有數(shù)值的數(shù)位用0補(bǔ)充,例如“0000000001”)。當(dāng)計(jì)數(shù)值大于232-1時(shí),計(jì)數(shù)器將會(huì)溢出。這樣便會(huì)存在四種類(lèi)型的目錄節(jié)點(diǎn),分別對(duì)應(yīng)如下:

  PERSISTENT:永久節(jié)點(diǎn)

  EPHEMERAL:臨時(shí)節(jié)點(diǎn)

  PERSISTENT_SEQUENTIAL:序列化永久節(jié)點(diǎn)

      EPHEMERAL_SEQUENTIAL:序列化臨時(shí)節(jié)點(diǎn)

猜你喜歡:

Hive2.x壓縮配置教程

Spark Streaming框架有什么特點(diǎn)?【大數(shù)據(jù)培訓(xùn)】

點(diǎn)對(duì)點(diǎn)消息傳遞模式與發(fā)布訂閱消息傳遞模式

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!