一、前言
前面分析了Zookeeper對(duì)請(qǐng)求的處理,本篇博文接著分析Zookeeper中如何對(duì)底層數(shù)據(jù)進(jìn)行存儲(chǔ),數(shù)據(jù)存儲(chǔ)被分為內(nèi)存數(shù)據(jù)存儲(chǔ)于磁盤(pán)數(shù)據(jù)存儲(chǔ)。
二、數(shù)據(jù)與存儲(chǔ)
2.1 內(nèi)存數(shù)據(jù)
Zookeeper的數(shù)據(jù)模型是樹(shù)結(jié)構(gòu),在內(nèi)存數(shù)據(jù)庫(kù)中,存儲(chǔ)了整棵樹(shù)的內(nèi)容,包括所有的節(jié)點(diǎn)路徑、節(jié)點(diǎn)數(shù)據(jù)、ACL信息,Zookeeper會(huì)定時(shí)將這個(gè)數(shù)據(jù)存儲(chǔ)到磁盤(pán)上。
1. DataTree
DataTree是內(nèi)存數(shù)據(jù)存儲(chǔ)的核心,是一個(gè)樹(shù)結(jié)構(gòu),代表了內(nèi)存中一份完整的數(shù)據(jù)。DataTree不包含任何與網(wǎng)絡(luò)、客戶(hù)端連接及請(qǐng)求處理相關(guān)的業(yè)務(wù)邏輯,是一個(gè)獨(dú)立的組件。
2. DataNode
DataNode是數(shù)據(jù)存儲(chǔ)的最小單元