日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Apache Bookkeeper簡(jiǎn)介

Apache bookkeeper是一個(gè)分布式,可擴(kuò)展,容錯(cuò)(多副本),低延遲的存儲(chǔ)系統(tǒng),其提供了高性能,高吞吐的存儲(chǔ)能力。Bookkeeper實(shí)現(xiàn)了Append方式的寫操作。

Bookkeeper有一個(gè)非常成功的應(yīng)用案例:apache pulsar,是近年雅虎開源的一個(gè)MQ,pulsar相對(duì)于kafka來說,在存儲(chǔ)上有優(yōu)勢(shì),kafka的單個(gè)partition的存儲(chǔ)容量受到了部署kafka的broker的硬盤容量限制,當(dāng)有大量的數(shù)據(jù)需要MQ支持時(shí),partition可能會(huì)遇到瓶頸而無法擴(kuò)展。當(dāng)然可以預(yù)先增加partition的數(shù)量和broker的數(shù)量來滿足MQ的存儲(chǔ)需求,但是當(dāng)消息需要存儲(chǔ)的時(shí)候相對(duì)較長(zhǎng)或者數(shù)據(jù)量非常多之后,比如存儲(chǔ)一個(gè)月,需要按月做數(shù)據(jù)的回拉跑計(jì)算任務(wù),這種場(chǎng)景對(duì)kafka的集群來說是有非常大的浪費(fèi)的,因?yàn)槲覀冃枰氖歉嗟拇鎯?chǔ),不是更多了broker的能力,bookkeeper為pulsar提供了存儲(chǔ)計(jì)算分離的架構(gòu)支持,存儲(chǔ)和pulsar的broker能分別擴(kuò)展,這是kafka不具備的

基本概念

· Entry:Entry是存儲(chǔ)到bookkeeper中的一條記錄

· Ledger:可以認(rèn)為ledger是用來存儲(chǔ)Entry的,多個(gè)Entry序列組成一個(gè)ledger

· Bookie:一個(gè)Bookie就是bookkeeper的一臺(tái)存儲(chǔ)服務(wù)器,用于存儲(chǔ)ledger,一般來說存儲(chǔ)的是ledger的一段,因?yàn)榇鎯?chǔ)是分布式的,每個(gè)ledger會(huì)存儲(chǔ)在多個(gè)bookie上

· MetaData Storage:元數(shù)據(jù)存儲(chǔ),是用于存儲(chǔ)bookie相關(guān)的元數(shù)據(jù),比如bookie上有哪些ledger,bookkeeper目前使用的是zk存儲(chǔ),所在在部署bookkeeper前,要先有zk集群

· 數(shù)據(jù)存儲(chǔ)文件與緩存:

· Journal:其實(shí)就是bookkeeper的WAL(write ahead log),用于存bookkeeper的事務(wù)日志,journal文件有一個(gè)最大大小,達(dá)到這個(gè)大小后會(huì)新起一個(gè)journal文件

· Entry log:存儲(chǔ)entry的文件,我理解ledger是一個(gè)邏輯上的概念,不同ledger中的entry會(huì)先按ledger聚合,然后寫入entry log文件中。同樣,entry log會(huì)有一個(gè)最大大小,達(dá)到最大大小后會(huì)新起一個(gè)新的entry log文件

· Index file:ledger的索引文件,ledger中的entry被寫入到了entry log文件中,索引文件用于鄧穎超entry log文件中每一個(gè)ledger做索引,記錄每個(gè)ledger在entry log中的存儲(chǔ)位置以及數(shù)據(jù)在entry log文件中的長(zhǎng)度

· Ledger cache:用于緩存索引文件的,加快查找效率

· 數(shù)據(jù)落盤:內(nèi)存中會(huì)存儲(chǔ)一個(gè)LastLogMark,其中包含txnLogId(journal文件的id)和txnLogPos(journal文件中的位置),entry log文件和index文件都會(huì)先在內(nèi)存中被緩存,當(dāng)內(nèi)存達(dá)到一定值或者離上一次刷盤過期了一段時(shí)間(定時(shí)線程)后,會(huì)觸發(fā)entry log文件和index文件的刷盤,之后再將LastLogMark持久化,當(dāng)lastLogMark被持久化后,表示在lastLogMark之前的entry和索引都已經(jīng)寫到了磁盤上,這個(gè)時(shí)候可以將lastLogMark之前的journal文件清掉,如果LastLogMark在持久化前出現(xiàn)了宕機(jī),可以通過journal文件做恢復(fù),保證了數(shù)據(jù)不丟

· Data Compaction:數(shù)據(jù)的合并,有點(diǎn)類似于hbase的compact過程。在bookie上,雖然entry log在刷盤前會(huì)按ledger做聚合,但是因數(shù)數(shù)據(jù)會(huì)不斷的新增,每個(gè)leadger的數(shù)據(jù)會(huì)交差存儲(chǔ)在entry log文件中,而bookie上有一個(gè)用于做垃圾回收的線程,該線程會(huì)將沒有關(guān)聯(lián)任何ledger的entry文件進(jìn)行刪除,以便回收磁盤空間,而compaction的目的則是為了避免entry log中只有少數(shù)的記錄是有關(guān)聯(lián)的ledger的情況,不能讓這樣的entry log文件一直占用磁盤空間,所以垃圾收集線程會(huì)將這樣的entry log中有關(guān)聯(lián)ledger的entry復(fù)制到一個(gè)新的entry log文件中(同時(shí)修改索引),然后將老的entry log文件刪除。與hbase類似,bookkeeper的compaction也分為兩種:

· Minor compaction:當(dāng)entry log中有效的entry只占20#以下時(shí)做compaction

· Major compaction:當(dāng)entry log中有效的占到80%以下時(shí)就可開始做compaction

提供的API

Bookkeeper提供了兩個(gè)層次的api:

· Ledger API:用于直接操作ledger,相對(duì)比較復(fù)雜,是bookkeeper提供的底層api

· Distributed Log:分布式log,是基于ledger api的高層次api,相對(duì)更簡(jiǎn)單易用

分布式Log架構(gòu):

認(rèn)識(shí)Apache BookKeeper

 

分布式log api寫入的log,會(huì)以寫入相同的順序存儲(chǔ)在bookkeeper上:

認(rèn)識(shí)Apache BookKeeper

 

Bookkeeper的適用場(chǎng)景

· WAL:bookkeeper可作為wal方案

· 流存儲(chǔ):比如pulsar通過bookkeeper存儲(chǔ)消息

· 對(duì)象/Blob存儲(chǔ)

分享到:
標(biāo)簽:Apache BookKeeper
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定