成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Apache BookKeeper:一種面向Apache Pulsar的合格的存儲系統(tǒng)

譯文
存儲 存儲軟件
本文揭示了Apache Pulsar的存儲層背后的秘密。

?譯者 | 布加迪

審校 | 孫淑娟

如果您熟悉Kafka和RocketMQ等消息系統(tǒng),可能知道服務(wù)通常與其架構(gòu)中的存儲密切相關(guān)。與它們不同的是,Apache Pulsar在設(shè)計時采用了將存儲與計算分開的兩層架構(gòu),這實際上在其無狀態(tài)代理上進(jìn)行。Pulsar依賴Apache BookKeeper服務(wù)器(又叫bookies)進(jìn)行持久存儲。本文側(cè)重介紹BookKeeper基礎(chǔ)知識,表明它如何為所處理的數(shù)據(jù)實現(xiàn)高可用性。

圖1

Apache BookKeeper簡介

BookKeeper最初在雅虎開發(fā),代表了一種可靠的高性能存儲系統(tǒng)。它提供分布式可擴(kuò)展的存儲服務(wù),具有低延遲和強(qiáng)容錯性的優(yōu)點。這些充分說明了為什么它能夠充當(dāng)Pulsar的存儲層。BookKeeper將數(shù)據(jù)存儲在分類帳(ledger)中,分類帳只能追加且不可變。借助特殊的復(fù)制協(xié)議,BookKeeper以并發(fā)方式在多個節(jié)點上安全地存儲日志條目,因而具有高可用性。

顧名思義,BookKeeper和分類帳在云原生環(huán)境中大有用途。不妨設(shè)想一下簿記員使用分類帳記錄所有相關(guān)賬戶信息,以跟蹤企業(yè)的財務(wù)狀況。

Apache BookKeeper中的關(guān)鍵概念

為了更好地了解BookKeeper如何存儲數(shù)據(jù),不妨先看一下幾個基本概念。

  • Bookie

Bookie是BookKeeper中的存儲服務(wù)器或節(jié)點,彼此同等。BookKeeper強(qiáng)大的動態(tài)擴(kuò)展功能(尤其是在容器化環(huán)境中)歸功于無主節(jié)點(leaderless)設(shè)計。

  • Ensemble

用于存儲分類帳條目的可用bookie的集合,即寫入條目的節(jié)點。當(dāng)一個bookie失效時,處理寫入它的客戶端將換成一個新的bookie,這名為“ensemble change”。在Pulsar的計算存儲分離架構(gòu)中,客戶端應(yīng)用程序不需要關(guān)心存儲層中實際發(fā)生的事情。

  • 分類帳

分類帳是BookKeeper中的基本存儲單元,在Pulsar中又叫Segment。BookKeeper客戶端負(fù)責(zé)創(chuàng)建和刪除分類帳,并從分類帳中讀取條目。滿足某些條件時(比如條目數(shù)或壽命達(dá)到預(yù)設(shè)閾值),分類帳將被關(guān)閉,之后再無法向其寫入數(shù)據(jù),只允許讀取。任何客戶端都可以創(chuàng)建分類帳。理想情況下,創(chuàng)建分類帳的所有者客戶端應(yīng)該是關(guān)閉它的客戶端。一旦關(guān)閉,分類帳不可變。分類帳是最小的刪除單位,這意味著您只能刪除整個分類帳,而不能刪除分類帳中的單個條目。

除了用于存儲普通消息的分類帳外,BookKeeper還有一種特殊的分類帳,即游標(biāo)分類帳。游標(biāo)為Pulsar中的消息消費和確認(rèn)提供跟蹤機(jī)制。每個訂閱都有一個與之關(guān)聯(lián)的游標(biāo),游標(biāo)存儲消息消費和確認(rèn)的位置信息。消費者可能根據(jù)訂閱類型來共享同樣的游標(biāo)。我們在這里不詳細(xì)介紹這個話題。我們只需知道Pulsar在BookKeeper中為每個訂閱維護(hù)一個分類帳。在消費者處理消息(向代理發(fā)送確認(rèn))、代理收到確認(rèn)之后,代理隨后相應(yīng)地更新游標(biāo)分類帳。更具體地說,Pulsar定期匯總綁定到同一訂閱的所有消費者的所有確認(rèn)信息作為條目,并將其寫入bookie。這個過程與編寫普通消息基本相同。

  • 片段

