欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何進(jìn)行LogDevice與ApachePulsar之間的對比

如何進(jìn)行LogDevice與Apache Pulsar之間的對比,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

成都創(chuàng)新互聯(lián)于2013年成立,先為鹽邊等服務(wù)建站,鹽邊等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鹽邊企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

Facebook 已經(jīng)發(fā)布開源 LogDevice??紤]到 LogDevice 目標(biāo)用例之間的相似性,自然會(huì)有人問到 LogDevice 與 Apache Pulsar 之間是否也有相似之處。本文將對這一問題進(jìn)行解答。對比 LogDevice 和 Pulsar 并不簡單,LogDevice 的操作級別要比 Pulsar 低。LogDevice 與 Twitter 的 DistributedLog 更相似。二者都只關(guān)注日志原語,而不關(guān)注 schema 管理、多租戶、光標(biāo)管理等高級功能。這些高級功能將留給用戶基于 LogDevice 去實(shí)現(xiàn)。下面將討論 LogDevice 和 Pulsar 中都有的基本元素:分布式日志。

架構(gòu)

LogDevice 向用戶顯示一個(gè)日志原語。寫入客戶端將 entry 寫入 sequencer 節(jié)點(diǎn)。該節(jié)點(diǎn)將日志序列號(LSN)分配給所有 entry,然后將 entry 寫入已經(jīng)分配給日志的較大節(jié)點(diǎn)集的一個(gè)子集(副本集)。LogDevice 的 sequencer 類似于 Pulsar 中的 broker,在 Pulsar 中,由 broker 分配消息 ID 并發(fā)送消息到 Apache BookKeeper 進(jìn)行存儲(chǔ)。

LogDevice 和 Pulsar 在架構(gòu)方面有許多相同之處,比如它們都將計(jì)算與存儲(chǔ)分離。與單片架構(gòu)相比,這種架構(gòu)具有以下優(yōu)勢:

?單個(gè)日志可以無限增長?出現(xiàn)節(jié)點(diǎn)故障時(shí),可以進(jìn)行無縫恢復(fù)?集群擴(kuò)展簡單?讀寫具有獨(dú)立可擴(kuò)展性

比較 Pulsar 和 Kafka:基于分片的架構(gòu)如何提升整體性能、延展性與彈性[2]一文中詳細(xì)說明了這種架構(gòu)的優(yōu)勢。Pulsar 和 LogDevice 都具備這些優(yōu)勢。

LogDevice 和 Pulsar 讀取數(shù)據(jù)的方式有所不同。在 Pulsar 中,讀客戶端在 broker 上訂閱 topic,并從 broker 上接收消息;而在 LogDevice 中,讀客戶端直接與存儲(chǔ)節(jié)點(diǎn)相連。

像 LogDevice 這樣直接從存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù),允許讀操作有更大程度的扇出。也就是說,由于讀取器不需要訪問同一節(jié)點(diǎn),系統(tǒng)可以在單個(gè) topic 上支持更多讀取器。

但是,在需要保證日志的一致性時(shí),直接從存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù)會(huì)加長延遲。如果寫入器沒有確認(rèn)寫入的 entry,讀取器無法讀取該 entry。從存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù)時(shí),需要以某種方式通知存儲(chǔ)節(jié)點(diǎn) entry 已經(jīng)被復(fù)制到足夠多的節(jié)點(diǎn)上,并將 ack 發(fā)送到寫入器,在此之前 entry 不可讀。

在 Pulsar 中,客戶端通過 broker 進(jìn)行讀寫。這種讀寫方式在延遲和性能上都有優(yōu)勢。由于在同一個(gè)節(jié)點(diǎn)上進(jìn)行讀寫,所以在將 entry ack 發(fā)送到寫入器時(shí),該 entry 立即可讀。Pulsar 通過在 broker 上控制讀寫,得以支持更復(fù)雜的訂閱模型,如共享訂閱、Failover 訂閱[3]等。

一致性、多副本、Failover

LogDevice 和 Pulsar 采用相似的技術(shù)實(shí)現(xiàn)全局順序廣播協(xié)議(TOAB)[4]。將日志分為不同 epoch,每個(gè)節(jié)點(diǎn)(leader)可以決定該 epoch 中 entry 的序列號,并且相應(yīng)機(jī)制保證不會(huì)寫入以前的 epoch。

LogDevice 和 Pulsar 都使用 ZooKeeper 決定 leader。

