溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ZooKeeper持久化原理是什么

發(fā)布時(shí)間:2021-07-07 16:47:41 來(lái)源:億速云 閱讀:273 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“ZooKeeper持久化原理是什么”,在日常操作中,相信很多人在ZooKeeper持久化原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ZooKeeper持久化原理是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

ZK 的數(shù)據(jù)與存儲(chǔ)中,有幾個(gè)特別關(guān)注點(diǎn):

  1. 內(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ù),作用:

  2. 快照生成的時(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,其中:

  3. 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í)用的文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI