天天看點

zookeeper - 資料存儲結構(11)

概述

    這是寫zookeeper過程中最輕松的一篇文章了,因為zookeeper的data存儲結構是比較簡單的,是以整個文章也比較簡單。

zookeeper資料結構

    首先zookeeper的核心儲存結構是一個DataTree資料結構,其實内部是一個Map<String, DataNode> nodes的資料結構,其中key是path,DataNode是真正儲存資料的核心資料結構。

    DataNode核心字段包括byte data[]用于儲存節點内容,Long acl用于儲存data的acl規則,Set<String> children其實就是儲存該DataNode下屬的子節點的path。

    最後一個源碼截圖說明了我們建立一個節點的時候如何處理parent和children的相關節點的存儲,其實說白了就是所有的節點儲存在DataTree<String, DataNode> nodes的資料結構當中,然後每個DataNode本身儲存其children的path。說白了就是DataNode在一個統一的地方儲存,然後父子關系由各個DataNode本身進行儲存。

zookeeper - 資料存儲結構(11)

dataTree的核心資料結構

zookeeper - 資料存儲結構(11)

DataNode的核心資料結構

zookeeper - 資料存儲結構(11)

建立節點的核心邏輯