在 LogDevice 中,leader 也稱作 sequencer。每個(gè)日志都有一個(gè) sequencer,每個(gè) sequencer 都被(從 ZookKeeper)分配了一個(gè)“epoch”號。LSN 由 epoch 和一個(gè)局部單調(diào)遞增組件組成,sequencer 決定每個(gè) entry 的 LSN,并將 epoch 中的 entry 轉(zhuǎn)發(fā)到一組存儲(chǔ)節(jié)點(diǎn)上。當(dāng)足夠多的存儲(chǔ)節(jié)點(diǎn) ack entry 時(shí),sequencer 將 ack 發(fā)送到發(fā)起寫請求的客戶端。在 sequencer 出現(xiàn)故障時(shí),就會(huì)有新的 sequencer 獲取新的 epoch,并可以立即服務(wù)于寫入操作。在后臺(tái)啟動(dòng)一個(gè)“封閉”前一個(gè) epoch 的操作,則會(huì)禁止從新 epoch 進(jìn)行讀取的操作,直到前一個(gè) epoch 被封?!胺忾]”操作涉及從節(jié)點(diǎn)集向足夠多的存儲(chǔ)節(jié)點(diǎn)通知新 epoch 的存在,因此寫入操作就不會(huì)有足夠多的 ack 來向客戶端 ack 寫入操作。

對于 Pulsar 來說,epoch 就是 BookKeeper ledger。每個(gè) topic 都有 BookKeeper ledger 列表,這些列表組成了 topic 的全部日志。當(dāng)一個(gè) Pulsar broker 崩潰時(shí),另一個(gè) broker 會(huì)接管這一 topic,由此保證封閉前一個(gè) broker 中的 ledger,創(chuàng)建自己的 ledger,并將其添加至 topic 的 ledger 列表中。最后三個(gè)操作涉及到了 ZooKeeper。一旦更新了 topic 的 ledger 列表,broker 就可以開始為 topic 上的讀寫提供支持。所有向 topic 寫入的數(shù)據(jù)在被 ack 并且對讀取器可見之前都會(huì)持久化到 BookKeeper ledger 上,存儲(chǔ)在一組存儲(chǔ)節(jié)點(diǎn)中。

對于 LogDevice 和 Pulsar(采用 BookKeeper)來說,entry 持久化只需要一個(gè) entry 命中一個(gè)節(jié)點(diǎn)子集,因此在有緩慢的或故障的存儲(chǔ)節(jié)點(diǎn)時(shí),可以保持低延遲的寫入。

在檢測到 leader 出現(xiàn)故障時(shí),LogDevice 可以在發(fā)現(xiàn)故障后很快地提供寫服務(wù),只需要兩次往返 ZooKeeper 來選擇一個(gè) sequencer。在 Pulsar 中,再次寫入前,需要先恢復(fù)之前的 ledger,恢復(fù)操作包括與一些存儲(chǔ)節(jié)點(diǎn)對話、向 ZooKeeper 進(jìn)行新的寫入等。另外,在 Pulsar 中,可以同時(shí)恢復(fù)讀寫,而在 LogDevice 中,讀取之前,必須進(jìn)行“封閉”操作,類似于 ledger 的恢復(fù)操作。

我們猜測 LogDevice 不允許在上一個(gè) epoch “封閉”之前寫入,因其讀操作不協(xié)調(diào),與性能無關(guān)。不管是否封閉前一個(gè) epoch,檢測到 sequencer 發(fā)生故障會(huì)占用恢復(fù)時(shí)間。允許寫入前的封閉操作需要 sequencer 與讀取器進(jìn)行協(xié)調(diào),這樣收效甚微,但卻會(huì)增加復(fù)雜性。在 Pulsar 中,由于是在 broker 上進(jìn)行讀取,在寫入前恢復(fù)之前的 ledger 就很容易。

存儲(chǔ)

LogDevice 存儲(chǔ)節(jié)點(diǎn)將 entry 存儲(chǔ)在 RocksDB 中。Entry 存儲(chǔ)在按時(shí)間順序排列的列族集合中,entry 由日志 ID 和 entry 的 LSN 組合進(jìn)行鍵控。簡單來說,每個(gè)存儲(chǔ)節(jié)點(diǎn)都有許多按時(shí)間順序排列的 RocksDB 實(shí)例,只向最新的 RocksDB 實(shí)例寫入。這些 RocksDB 實(shí)例盡量確保只進(jìn)行少量壓縮,以避免寫入放大。

Pulsar 存儲(chǔ)節(jié)點(diǎn)(BookKeeper)上有一個(gè)日志、一個(gè) entry 日志和一個(gè)索引。日志有專用磁盤。當(dāng)向 bookie 寫入 entry 時(shí),其實(shí)是在向日志磁盤寫入,并向?qū)懭肫?ack。然后,將 entry 放入一個(gè)暫存區(qū)域,當(dāng)此區(qū)域內(nèi)有足夠多的 entry 時(shí),就通過 ledger ID 和 entry ID 進(jìn)行存儲(chǔ),flush 到 entry 日志。此時(shí),entry 日志中的每條 entry 都已寫入索引,索引正是一個(gè) RocksDB 實(shí)例。

在有許多并發(fā)活躍日志時(shí),LogDevice 和 Pulsar 存儲(chǔ)層都可以實(shí)現(xiàn)低延遲寫入。將多個(gè)日志的 entry 交叉放在幾個(gè)文件中,可以最小化隨機(jī)寫入。這樣對旋轉(zhuǎn)磁盤的影響較大,在旋轉(zhuǎn)磁盤上寫入多個(gè)文件意味著磁頭必須物理移動(dòng)多次,但即使在固態(tài)磁盤上,優(yōu)先順序?qū)懭氡入S機(jī)寫入在性能上有更多優(yōu)勢。

