一、前言

  前面分析了Zookeeper對請求的處理,本篇博文接著分析Zookeeper中如何對底層數(shù)據(jù)進(jìn)行存儲,數(shù)據(jù)存儲被分為內(nèi)存數(shù)據(jù)存儲于磁盤數(shù)據(jù)存儲。

二、數(shù)據(jù)與存儲

  2.1 內(nèi)存數(shù)據(jù)

  Zookeeper的數(shù)據(jù)模型是樹結(jié)構(gòu),在內(nèi)存數(shù)據(jù)庫中,存儲了整棵樹的內(nèi)容,包括所有的節(jié)點路徑、節(jié)點數(shù)據(jù)、ACL信息,Zookeeper會定時將這個數(shù)據(jù)存儲到磁盤上。

  1. DataTree

  DataTree是內(nèi)存數(shù)據(jù)存儲的核心,是一個樹結(jié)構(gòu),代表了內(nèi)存中一份完整的數(shù)據(jù)。DataTree不包含任何與網(wǎng)絡(luò)、客戶端連接及請求處理相關(guān)的業(yè)務(wù)邏輯,是一個獨立的組件。

  2. DataNode

  DataNode是數(shù)據(jù)存儲的最小單元