一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - 編程技術(shù) - 架構(gòu)師的選擇,Pulsar還是Kafka?

架構(gòu)師的選擇,Pulsar還是Kafka?

2020-11-15 23:17今日頭條聞數(shù)起舞 編程技術(shù)

在本文中,我將重點(diǎn)介紹Pulsar的優(yōu)勢(shì),并為您提供一些理由,使您對(duì)比Kafka來(lái)考慮它。

介紹

最近,我一直在研究Pulsar及其與Kafka的比較。 快速搜索將顯示兩個(gè)最著名的開(kāi)源消息傳遞系統(tǒng)之間存在當(dāng)前的"戰(zhàn)爭(zhēng)"。

作為Kafka的用戶,我確實(shí)對(duì)Kafka的某些問(wèn)題感到困惑,并且我對(duì)Pulsar感到非常失望。所以最后,我設(shè)法花了一些時(shí)間進(jìn)行研究,并且做了很多研究。在本文中,我將重點(diǎn)介紹Pulsar的優(yōu)勢(shì),并為您提供一些理由,使您對(duì)比Kafka來(lái)考慮它。但是,請(qǐng)?jiān)诋a(chǎn)品使用,支持,社區(qū),文檔等方面明確一點(diǎn);Kafka顯然超過(guò)了Pulsar,并且只有在本文中討論的大多數(shù)優(yōu)點(diǎn)都適合您的用例的情況下,才考慮使用Pulsar。讓我們開(kāi)始!

架構(gòu)師的選擇,Pulsar還是Kafka?

Kafka基礎(chǔ)知識(shí)

Kafka是消息傳遞系統(tǒng)之王。它由LinkedIn于2011年創(chuàng)建,并在Confluent的支持下得到了廣泛的傳播。Confluent已向開(kāi)源社區(qū)發(fā)布了許多新功能和附加組件,例如用于模式演化的Schema Registry,用于從其他數(shù)據(jù)源輕松流式傳輸?shù)腒afka Connect等。數(shù)據(jù)庫(kù)到Kafka,Kafka Streams進(jìn)行分布式流處理,最近使用KSQL對(duì)Kafka主題執(zhí)行類似SQL的查詢等等。它還具有用于許多系統(tǒng)的許多連接器,有關(guān)更多詳細(xì)信息,請(qǐng)查看Confluent Platform。

Kafka快速,易于安裝,非常受歡迎,可用于廣泛的范圍或用例。 從開(kāi)發(fā)人員的角度來(lái)看,盡管Apache Kafka一直很友好,但在操作上卻是一團(tuán)糟。 因此,讓我們回顧一下Kafka的一些痛點(diǎn)。

架構(gòu)師的選擇,Pulsar還是Kafka?

> Kafka example. Source: https://talks.rmoff.net/pZC6Za/slides

Kafka的問(wèn)題

  • 擴(kuò)展Kafka十分棘手,這是由于代理還存儲(chǔ)數(shù)據(jù)的耦合體系結(jié)構(gòu)所致。 剝離另一個(gè)代理意味著它必須復(fù)制主題分區(qū)和副本,這非常耗時(shí)。
  • 沒(méi)有與租戶完全隔離的本地多租戶。
  • 存儲(chǔ)可能會(huì)變得非常昂貴,盡管可以長(zhǎng)時(shí)間存儲(chǔ)數(shù)據(jù),但是由于成本問(wèn)題,很少使用它。
  • 萬(wàn)一副本不同步,有可能丟失消息。
  • 必須提前計(jì)劃和計(jì)算代理,主題,分區(qū)和副本的數(shù)量(以適應(yīng)計(jì)劃的未來(lái)使用量增長(zhǎng)),以避免擴(kuò)展問(wèn)題,這非常困難。
  • 如果僅需要消息傳遞系統(tǒng),則使用偏移量可能會(huì)很復(fù)雜。
  • 集群重新平衡會(huì)影響相連的生產(chǎn)者和消費(fèi)者的性能。
  • MirrorMaker Geo復(fù)制機(jī)制存在問(wèn)題。像Uber這樣的公司已經(jīng)創(chuàng)建了自己的解決方案來(lái)克服這些問(wèn)題。

如您所見(jiàn),大多數(shù)問(wèn)題與操作方面有關(guān)。 盡管安裝起來(lái)相對(duì)容易,但Kafka難以管理和調(diào)整。 而且,它還沒(méi)有像它可能的那樣靈活和有彈性。