但是,交錯(cuò)寫入也意味著要進(jìn)行更多讀取。

日志系統(tǒng)中的讀取通常分為兩類,追尾讀和追趕讀。對于追尾讀,LogDevice 和 Pulsar 都不太可能命中磁盤,因?yàn)樗钄?shù)據(jù)在某種程度上仍然應(yīng)該存儲(chǔ)在內(nèi)存緩存中;而追趕讀最終都會(huì)命中磁盤。吞吐量通常比追趕讀延遲更重要,LogDevice 和 Pulsar 的設(shè)計(jì)都與此相符。

雖然大多數(shù)讀取應(yīng)該是連續(xù)的,但是 LogDevice 需要讀取許多 SST 文件來進(jìn)行追趕讀。因?yàn)?RocksDB 在將 entry flush 到磁盤前會(huì)按鍵排序。這樣就會(huì)分不清楚是否在同一磁盤讀寫。如果是,追趕讀可能會(huì)影響系統(tǒng)的寫入性能。

RocksDB 允許配置多個(gè)路徑,將舊 SST 文件與新 SST 文件分開存儲(chǔ)。

由于 Pulsar 將寫入的關(guān)鍵路徑保存在單獨(dú)的磁盤上,讀取操作完全獨(dú)立。讀取通常也是有序的,因?yàn)?entry 日志中的數(shù)據(jù)在 flush 到磁盤前按照 ledger 和 entry ID 排序。

LogDevice 盡量避免壓縮,因此會(huì)放大寫入。這對于日志系統(tǒng)說得通,因?yàn)椴恍枰x取寫入的大部分?jǐn)?shù)據(jù),但會(huì)影響數(shù)據(jù)保留。不能刪除單個(gè)日志,因此系統(tǒng)中所有日志的保存時(shí)間都必須由保留時(shí)間決定。集群內(nèi)的所有日志都不能永久保存,有些甚至只能保存幾個(gè)小時(shí)。

在 Pulsar 中,要從存儲(chǔ)節(jié)點(diǎn)刪除日志,就需要先從索引中刪除。因此,索引會(huì)經(jīng)常壓縮,但是由于 entry 數(shù)據(jù)本身不在索引中,這也影響不大。存儲(chǔ)節(jié)點(diǎn)監(jiān)聽索引引用每個(gè) entry 日志的百分比。一旦一個(gè) entry 日志低于某個(gè)閾值,則復(fù)制活躍數(shù)據(jù)到新的“壓縮” entry 日志中,更新索引,并刪除原 entry 日志。

LogDevice 是對分布式日志空間的有趣補(bǔ)充。Pulsar 不僅是分布式日志系統(tǒng),更是一個(gè)完整的消息平臺(tái),因此不能將 LogDevice 直接與 Pulsar 進(jìn)行比較,但很高興看到 LogDevice 團(tuán)隊(duì)決定采用與 Pulsar 類似的架構(gòu)?,F(xiàn)在 LogDevice 已經(jīng)開源,十分期待它的使用。

看完上述內(nèi)容,你們掌握如何進(jìn)行LogDevice與Apache Pulsar之間的對比的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:如何進(jìn)行LogDevice與ApachePulsar之間的對比
標(biāo)題網(wǎng)址:http://aaarwkj.com/article34/igeope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、建站公司面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
水蜜桃在线观看一区二区国产| 亚洲限制级电影一区二区| 亚洲综合日韩精品国产av| 岛国大片一区二区三区| 欧美香蕉在线观看视频| 国产三级传媒在线观看| 国产精品亚洲欧美中字| 久久国产麻豆精品电影| 丰满人妻视频一二三区| 97成人在线免费视频| 日韩欧美亚洲另类视频| 国产亚洲成人精品久久| 女优一区二区三区蜜桃| 国产原创av超爽剧情系列| 丰满人妻被黑人猛烈进入免费| 91麻豆亚洲国产成人久久精品| 传媒视频在线观看网站| 成人粉嫩av一区二区白浆| 九九视频666免费| avav男人天堂亚洲天堂| 婷婷色爱区综合五月激情| 中文字幕日本人妻少妇| 国产伦理在线观看一区二区| 黑人巨大欧美一区二区| 亚洲国产丁香综合激情啪| 国产a情人一区二区国产| 午夜福利在线视频观看| 精品视频偷拍一区二区三区| 中文字幕日韩午夜精品| 黄色av手机在线观看| 国产高清自拍视频免费| 国产精品一区二区在线观看| 亚洲第六页亚洲第一页| 中文字幕乱码高清免费| 国产成人精品手机在线观看| 国产三级视频在线2022| 日本一区二区久久人妻高清| 国产三级视频在线观看视频 | 国语对白精品视频在线| 亚洲国产熟对白剧情一区二区| 综合激情丁香久久狠狠|