新一代MQ apache pulsar的架構(gòu)與核心概念

Pulsar基本架構(gòu)

  • Pulsar采用存儲(chǔ)計(jì)算分離的架構(gòu)独旷,pulsar使用了bookkeeper做消息的存儲(chǔ)音榜,bookkeeper保證了消息存儲(chǔ)的可靠性和高效性肥矢,bookkeeper為pulsar提供了存儲(chǔ)的擴(kuò)展能力
  • Pulsar使用zk做元數(shù)據(jù)存儲(chǔ)
  • 多租戶帐我,pulsar最初的設(shè)計(jì)就是支持多租戶的
  • 命名空間:一個(gè)租戶可以有多個(gè)命名空間,一個(gè)topic屬于一個(gè)命名空間菠净,pulsar中的配置都是以命名空間為單位配置的
image
  • Pulsar的broker用于處理消息的讀寫禁舷,broker中會(huì)有消息的本地緩存彪杉,因?yàn)槎鄶?shù)場(chǎng)景下,消息被寫入后會(huì)立刻被消費(fèi)榛了,因此broker中持有的新消息的緩存能非常有效的提高性能和MQ的整體吞吐
image

相比kafka在讶、rocketmq等MQ,pulsar基于bookkeeper的存儲(chǔ)計(jì)算分離架構(gòu)霜大,使得pulsar的消息存儲(chǔ)可以獨(dú)立于broker而擴(kuò)展构哺。

ACK

當(dāng)一個(gè)消息被消費(fèi)者消費(fèi)后,pulsar會(huì)給broker發(fā)送一個(gè)ack战坤,pulsar有三種消息的ack模式:

  • One by One:依次確認(rèn)每一個(gè)消息曙强,保證確認(rèn)的順序
  • Cumulative:累積的方式確認(rèn),只需要確認(rèn)一條消息途茫,用于表示這條消息以及之前的消息都已確認(rèn)
  • 每個(gè)消息獨(dú)立確認(rèn):shared消費(fèi)模式下可獨(dú)立確認(rèn)每一個(gè)消息

消息訂閱

Pulsar支持exclusive碟嘴、shared和failover三種消息訂閱模式,這三種模式的示意圖如下:

image

Exclusive模式(獨(dú)占模式)是pulsar默認(rèn)的消息訂閱模式囊卜,在這種模式下娜扇,中能有一個(gè)consumer消息消息,一個(gè)訂閱關(guān)系中只能有一臺(tái)機(jī)器消費(fèi)每個(gè)topic栅组,如果有多于一個(gè)consumer消費(fèi)此topic則會(huì)出錯(cuò)雀瓢,消費(fèi)示意圖如下:

image

Failover模式下,一個(gè)topic也是只有單個(gè)消費(fèi)消費(fèi)一個(gè)訂閱關(guān)系的消息玉掸,與exclusive模式不同之處在于刃麸,failover模式下,每個(gè)消費(fèi)者會(huì)被排序司浪,當(dāng)前面的消費(fèi)者無法連接上broker后泊业,消息會(huì)由下一個(gè)消費(fèi)者消費(fèi),消費(fèi)示意圖如下:

image

Shared模式(共享模式)下啊易,消息可被多個(gè)consumer同時(shí)消費(fèi)吁伺,這種模式下,無法保證消息的順序租谈,并且無法使用one by one和cumulative的ack模式箱蝠,消息通過roundrobin的方式投遞到每一個(gè)消費(fèi)者,消費(fèi)示意圖如下:

image

key_shared模式是shared模式的一種垦垂,不同的是它按key對(duì)消息做投遞,相同的key的消息會(huì)被投遞到同一個(gè)消費(fèi)者上牙瓢,消費(fèi)示意圖如下:

image

消息分區(qū)

單個(gè)topic的消息一般是由單個(gè)broker處理劫拗,為了提高topic的消息處理能力,pulsar提供了partitioned topic的支持矾克,與kafka和rocketmq一樣页慷,每個(gè)partition由不同的broker處理,在消費(fèi)時(shí),單個(gè)partition可選擇exclusive, failover和shared模式

Partitioned topic實(shí)際上是由n(partition的數(shù)量)個(gè)內(nèi)部的topic組成的酒繁,每個(gè)內(nèi)部的topic由一個(gè)broker處理滓彰,每個(gè)broker可處理多個(gè)topic,當(dāng)消息發(fā)送到broker前州袒,在producer端會(huì)通過routing mode將消息路由到某一個(gè)partition上揭绑,消息的生產(chǎn)與消費(fèi)示意圖如下:

image

消息的存儲(chǔ)與過期

默認(rèn)情況上,當(dāng)broker會(huì)立刻刪除所有收到了ack的消息郎哭,沒有被ack的消息會(huì)持久化存儲(chǔ)他匪,但是我們可以修改pulsar的行為,pulsar允許我們存儲(chǔ)已經(jīng)收到ack了的消息夸研,也可以給未收到ack的消息設(shè)置過期時(shí)間(TTL)

消息去重

Pulsar支持在broker端對(duì)消息做去重邦蜜,當(dāng)打開消息去重后,重發(fā)的消息(重試等產(chǎn)生的)不會(huì)被重新存儲(chǔ)亥至,這個(gè)特性使得pulsar對(duì)流式計(jì)算引擎(例如flink)更加友好悼沈,流式計(jì)算引擎更容易實(shí)現(xiàn)exactly-once語義的計(jì)算任務(wù),消息去重的存儲(chǔ)示意圖如下:

image

消息存儲(chǔ)

Pulsar使用apache bookkeeper做消息存儲(chǔ)姐扮,bookkeeper介紹:認(rèn)識(shí)BookKeeper

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末絮供,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子溶握,更是在濱河造成了極大的恐慌杯缺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睡榆,死亡現(xiàn)場(chǎng)離奇詭異萍肆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胀屿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門塘揣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宿崭,你說我怎么就攤上這事亲铡。” “怎么了葡兑?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵奖蔓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我讹堤,道長(zhǎng)吆鹤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任洲守,我火速辦了婚禮疑务,結(jié)果婚禮上沾凄,老公的妹妹穿的比我還像新娘。我一直安慰自己知允,他們只是感情好撒蟀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著温鸽,像睡著了一般保屯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗤朴,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天配椭,我揣著相機(jī)與錄音,去河邊找鬼雹姊。 笑死股缸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吱雏。 我是一名探鬼主播敦姻,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼歧杏!你這毒婦竟也來了镰惦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤犬绒,失蹤者是張志新(化名)和其女友劉穎旺入,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凯力,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茵瘾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咐鹤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拗秘。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祈惶,靈堂內(nèi)的尸體忽然破棺而出雕旨,到底是詐尸還是另有隱情,我是刑警寧澤捧请,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布凡涩,位于F島的核電站,受9級(jí)特大地震影響疹蛉,放射性物質(zhì)發(fā)生泄漏活箕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一氧吐、第九天 我趴在偏房一處隱蔽的房頂上張望讹蘑。 院中可真熱鬧,春花似錦筑舅、人聲如沸座慰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽版仔。三九已至,卻和暖如春误墓,著一層夾襖步出監(jiān)牢的瞬間蛮粮,已是汗流浹背旷余。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蒋歌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滚秩,地道東北人棺榔。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓饥追,卻偏偏與公主長(zhǎng)得像掠河,于是被迫代替她去往敵國和親秋麸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子心傀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容