企業(yè)級發(fā)布訂閱(pub-sub)消息系統(tǒng)-Apache Pulsar

      網(wǎng)友投稿 937 2022-05-29

      Apache Pulsar,是一個(gè)企業(yè)級的分布式消息系統(tǒng),最初由Yahoo開發(fā)并在2016年開源,目前正在Apache基金會下孵化。Plusar已經(jīng)在Yahoo的生產(chǎn)環(huán)境使用了三年多,主要服務(wù)于Mail、Finance、Sports、 Flickr、 the Gemini Ads platform、 Sherpa以及Yahoo的KV存儲。它是一個(gè)由持久存儲(使用Apache Bookkeeper)支持的pub-sub消息傳遞平臺,具有以下特性:

      地域復(fù)制

      多租戶

      零數(shù)據(jù)丟失

      零重新平衡時(shí)間

      統(tǒng)一排隊(duì)和流媒體模型

      高度可擴(kuò)展

      高吞吐量

      Pulsar代理

      Functions

      SQL

      更多詳細(xì)信息可查看官方詳細(xì)文檔。

      架構(gòu)

      在最高層, 一個(gè)Pulsar實(shí)例由一個(gè)或多個(gè)Pulsar集群組成。實(shí)例中的群集之間可以相互復(fù)制數(shù)據(jù)。

      一個(gè)Pulsar集群由下面三部分組成:

      一個(gè)或者多個(gè)brokers負(fù)責(zé)處理和負(fù)載均衡從生產(chǎn)者源源不斷發(fā)送出的消息,并將他們發(fā)送給消費(fèi)者。它與配置存儲交互來處理相應(yīng)的任務(wù),它將消息存儲在BookKeeper實(shí)例中(aka bookies)。它依賴ZooKeeper集群處理特定的任務(wù),等等。

      一個(gè)包含一個(gè)或者多個(gè)Bookies的BookKeeper,這個(gè)BookKeeper主要負(fù)責(zé)消息的 持久化存儲

      用于Pulsar集群操作的該P(yáng)ulsar集群獨(dú)有的ZooKeeper

      以下是上圖中的亮點(diǎn),讓我們選擇Pulsar:

      1、負(fù)載均衡器:Pulsar具有內(nèi)置負(fù)載均衡器,可在內(nèi)部向所有代理分配負(fù)載。

      2、服務(wù)發(fā)現(xiàn):Pulsar內(nèi)置服務(wù)發(fā)現(xiàn),以確定使用單個(gè)端點(diǎn)連接到代理的位置和方式。

      3、全局復(fù)制器:幫助在命名空間配置的n代理之間復(fù)制數(shù)據(jù)。

      4、全局ZK:Global Zookeeper有助于實(shí)現(xiàn)地理復(fù)制。

      特性

      地理復(fù)制是Pubsar的開箱即用解決方案。可以在命名空間級別配置全局集群,以便在任意數(shù)量的集群中復(fù)制它(n路網(wǎng)格解決方案)。從以下示例中,數(shù)據(jù)中心C沒有使用者,但仍然根據(jù)訂閱模型在數(shù)據(jù)中心A或B中使用消息。

      Pulsar有一個(gè)租戶的概念。租戶可以跨群集傳播,每個(gè)都可以應(yīng)用自己的身份驗(yàn)證和授權(quán)方案。它們也是可以管理存儲配額,消息TTL和隔離策略的管理單元。

      通過多租戶功能為數(shù)據(jù)存儲提供隔離,有助于為企業(yè)建立一個(gè)集群。這種內(nèi)置功能將大大降低組織的基礎(chǔ)架構(gòu)和運(yùn)營成本。

      Pulsar的分層架構(gòu)和broker的無國籍性質(zhì)有助于實(shí)現(xiàn)零重新平衡時(shí)間。如果將新broker添加到群集,則它立即可用于寫入和讀取; 不會花費(fèi)任何時(shí)間在群集中重新平衡數(shù)據(jù)。

      從Bookies的角度來看:當(dāng)一個(gè)新的bookie被添加到集群中時(shí); 由于其基礎(chǔ)分布式日志架構(gòu) - 讀/寫隔離,它立即為任何寫入做好準(zhǔn)備。基于段復(fù)制配置的數(shù)據(jù)重新平衡將在幕后進(jìn)行,而不會影響群集。

      企業(yè)級發(fā)布訂閱(pub-sub)消息系統(tǒng)-Apache Pulsar

      Pulsar在一個(gè)模型中支持流式和排隊(duì)語義。此功能可以通過訂閱模型實(shí)現(xiàn)。消費(fèi)者使用任何一種訂閱模型訂閱該主題:

      1、獨(dú)占(exclusive) - 支持流語義

      2、故障轉(zhuǎn)移(failover) - 支持流語義

      3、共享(shared) - 支持排隊(duì)語義

      Pulsar Functions,一套基于無服務(wù)器化(Serverless)的輕量級計(jì)算框架。這套計(jì)算框架為數(shù)據(jù)科學(xué)家提供了最為簡便的方式進(jìn)行流計(jì)算邏輯的編寫。學(xué)習(xí)成本基本為零,只要能寫 Java 或者 Python 的函數(shù),就可以編寫在 Pulsar 進(jìn)行流計(jì)算的邏輯。

      基于 Pulsar Functions 的架構(gòu)和 serverless 的理念,實(shí)現(xiàn)了一套無服務(wù)器化的連接器(Connectors)框架 Pulsar IO。Pulsar IO 提供了簡化了 Pulsar 和流生態(tài)環(huán)境的鏈接。用戶不需要編寫任何的代碼,只需要準(zhǔn)備一個(gè)簡單的配置文件。并且提供了對連接器的自動(dòng)的容錯(cuò)管理,負(fù)載均衡,隨著負(fù)載自動(dòng)伸縮擴(kuò)容等,極其簡化了用戶的使用。

      目前已經(jīng)提供的連接器包括:

      Kafka

      Kinesis

      RabbitMQ

      Elastic-search

      HDFS

      Aerospike

      JDBC 等。

      當(dāng)部署在云或Kubernetes中時(shí),需要使用Proxy將borker暴露給外界。Proxy本身可以提供身份驗(yàn)證和授權(quán),并在TLS或沒有TLS的情況下與代理無縫連接。Proxy具有內(nèi)置功能,可將授權(quán)令牌傳遞給Proxy以進(jìn)行命名空間權(quán)限驗(yàn)證。

      Pulsar存儲-分布式存儲系統(tǒng)Apache BookKeeper

      Pulsar用 Apache BookKeeper作為持久化存儲。 BookKeeper是一個(gè)分布式的預(yù)寫日志(WAL)系統(tǒng),有如下幾個(gè)特性特別適合Pulsar的應(yīng)用場景:

      能讓Pulsar創(chuàng)建多個(gè)獨(dú)立的日志,這種獨(dú)立的日志就是ledgers. 隨著時(shí)間的推移,Pulsar會為Topic創(chuàng)建多個(gè)ledgers。

      為按條目復(fù)制的順序數(shù)據(jù)提供了非常高效的存儲。

      保證了多系統(tǒng)掛掉時(shí)ledgers的讀取一致性。

      提供不同的Bookies之間均勻的IO分布的特性。

      容量和吞吐量都能水平擴(kuò)展。并且容量可以通過在集群內(nèi)添加更多的Bookies立刻提升。

      Bookies被設(shè)計(jì)成可以承載數(shù)千的并發(fā)讀寫的ledgers。 使用多個(gè)磁盤設(shè)備,一個(gè)用于日志,另一個(gè)用于一般存儲,這樣Bookies可以將讀操作的影響和對于寫操作的延遲分隔開。

      Pulsar SQL

      Pulsar的一個(gè)常見用例是存儲事件數(shù)據(jù)流。通常,事件數(shù)據(jù)由預(yù)定義字段構(gòu)成。用戶能夠查詢已存儲在Pulsar主題中的現(xiàn)有數(shù)據(jù)具有巨大的價(jià)值。通過Schema Registry的實(shí)現(xiàn),結(jié)構(gòu)化數(shù)據(jù)可以存儲在Pulsar中,并允許通過SQL語言查詢該數(shù)據(jù)。

      通過利用Presto,我們創(chuàng)建了一種方法,使用戶能夠以非常有效和可擴(kuò)展的方式查詢存儲在Pulsar中的結(jié)構(gòu)化數(shù)據(jù)。我們將在下面的性能部分討論為什么這個(gè)非常有效和可擴(kuò)展。

      Pulsar SQL的核心是Presto Pulsar連接器,它允許Presto集群中的Presto工作人員從Pulsar查詢數(shù)據(jù)。

      Apache Pulsar 實(shí)時(shí)場景的應(yīng)用

      實(shí)時(shí)數(shù)據(jù)處理在各個(gè)行業(yè)和領(lǐng)域中已經(jīng)變得越來越關(guān)鍵。但是在實(shí)時(shí)數(shù)據(jù)棧中,Messaging,Computing和Storage三個(gè)部分的分離,給方案的實(shí)現(xiàn)帶來了高復(fù)雜性,低可維護(hù)性,低效率等問題。

      Apache Pulsar在這三個(gè)方面上提供一個(gè)端到端的實(shí)時(shí)數(shù)據(jù)解決方案。

      1、Messaging:Pulsar對pub/sub和queue兩種模式提供統(tǒng)一的支持,同時(shí)保證了一致性,高性能和易擴(kuò)展性。

      2、Computing:Pulsar內(nèi)部的Pulsar-Functions提供了Stream-native的輕量級計(jì)算框架,保證了數(shù)據(jù)的即時(shí)流式處理。

      3、Storage:Pulsar借助Apache BookKeeper提供了以segment為中心的存儲架構(gòu),保證了存儲的性能,持久性和彈性。

      與Kafka對比

      Pulsar被稱為下一代消息隊(duì)列,那它與kafka之間都有哪些異同點(diǎn)呢?請看下表:

      對比總結(jié):

      Apache Pulsar將高性能流(Apache Kafka追求)和靈活的傳統(tǒng)排隊(duì)(RabbitMQ追求)結(jié)合到一個(gè)統(tǒng)一的消息傳遞模型和API中。Pulsar 使用統(tǒng)一的API 為您提供一個(gè)流式和排隊(duì)系統(tǒng),具有相同的高性能。

      總結(jié)

      Apache Pulsar是一個(gè)功能強(qiáng)大的pub-sub模型,基于分層架構(gòu),開箱即用,具有Geo-Replication,多重租戶,零重新平衡時(shí)間,統(tǒng)一排隊(duì)和流,基于TLS的身份驗(yàn)證/授權(quán),代理和持久性。

      Apache 分布式消息隊(duì)列 RabbitMQ

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:人人都會數(shù)據(jù)分析 | 了解統(tǒng)計(jì)指標(biāo)與異常值的簡單處理
      下一篇:設(shè)計(jì)模式——命令模式
      相關(guān)文章
      亚洲国产另类久久久精品黑人| 亚洲色一色噜一噜噜噜| 国产aⅴ无码专区亚洲av麻豆| 亚洲精品av无码喷奶水糖心| 国产亚洲精品bv在线观看| 亚洲国产午夜精品理论片| 久久丫精品国产亚洲av| 久久久亚洲欧洲日产国码二区| 亚洲一区中文字幕久久| 色噜噜综合亚洲av中文无码| 亚洲美女视频网址| 4444亚洲国产成人精品| 亚洲精品第五页中文字幕| 亚洲黄色在线观看| 亚洲国产精品综合久久2007| 亚洲性色高清完整版在线观看| 亚洲成人免费电影| 亚洲1234区乱码| 国产成+人+综合+亚洲专| 亚洲国产精品免费观看| 亚洲色大成网站www久久九 | 亚洲AV日韩AV无码污污网站 | 久久亚洲国产精品| 久久精品国产亚洲| 亚洲国产综合精品中文第一区| 亚洲欧洲一区二区| 亚洲男女一区二区三区| 亚洲一级毛片中文字幕| 国产亚洲精aa在线看| 亚洲国产精品无码第一区二区三区| 亚洲AV无码国产精品永久一区| 国产成人 亚洲欧洲| 久久久久一级精品亚洲国产成人综合AV区 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲日韩精品国产一区二区三区| 亚洲AV无码AV日韩AV网站| 婷婷综合缴情亚洲狠狠尤物| 久久久久亚洲AV成人网人人网站 | 亚洲色大成网站www永久男同 | 国产99久久亚洲综合精品| 亚洲中文字幕无码专区|