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

Znode儲存結(jié)構(gòu)是怎樣的?節(jié)點類型有哪幾種?

更新時間:2020-11-03 來源:黑馬程序員 瀏覽量:

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

1604392764356_51.jpg

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

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

  Znode有兩種類型,分別是臨時節(jié)點和永久節(jié)點。

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

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

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

  PERSISTENT:永久節(jié)點

  EPHEMERAL:臨時節(jié)點

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

      EPHEMERAL_SEQUENTIAL:序列化臨時節(jié)點

猜你喜歡:

Hive2.x壓縮配置教程

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

點對點消息傳遞模式與發(fā)布訂閱消息傳遞模式

分享到:
在線咨詢 我要報名
和我們在線交談!