一、前言
前面分析了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ù)存儲的最小單元