Pulsar基礎(chǔ)知識(shí)

Pulsar由Yahoo在2013年創(chuàng)建,并于2016年捐贈(zèng)給Apache基金會(huì)。Pulsar現(xiàn)在是Apache的頂級(jí)項(xiàng)目。Yahoo,Verizon,Twitter等公司在生產(chǎn)中使用它來(lái)處理數(shù)百萬(wàn)條消息。它具有許多功能,并且非常靈活。它聲稱比Kafka更快,因此運(yùn)行成本更低。它旨在解決Kafka的大部分難題,使其更易于擴(kuò)展。

Pulsar非常靈活; 它可以像Kafka這樣的分布式日志,也可以像RabbitMQ這樣的純消息傳遞系統(tǒng)。 它具有多種類型的訂閱,幾種交付保證,保留策略以及幾種處理模式演變的方法。 它還有很多功能……

架構(gòu)師的選擇,Pulsar還是Kafka?

> Pulsar architecture: https://pulsar.apache.org/docs/en/concepts-architecture-overview/

Pulsar的特性

  • 由于內(nèi)置了多租戶,因此不同的團(tuán)隊(duì)可以使用相同的集群并將其隔離。這解決了許多管理難題。它支持隔離,身份驗(yàn)證,授權(quán)和配額。
  • 多層體系結(jié)構(gòu):Pulsar將所有主題數(shù)據(jù)存儲(chǔ)在由Apache BookKeeper支持的專業(yè)數(shù)據(jù)層中,作為數(shù)據(jù)分類帳。 存儲(chǔ)和消息傳遞的分離解決了擴(kuò)展,重新平衡和維護(hù)集群的許多問(wèn)題。 它還提高了可靠性,幾乎不可能丟失數(shù)據(jù)。 另外,在讀取數(shù)據(jù)時(shí),可以直接連接到Bookeeper,而不會(huì)影響實(shí)時(shí)攝取。 例如,可以使用Presto對(duì)主題執(zhí)行SQL查詢,類似于KSQL,但請(qǐng)放心,這不會(huì)影響實(shí)時(shí)數(shù)據(jù)處理。
  • 虛擬主題。由于采用n層體系結(jié)構(gòu),因此對(duì)主題的數(shù)量沒(méi)有限制,主題及其存儲(chǔ)是分離的。還可以創(chuàng)建非持久性主題。
  • N層存儲(chǔ)。 Kafka的一個(gè)問(wèn)題是,存儲(chǔ)可能變得昂貴。 因此,它很少用于存儲(chǔ)"冷"數(shù)據(jù),并且消息經(jīng)常被刪除。 并且仍然向客戶展示透明視圖; 客戶端可以從時(shí)間開(kāi)始讀取,就像所有消息都存在于日志中一樣。
  • Pulsar函數(shù)。易于部署,輕量級(jí)計(jì)算過(guò)程,對(duì)開(kāi)發(fā)人員友好的API,無(wú)需運(yùn)行自己的流處理引擎(如Kafka)。
  • 安全性:它具有內(nèi)置的代理,多租戶安全性,可插入身份驗(yàn)證等等。
  • 快速重新平衡。 分區(qū)分為易于重新平衡的段。
  • 服務(wù)器端重復(fù)數(shù)據(jù)刪除和無(wú)效字段。無(wú)需在客戶端中執(zhí)行此操作,也可以在壓縮期間執(zhí)行重復(fù)數(shù)據(jù)刪除。
  • 內(nèi)置架構(gòu)注冊(cè)表。 支持多種策略,非常易于使用。
  • 地理復(fù)制和內(nèi)置發(fā)現(xiàn)。 將群集復(fù)制到多個(gè)區(qū)域非常容易。
  • 集成的負(fù)載均衡器和Prometheus指標(biāo)。
  • 多重集成:Kafka,RabbitMQ等。
  • 支持許多編程語(yǔ)言,例如GoLang,Java,Scala,Node,Python…
  • 客戶端不需要知道分片和數(shù)據(jù)分區(qū),這是在服務(wù)器端透明進(jìn)行的。

架構(gòu)師的選擇,Pulsar還是Kafka?

> List of features: https://pulsar.apache.org/

如您所見(jiàn),Pulsar具有許多有趣的功能。

Pulsar 動(dòng)手

