5張圖帶你了解Pulsar的存儲(chǔ)引擎BookKeeper

1 使用場(chǎng)景

ZKFC是一個(gè)Zookeeper的客戶端,主要用來(lái)監(jiān)測(cè)和管理NameNode狀態(tài),每個(gè)NameNode機(jī)器上都會(huì)運(yùn)行一個(gè)ZKFC,它的職責(zé)主要有三個(gè):
健康檢查 Zookeeper會(huì)話管理 選舉,當(dāng)集群中一個(gè)Active NameNode宕機(jī),Zookeeper會(huì)自動(dòng)選擇一個(gè)節(jié)點(diǎn)作為新的Active NameNode。
一致性:因?yàn)閑dit log保存的是HDFS的元數(shù)據(jù),對(duì)一致性要求很高 低延遲:為了不丟數(shù)據(jù),需要低延遲 高吞吐:為了支持更多的NameNode節(jié)點(diǎn),需要高吞吐
2 節(jié)點(diǎn)對(duì)等

Ledger也就是Pulsar中的segment。
openLedger(組內(nèi)節(jié)點(diǎn)數(shù)目、數(shù)據(jù)備份數(shù)目、等待刷盤(pán)節(jié)點(diǎn)數(shù)目)
2.1 數(shù)據(jù)讀寫(xiě)

2.2 讀高可用
2.3 寫(xiě)高可用
記錄出錯(cuò)的entry id 對(duì)故障節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行封裝 關(guān)閉當(dāng)前的Ledger,重新打開(kāi)一個(gè)新的Ledger,這個(gè)Ledger會(huì)重新選擇bookie節(jié)點(diǎn),1、2、3、4、6。 如果bookie5恢復(fù),就不再提供寫(xiě)服務(wù)了,只提供讀服務(wù)。 如果不能恢復(fù),就把bookie5的數(shù)據(jù),從其他節(jié)點(diǎn)的備份中恢復(fù)到新的節(jié)點(diǎn)上,這個(gè)過(guò)程需要根據(jù)Ledger id跟5取模來(lái)判斷是否落到bookie5上,數(shù)據(jù)恢復(fù)過(guò)程并不影響Reader,因?yàn)槠渌麅煞輸?shù)據(jù)可以繼續(xù)提供服務(wù)。
3 I/O模型

Writer寫(xiě)入的數(shù)據(jù)首先到達(dá)Journal,Journal將數(shù)據(jù)進(jìn)行g(shù)roup后刷到到Journal盤(pán),這個(gè)刷盤(pán)的數(shù)據(jù)順序跟writer寫(xiě)入順序一致。
Writer寫(xiě)入Journal Disk是實(shí)時(shí)刷盤(pán)。
Journal Disk的數(shù)據(jù)會(huì)寫(xiě)入memory table進(jìn)行數(shù)據(jù)整理,把同一個(gè)topic的數(shù)據(jù)整理到一起。 把整理好的數(shù)據(jù)刷盤(pán)。Index Disk保存entry的index,對(duì)應(yīng)entry在Logger Disks的offset。
3.1 讀寫(xiě)分離
3.2 強(qiáng)一致性
3.3 靈活SLA
4 Pulsar中的使用


?推薦閱讀

華為最美小姐姐被外派墨西哥后...

國(guó)內(nèi)有程序員電視劇了,結(jié)果看了一分鐘,就吐了...

男女洗澡前后區(qū)別,太形象了!
END


頂級(jí)程序員:topcoding
做最好的程序員社區(qū):Java后端開(kāi)發(fā)、Python、大數(shù)據(jù)、AI
一鍵三連「分享」、「點(diǎn)贊」和「在看」
評(píng)論
圖片
表情
