您好,登錄后才能下訂單哦!
這篇文章主要介紹“ZooKeeper持久化原理是什么”,在日常操作中,相信很多人在ZooKeeper持久化原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ZooKeeper持久化原理是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
ZK 的數(shù)據(jù)與存儲(chǔ)中,有幾個(gè)特別關(guān)注點(diǎn):
內(nèi)存數(shù)據(jù)
與磁盤數(shù)據(jù)
間的關(guān)系:
恢復(fù)內(nèi)存數(shù)據(jù),恢復(fù)現(xiàn)場(chǎng)
數(shù)據(jù)同步:集群內(nèi),不同節(jié)點(diǎn)間的數(shù)據(jù)同步(另,內(nèi)存中的提議緩存隊(duì)列 proposals)
磁盤數(shù)據(jù),為什么同時(shí)包含:快照、事務(wù)日志?出于數(shù)據(jù)粒度的考慮
因此粒度很細(xì),恢復(fù)現(xiàn)場(chǎng)時(shí),能夠恢復(fù)到事務(wù)粒度上
因?yàn)樯煽煺盏臅r(shí)間間隔太大,即,快照的粒度太粗了
如果只包含快照,那恢復(fù)現(xiàn)場(chǎng)的時(shí)候,會(huì)有數(shù)據(jù)丟失,
事務(wù)日志,針對(duì)每條提交的事務(wù)都會(huì) flush 到磁盤,
內(nèi)存數(shù)據(jù),是真正提供服務(wù)的數(shù)據(jù)
磁盤數(shù)據(jù),作用:
快照生成的時(shí)機(jī):基于閾值,引入隨機(jī)因素
countLog 為累計(jì)執(zhí)行事務(wù)個(gè)數(shù)
snapCount 為配置的閾值
randRoll 為隨機(jī)因素(取值:0~snapCount/2)
因?yàn)?dump snapshot 耗費(fèi)大量的 磁盤 IO、CPU,
所有節(jié)點(diǎn)同時(shí) dump 會(huì)嚴(yán)重影響集群的對(duì)外服務(wù)能力
解決的關(guān)鍵問題:避免所有節(jié)點(diǎn)同時(shí) dump snapshot,
countLog > snapCount/2 + randRoll
,其中:
ZK 的 快照文件是 Fuzzy 快照,不是精確到某一時(shí)刻的快照,而是某一時(shí)間段內(nèi)的快照
RDB 文件是精確的快照,原因:進(jìn)程之間內(nèi)存空間隔離
系統(tǒng)內(nèi)核使用「寫時(shí)復(fù)制」(Copy-On-Write)技術(shù),節(jié)省大量?jī)?nèi)存空間
線程之間共享內(nèi)存空間,導(dǎo)致 Fuzzy 快照
這就要求 ZK 的所有事務(wù)操作是冪等的,否則產(chǎn)生數(shù)據(jù)不一致的問題
實(shí)際上 ZK 的所有操作都是冪等的
ZK 使用「異步線程」生成快照:
類比:Redis 中使用「異步進(jìn)程」生成快照 RDB(Redis Dump Binary)
https://blog.csdn.net/varyall/article/details/79564418
若在Zookeeper進(jìn)行快照的過程中,接收了客戶端的請(qǐng)求,此時(shí)會(huì)將該請(qǐng)求應(yīng)用到DataTree嗎?
Zookeeper是調(diào)用zks.takeSnapshot()生成快照文件的,
這個(gè)方法及其底層的方法并沒有對(duì)DataTree加鎖,
因此生成快照文件并不是一個(gè)原子性的操作,
所以快照?qǐng)?zhí)行開始到快照?qǐng)?zhí)行結(jié)束期間發(fā)生的事務(wù)也會(huì)應(yīng)用到DataTree中,
也會(huì)持久化到快照文件中,也即說(shuō)明即使快照后綴名為n,此快照文件也有可能包含n+1,n+2這些事務(wù)的執(zhí)行結(jié)果.
若會(huì),這會(huì)出現(xiàn)什么問題?如何解決?
https://blog.csdn.net/jpf254/article/details/80769525
到此,關(guān)于“ZooKeeper持久化原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。