開(kāi)始使用Pulsar非常容易。確保已安裝JDK!

  • 下載Pulsar并解壓縮:
    1. $ wget https://archive.apache.org/dist/pulsar/pulsar-2.6.1/apache-pulsar-2.6.1-bin.tar.gz 
  • 下載連接器(可選):
    1. $ wget https://archive.apache.org/dist/pulsar/pulsar-2.6.1/connectors/{connector}-2.6.1.nar 
  • 下載nar文件后,將文件復(fù)制到pulsar目錄中的connectors目錄
  • 啟動(dòng)Pulsar!
    1. $ bin/pulsar standalone 

Pulsar提供了一個(gè)稱為pulsar-client的CLI工具,我們可以使用它與集群進(jìn)行交互。

產(chǎn)生消息:

  1. $ bin/pulsar-client produce my-topic --messages "hello-pulsar" 

閱讀消息:

  1. $ bin/pulsar-client consume my-topic -s "first-subscription" 

Akka流示例

作為一個(gè)客戶示例,讓我們?cè)贏kka上使用Pulsar4s!

首先,我們需要?jiǎng)?chuàng)建一個(gè)Source來(lái)使用數(shù)據(jù)流,所需要的只是一個(gè)函數(shù),該函數(shù)將按需創(chuàng)建使用者并查找消息ID:

  1. val topic = Topic("persistent://standalone/mytopic") 
  2. val consumerFn = () => client.consumer(ConsumerConfig(topic, subscription)) 

然后,我們傳遞consumerFn函數(shù)來(lái)創(chuàng)建源:

  1. import com.sksamuel.pulsar4s.akka.streams._ 
  2. val pulsarSource = source(consumerFn, Some(MessageId.earliest)) 

Akka源的物化值是Control的一個(gè)實(shí)例,該對(duì)象提供了一種"關(guān)閉"方法,可用于停止使用消息。 現(xiàn)在,我們可以像往常一樣使用Akka Streams處理數(shù)據(jù)。

要?jiǎng)?chuàng)建一個(gè)接收器:

  1. val topic = Topic("persistent://standalone/mytopic") 
  2. val producerFn = () => client.producer(ProducerConfig(topic)) 
  3. import com.sksamuel.pulsar4s.akka.streams._ 
  4. val pulsarSink = sink(producerFn) 

完整示例摘自Pulsar4s:

Pulsar函數(shù)示例

Pulsar函數(shù)處理來(lái)自一個(gè)或多個(gè)主題的消息,對(duì)其進(jìn)行轉(zhuǎn)換并將結(jié)果輸出到另一個(gè)主題:

架構(gòu)師的選擇,Pulsar還是Kafka?

> Pulsar Functions. Source: https://pulsar.apache.org/docs/en/functions-overview/

可以在兩個(gè)接口之間進(jìn)行選擇以編寫函數(shù):

  • 語(yǔ)言本機(jī)界面:不需要特定于Pulsar的庫(kù)或特殊的依賴項(xiàng)。無(wú)法訪問(wèn)上下文。僅支持Java和Python。
  • Pulsar Function SDK:可用于Java / Python / Go,并提供更多功能,包括訪問(wèn)上下文對(duì)象。

使用語(yǔ)言本機(jī)接口非常容易,您只需編寫一個(gè)簡(jiǎn)單的函數(shù)即可轉(zhuǎn)換消息:

  1. def process(input): 
  2. return "{}!".format(input) 

用Python編寫的這個(gè)簡(jiǎn)單函數(shù)只是向所有傳入的字符串添加一個(gè)感嘆號(hào),并將結(jié)果字符串發(fā)布到主題。