片段在bookie的分類帳中存儲連續(xù)序列的條目。分類帳可能含有一個或多個片段。作為BookKeeper中最小的分布單元,單個分類帳的片段可以分散在不同的bookie中。這意味著嚴(yán)格來講,存儲在單個bookie的數(shù)據(jù)是分類帳的片段。對于單個片段而言,如果寫入 bookie失敗,會選擇新的bookie進(jìn)行寫入(即上面提到的“ensemble change”)。結(jié)果,將在bookie上創(chuàng)建新片段。請注意,這兩個片段屬于同一個分類帳,但屬于不同的ensemble。

  • 條目

條目含有寫入分類帳的實際數(shù)據(jù)。每個分類帳可能含有不同數(shù)量的條目。每個條目都有條目ID作為其在分類帳中的唯一標(biāo)識符。

  • 消息

消息是存儲在條目中的特定信息。消息可以分為兩種:單條消息和批量消息。

批量消息本質(zhì)上是一系列單條消息。在客戶端啟用消息批處理后,消息將在從生產(chǎn)者發(fā)送到代理之前作為一個整體進(jìn)行分組。Brokers然后調(diào)用BookKeeper客戶端,將批量消息寫入bookie。當(dāng)消費者從代理讀取消息時,代理將批量消息分發(fā)給它們。請注意,批量消息在客戶端合并和拆分。您可以使用batchingMaxPublishDelay(批量處理待發(fā)送消息的時間段)和batchingMaxMessages(批量消息中的最大消息數(shù))等參數(shù),為生產(chǎn)者定制批量消息配置。

注意:每個條目可能包含一條或多條消息。如果禁用消息批量處理,一個條目僅存儲一條消息。

圖2

視用例而定,您可以選擇啟用或禁用消息批量處理。與大多數(shù)分布式消息系統(tǒng)不同,Pulsar支持消息隊列和流傳輸。在消息隊列場景中,高吞吐量通常不是必須的,因此很少在客戶端啟用消息批量處理。相比之下,在流傳輸情形下,消息的生成速度要快得多,這需要批量處理,以便生產(chǎn)者可以將消息作為更大的包來發(fā)送。

數(shù)據(jù)高可用性

為了保證數(shù)據(jù)的高可用性,BookKeeper采用了一種仲裁機(jī)制向bookie并行寫入數(shù)據(jù)。具體來說,我們可以為要創(chuàng)建的新分類帳定義以下三個關(guān)鍵整數(shù):

  • Ensemble Size(E):寫入存儲在分類帳中的消息的可用bookie的數(shù)量。
  • Write Quorum(WQ):要寫入的消息的副本,或同時保存條目(或其所屬片段)的bookie的數(shù)量。WQ可以等于或小于E,但不能小于1或AQ。
  • Ack Quorum(AQ):在寫入成功之前,代理需要接收的確認(rèn)數(shù)量。如果達(dá)到這個值,代理將向客戶端發(fā)回確認(rèn)信息。否則,寫入失敗。

這三個參數(shù)可以分別在代理、命名空間和主題級別進(jìn)行配置。比如在代理級別,編輯Pulsar包的conf目錄中的broker.conf文件,并設(shè)置所需的值:

屬性文件

# Number of bookies to use when creating a ledger

managedLedgerDefaultEnsembleSize=2

# Number of copies to store for each message

managedLedgerDefaultWriteQuorum=2

# Number of guaranteed copies (acks to wait before a write is complete)

managedLedgerDefaultAckQuorum=2

注意:我們可以根據(jù)對一致性的需求來配置以上參數(shù)。比如說,WQ=AQ表示最高級別的一致性。在這種情況下,消息只有在收到所有副本的確認(rèn)后才能成功持久化。當(dāng)AQ比較小(比如AQ = 1)時,延遲會較低,但是數(shù)據(jù)丟失風(fēng)險較大。一般來說,最好設(shè)置AQ ≥ (WQ + 1)/2。

比如在下圖中,我們設(shè)置E = 5、WQ = 3和AQ = 2。這意味著:

  • 5個bookie可用于將數(shù)據(jù)存儲在分類帳中。
  • 一個條目的3個副本存儲在3個不同的bookie上。
  • 收到來自2個bookie的確認(rèn)時,表示條目寫入成功。

圖3

