5張圖帶你了解Pulsar的存儲引擎BookKeeper

1 使用場景

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

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

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

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


?推薦閱讀

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

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

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


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