要使用SDK,您需要導(dǎo)入依賴項(xiàng),例如在Go中,我們將編寫:

  1. package main 
  2. import ( 
  3. "context" 
  4. "fmt" 
  5. "github.com/apache/pulsar/pulsar-function-go/pf" 
  6.  
  7. func HandleRequest(ctx context.Context, in []byte) error { 
  8. fmt.Println(string(in) + "!") 
  9. return nil 
  10.  
  11. func main() { 
  12. pf.Start(HandleRequest) 

要發(fā)布無(wú)服務(wù)器功能并將其部署到集群,我們使用pulsar-admin CLI,如果使用Python,我們將使用:

  1. $ bin/pulsar-admin functions create \ 
  2. --py ~/router.py \ 
  3. --classname router.RoutingFunction \ 
  4. --tenant public \ 
  5. --namespace default \ 
  6. --name route-fruit-veg \ 
  7. --inputs persistent://public/default/basket-items 

Pulsar Functions的一個(gè)重要功能是您可以在發(fā)布該函數(shù)時(shí)設(shè)置交付保證:

  1. $ bin/pulsar-admin functions create \ 
  2. --name my-effectively-once-function \ 
  3. --processing-guarantees EFFECTIVELY_ONCE 

有以下選擇:

架構(gòu)師的選擇,Pulsar還是Kafka?

Pulsar的優(yōu)勢(shì)

讓我們回顧一下與Kafka相比的主要優(yōu)勢(shì):

  • 更多功能:Pulsar函數(shù),多租戶,架構(gòu)注冊(cè)表,n層存儲(chǔ),多種使用模式和持久性模式等。
  • 更大的靈活性:3種訂閱類型(獨(dú)占,共享和故障轉(zhuǎn)移),您可以在一個(gè)訂閱上收聽(tīng)多個(gè)主題。持久性選項(xiàng):非持久(快速),持久,壓縮(每個(gè)消息僅最后一個(gè)鍵)。可以選擇交付保證,它具有服務(wù)器端重復(fù)數(shù)據(jù)刪除和無(wú)效字樣。許多保留政策和TTL。
  • 無(wú)需提前定義擴(kuò)展需求。
  • 支持排隊(duì)和流媒體。 因此它可以像RabbitMQ或Kafka。
  • 由于存儲(chǔ)與代理分離,因此擴(kuò)展性更好。重新平衡更快,更可靠。
  • 易于操作:得益于去耦和n層存儲(chǔ)。 管理員REST API也很棒。
  • 與Presto的SQL集成,可直接查詢存儲(chǔ)而不會(huì)影響代理。
  • 借助n層自動(dòng)存儲(chǔ)選項(xiàng),可以更便宜地存儲(chǔ)。
  • 更快:許多基準(zhǔn)測(cè)試在各種情況下都表現(xiàn)出更好的性能。 Pulsar聲稱具有較低的延遲和更好的擴(kuò)展功能。 但是,這正受到Confluent的挑戰(zhàn),因此,請(qǐng)帶著鹽味做,并自己制定基準(zhǔn)。
  • Pulsar Functions將無(wú)服務(wù)器計(jì)算帶到您的消息傳遞平臺(tái)。
  • 集成架構(gòu)注冊(cè)表支持輕松的架構(gòu)演變
  • 集成的負(fù)載平衡器和Prometheus指標(biāo)。
  • 地理復(fù)制效果更好,更易于設(shè)置。Pulsar還內(nèi)置了發(fā)現(xiàn)能力。
  • 可以創(chuàng)建的主題數(shù)量沒(méi)有限制。
  • 與Kafka兼容,易于集成。

Pulsar的問(wèn)題

Pulsar并不完美,Kafka之所以流行是有原因的,它做一件事并且做得很好。 Pulsar試圖解決太多領(lǐng)域,但沒(méi)有超越任何一個(gè)領(lǐng)域。 讓我們總結(jié)一下Pulsar的一些問(wèn)題:

  • 受歡迎程度:Pulsar不那么受歡迎。它缺乏支持,文檔和實(shí)際使用情況。對(duì)于大型組織而言,這是一個(gè)主要問(wèn)題。
  • 由于n層體系結(jié)構(gòu),它需要更多組件:Bookkeeper。
  • 在平臺(tái)內(nèi)沒(méi)有對(duì)流應(yīng)用程序的適當(dāng)支持。 Pulsar函數(shù)與Kafka Streams不同,它們更簡(jiǎn)單,并且不用于實(shí)時(shí)流處理。 您無(wú)法進(jìn)行有狀態(tài)處理。
  • 與Kafka相比,插件和客戶端更少。此外,掌握Pulsar技能的人較少,因此需要在內(nèi)部學(xué)習(xí)。
  • 它在云中的支持較少。 Confluent具有托管云產(chǎn)品。

Confluent在Pulsar和Kafka之間進(jìn)行了比較,可以在其中進(jìn)行更多的詳細(xì)說(shuō)明。 該博客還回答了有關(guān)Kafka與Pulsar的一些問(wèn)題,但請(qǐng)注意,這些問(wèn)題可能有偏見(jiàn)。

Pulsar使用案例

Pulsar可用于廣泛的用例:

  • 發(fā)布/訂閱隊(duì)列消息傳遞
  • 分布式日志
  • 事件源壁架,用于永久性事件存儲(chǔ)
  • 微服務(wù)
  • SQL分析
  • 無(wú)服務(wù)器功能

什么時(shí)候應(yīng)該考慮Pulsar

  • 需要像RabbitMQ這樣的隊(duì)列,也需要像Kafka這樣的流處理程序。
  • 需要簡(jiǎn)單的地理復(fù)制。
  • 多租戶是必須具備的,并且想確保每個(gè)團(tuán)隊(duì)的訪問(wèn)權(quán)限。
  • 需要將所有消息保留很長(zhǎng)時(shí)間,并且不想將其卸載到另一個(gè)存儲(chǔ)中。
  • 性能對(duì)你至關(guān)重要,基準(zhǔn)測(cè)試表明Pulsar提供了更低的延遲和更高的吞吐量。
  • 在本地運(yùn)行,沒(méi)有設(shè)置Kafka的經(jīng)驗(yàn),但具有Hadoop經(jīng)驗(yàn)。

請(qǐng)注意,如果在云中,請(qǐng)考慮基于云的解決方案。云提供商擁有涵蓋某些用例的不同服務(wù)。例如,對(duì)于隊(duì)列消息傳遞,云提供商提供了許多服務(wù),例如Google pub / sub。對(duì)于分布式日志,有Confluent云或AWS Kinesis。云提供商還提供了非常好的安全性。Pulsar的優(yōu)勢(shì)在于可以在一個(gè)平臺(tái)上提供許多功能。一些團(tuán)隊(duì)可能將其用作微服務(wù)的消息傳遞系統(tǒng),而另一些團(tuán)隊(duì)則將其用作數(shù)據(jù)處理的分布式日志。

結(jié)論

我是Kafka的忠實(shí)粉絲,這就是為什么我對(duì)Pulsar如此感興趣。競(jìng)爭(zhēng)是好的,它驅(qū)動(dòng)創(chuàng)新。

Kafka是一種成熟,富有彈性且經(jīng)過(guò)戰(zhàn)斗考驗(yàn)的產(chǎn)品,在世界范圍內(nèi)獲得了巨大成功。 沒(méi)有它,我無(wú)法想象任何公司。 但是,我確實(shí)看到Kafka成為其自身成功的受害者,巨大的增長(zhǎng)減慢了功能開(kāi)發(fā)的速度,因?yàn)樗鼈冃枰С诌@么多大型公司。 刪除ZooKeeper依賴項(xiàng)等重要功能花費(fèi)的時(shí)間太長(zhǎng)。 這為諸如Pulsar等工具蓬勃發(fā)展創(chuàng)造了空間。 解決Kafka的一些問(wèn)題并添加更多功能。

但是,Pulsar仍然很不成熟,在投入生產(chǎn)之前,我會(huì)格外小心。在將Pulsar納入你的組織之前,進(jìn)行分析,進(jìn)行基準(zhǔn)測(cè)試,研究并編寫概念證明。從小處著手,在從Kafka遷移之前進(jìn)行概念驗(yàn)證,并在決定進(jìn)行完全遷移之前先評(píng)估影響。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 菠萝视频在线完整版 | 九九久久国产精品大片 | 日韩视频第二页 | 欧美成人午夜片一一在线观看 | 国产一区二区在线观看美女 | 亚洲国产综合久久久无码色伦 | 日本大学jalapsiki | ass极品美妇pic | 村妇超级乱淫伦小说全集 | 色综合91久久精品中文字幕 | 成人高清视频在线观看 | 亚洲欧美国产精品久久久 | 国产亚洲精aa在线观看不卡 | 视频免费观看在线播放高清 | cosplay 极品videos | 久久精品一区二区免费看 | 欧美日韩国产一区二区三区不卡 | 国产精品亚洲午夜不卡 | 免费看片黄 | 亚洲精品午夜久久aaa级久久久 | 四虎在线最新地址公告 | 日韩一级片在线观看 | 精品一区二区三区中文 | 欧美日韩国产最新一区二区 | 国产精选之刘婷野战 | 国产午夜视频在线观看网站 | 丰满大乳欲妇三级k8 | 草莓丝瓜芭乐樱桃榴莲色多黄 | 青草久久伊人 | 欧美男同video | 好大好猛好爽好深视频免费 | 91国内精品线免费播放 | 亚洲男人的天堂成人 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 黄+色+性+人免费 | 国产卡一卡二卡三卡四 | 天天综合色网 | 91嫩草私人成人亚洲影院 | 日本高清免费观看 | 国产成人精品一区二区仙踪林 | a网在线|