數(shù)據(jù)使用循環(huán)分布寫入bookie。這么設(shè)計是由于,它可以充分利用池中所有bookie的處理能力。如下所示,Entry 1寫入Bookie 1、Bookie 2和Bookie 3,Entry 2寫入Bookie 2、Bookie 3和Bookie 4,以此類推。

圖4

循環(huán)方法提供了一種簡單的方法來快速找出通過條目ID來存儲特定條目副本的bookie。比如說,我們知道條目2在Bookie 2、Bookie 3和Bookie 4上復(fù)制。2 mod 5等于 2,這意味著對于特定的條目X而言,如果X mod 5等于2,條目X就存儲在Bookie 2上、Bookie 3和Bookie 4上,比如條目 7 (X=7)。

使用Apache BookKeeper

當(dāng)您安裝Pulsar集群時,BookKeeper將一同部署。如果您想運行BookKeeper,不需要單獨下載其代碼。相反,下載Pulsar并在bin目錄中運行./pulsar-daemon start bookie命令。如果您使用Pulsar社區(qū)提供的Helm chart將其安裝在Kubernetes集群上,bookie Pods則部署在StatefulSet 中。

結(jié)語

本文介紹了BookKeeper的基礎(chǔ)知識,分析了如何將數(shù)據(jù)寫入bookie以實現(xiàn)高可用性。我們可以將BookKeeper簡單地視為一個數(shù)據(jù)庫,因為它不包含任何業(yè)務(wù)邏輯。該開源工具具有出色的可擴(kuò)展性、強(qiáng)大的容錯性和低延遲,具備成為合格的云原生存儲系統(tǒng)所需的特性,為Pulsar的獨特架構(gòu)提供了堅實的支持。

原文標(biāo)題:??Apache BookKeeper: What Makes A Qualified Storage System for Apache Pulsar??,作者:Sherlock Xu

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2024-01-16 08:08:12

SSD磁盤占用率

2017-10-25 08:44:03

NVMe SSD數(shù)據(jù)存儲

2016-11-23 09:57:45

Apache KuduHadoop存儲

2015-04-17 10:21:37

云存儲附加存儲

2021-07-04 22:27:42

存儲BookKeeper系統(tǒng)

2024-01-29 08:09:21

ApacheLTS版本

2025-03-20 08:57:54

Spring日志存儲系統(tǒng)

2016-12-06 20:01:00

超融合

2016-12-20 16:40:13

CarbonData數(shù)據(jù)存儲大數(shù)據(jù)

2017-01-05 09:48:51

大數(shù)據(jù)數(shù)據(jù)格式生態(tài)

2022-08-17 14:19:05

高性能計算

2018-11-21 10:21:55

CephSwift存儲系統(tǒng)

2021-03-22 10:30:15

存儲技術(shù)容器

2023-05-11 07:30:10

KV存儲GC優(yōu)化

2021-03-04 09:31:42

開源技術(shù) 項目

2024-07-05 11:05:47

2020-03-04 17:37:09

存儲系統(tǒng)硬件層

2014-02-17 17:24:42

博科固態(tài)存儲

2018-09-29 14:08:04

存儲系統(tǒng)分布式
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲欧美激情四射 | 91www在线观看| 亚洲自拍一区在线观看 | 美女天天干天天操 | 99re在线视频观看 | 日韩在线中文字幕 | 国产精品不卡一区二区三区 | 色婷婷综合在线观看 | 国产精品久久久久久久久免费高清 | 欧美日韩在线免费观看 | 国产色婷婷精品综合在线播放 | av综合站| 日韩波多野结衣 | 成人网址在线观看 | 亚洲免费久久久 | 91看片免费版 | 日韩免费视频一区二区 | 午夜影院毛片 | 91福利在线导航 | 91精品国产高清一区二区三区 | 国产三级一区二区三区 | 国产精品一区二区福利视频 | 欧美日韩中文字幕在线播放 | 7777精品伊人久久精品影视 | 欧美一区二区小视频 | 91网站视频在线观看 | av一区二区三区四区 | 久色视频在线观看 | 黄网站涩免费蜜桃网站 | 日韩av在线一区 | 日韩在线电影 | 午夜影院网站 | 亚洲激情在线观看 | 久久国产欧美日韩精品 | 久久国产亚洲 | 在线日韩中文字幕 | 中文av在线播放 | 一区中文字幕 | 日本久久福利 | 精品一区二区三区免费视频 | 亚洲欧美日韩一区 |