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

架構師的選擇,Pulsar還是Kafka?

開發 開發工具 Kafka
在本文中,我將重點介紹Pulsar的優勢,并為您提供一些理由,使您對比Kafka來考慮它。

介紹

最近,我一直在研究Pulsar及其與Kafka的比較。 快速搜索將顯示兩個最著名的開源消息傳遞系統之間存在當前的"戰爭"。

作為Kafka的用戶,我確實對Kafka的某些問題感到困惑,并且我對Pulsar感到非常失望。所以最后,我設法花了一些時間進行研究,并且做了很多研究。在本文中,我將重點介紹Pulsar的優勢,并為您提供一些理由,使您對比Kafka來考慮它。但是,請在產品使用,支持,社區,文檔等方面明確一點;Kafka顯然超過了Pulsar,并且只有在本文中討論的大多數優點都適合您的用例的情況下,才考慮使用Pulsar。讓我們開始!

[[352185]]

Kafka基礎知識

Kafka是消息傳遞系統之王。它由LinkedIn于2011年創建,并在Confluent的支持下得到了廣泛的傳播。Confluent已向開源社區發布了許多新功能和附加組件,例如用于模式演化的Schema Registry,用于從其他數據源輕松流式傳輸的Kafka Connect等。數據庫到Kafka,Kafka Streams進行分布式流處理,最近使用KSQL對Kafka主題執行類似SQL的查詢等等。它還具有用于許多系統的許多連接器,有關更多詳細信息,請查看Confluent Platform。

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

架構師的選擇,Pulsar還是Kafka?

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

Kafka的問題

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

如您所見,大多數問題與操作方面有關。 盡管安裝起來相對容易,但Kafka難以管理和調整。 而且,它還沒有像它可能的那樣靈活和有彈性。

Pulsar基礎知識

Pulsar由Yahoo在2013年創建,并于2016年捐贈給Apache基金會。Pulsar現在是Apache的頂級項目。Yahoo,Verizon,Twitter等公司在生產中使用它來處理數百萬條消息。它具有許多功能,并且非常靈活。它聲稱比Kafka更快,因此運行成本更低。它旨在解決Kafka的大部分難題,使其更易于擴展。

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

架構師的選擇,Pulsar還是Kafka?

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

Pulsar的特性

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

架構師的選擇,Pulsar還是Kafka?

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

如您所見,Pulsar具有許多有趣的功能。

Pulsar 動手

開始使用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文件后,將文件復制到pulsar目錄中的connectors目錄
  • 啟動Pulsar!
    1. $ bin/pulsar standalone 

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

產生消息:

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

閱讀消息:

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

Akka流示例

作為一個客戶示例,讓我們在Akka上使用Pulsar4s!

首先,我們需要創建一個Source來使用數據流,所需要的只是一個函數,該函數將按需創建使用者并查找消息ID:

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

然后,我們傳遞consumerFn函數來創建源:

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

Akka源的物化值是Control的一個實例,該對象提供了一種"關閉"方法,可用于停止使用消息。 現在,我們可以像往常一樣使用Akka Streams處理數據。

要創建一個接收器:

  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函數示例

Pulsar函數處理來自一個或多個主題的消息,對其進行轉換并將結果輸出到另一個主題:

架構師的選擇,Pulsar還是Kafka?

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

可以在兩個接口之間進行選擇以編寫函數:

  • 語言本機界面:不需要特定于Pulsar的庫或特殊的依賴項。無法訪問上下文。僅支持Java和Python。
  • Pulsar Function SDK:可用于Java / Python / Go,并提供更多功能,包括訪問上下文對象。

使用語言本機接口非常容易,您只需編寫一個簡單的函數即可轉換消息:

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

用Python編寫的這個簡單函數只是向所有傳入的字符串添加一個感嘆號,并將結果字符串發布到主題。

要使用SDK,您需要導入依賴項,例如在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) 

要發布無服務器功能并將其部署到集群,我們使用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的一個重要功能是您可以在發布該函數時設置交付保證:

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

有以下選擇:

架構師的選擇,Pulsar還是Kafka?

Pulsar的優勢

讓我們回顧一下與Kafka相比的主要優勢:

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

Pulsar的問題

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

  • 受歡迎程度:Pulsar不那么受歡迎。它缺乏支持,文檔和實際使用情況。對于大型組織而言,這是一個主要問題。
  • 由于n層體系結構,它需要更多組件:Bookkeeper。
  • 在平臺內沒有對流應用程序的適當支持。 Pulsar函數與Kafka Streams不同,它們更簡單,并且不用于實時流處理。 您無法進行有狀態處理。
  • 與Kafka相比,插件和客戶端更少。此外,掌握Pulsar技能的人較少,因此需要在內部學習。
  • 它在云中的支持較少。 Confluent具有托管云產品。

Confluent在Pulsar和Kafka之間進行了比較,可以在其中進行更多的詳細說明。 該博客還回答了有關Kafka與Pulsar的一些問題,但請注意,這些問題可能有偏見。

Pulsar使用案例

Pulsar可用于廣泛的用例:

  • 發布/訂閱隊列消息傳遞
  • 分布式日志
  • 事件源壁架,用于永久性事件存儲
  • 微服務
  • SQL分析
  • 無服務器功能

什么時候應該考慮Pulsar

  • 需要像RabbitMQ這樣的隊列,也需要像Kafka這樣的流處理程序。
  • 需要簡單的地理復制。
  • 多租戶是必須具備的,并且想確保每個團隊的訪問權限。
  • 需要將所有消息保留很長時間,并且不想將其卸載到另一個存儲中。
  • 性能對你至關重要,基準測試表明Pulsar提供了更低的延遲和更高的吞吐量。
  • 在本地運行,沒有設置Kafka的經驗,但具有Hadoop經驗。

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

結論

我是Kafka的忠實粉絲,這就是為什么我對Pulsar如此感興趣。競爭是好的,它驅動創新。

Kafka是一種成熟,富有彈性且經過戰斗考驗的產品,在世界范圍內獲得了巨大成功。 沒有它,我無法想象任何公司。 但是,我確實看到Kafka成為其自身成功的受害者,巨大的增長減慢了功能開發的速度,因為它們需要支持這么多大型公司。 刪除ZooKeeper依賴項等重要功能花費的時間太長。 這為諸如Pulsar等工具蓬勃發展創造了空間。 解決Kafka的一些問題并添加更多功能。

但是,Pulsar仍然很不成熟,在投入生產之前,我會格外小心。在將Pulsar納入你的組織之前,進行分析,進行基準測試,研究并編寫概念證明。從小處著手,在從Kafka遷移之前進行概念驗證,并在決定進行完全遷移之前先評估影響。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-02-01 07:20:51

KafkaPulsar搜索

2020-04-03 08:30:44

RabbitMQKafka軟件

2020-06-16 14:12:02

架構ITAPI

2020-08-24 08:50:12

架構師TL技術

2023-09-27 10:23:19

NoSQL數據模型

2009-12-18 10:22:50

Ray Ozzie架構師

2012-08-04 16:02:00

架構師

2020-03-24 07:40:00

RabbitMQKafka架構師

2015-05-06 14:23:55

2022-04-28 13:08:51

架構師軟件

2019-07-29 11:25:23

架構師架構方案架構

2009-12-29 11:18:00

架構師權衡取舍妥協

2015-10-28 13:39:25

2012-06-17 12:58:04

架構師架構

2019-07-23 18:15:26

技術大數據數據庫

2010-12-28 10:40:50

admin

2021-10-03 21:41:13

RocketMQKafkaPulsar

2019-09-27 09:56:31

軟件技術硬件

2020-01-16 15:35:00

高并發架構服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久日韩精品免费热麻豆美女 | 午夜性色a√在线视频观看9 | 亚洲国产一区在线 | 久草新在线 | 亚洲精品成人网 | 狠狠操狠狠干 | 亚洲一区在线日韩在线深爱 | 国产成人精品一区二区三区网站观看 | 欧美激情在线精品一区二区三区 | 欧美成人精品欧美一级 | 成人在线视频免费观看 | 成人亚洲视频 | 亚洲一区视频在线 | 亚洲免费视频一区 | 欧美成人一区二区 | 成人免费视频网 | 亚洲精品久久久久久下一站 | 成人黄色网址大全 | 欧美视频一区二区三区 | 成年人在线视频 | 不卡一区二区在线观看 | 91电影在线播放 | 羞羞视频在线观免费观看 | 一区二区三区av | 国产女人第一次做爰毛片 | 91在线电影 | 91美女在线观看 | 国产精品一区二区三区在线 | www.久草.com | 一区二区三区视频 | 国产精品久久久久久久岛一牛影视 | 亚洲精品一二区 | 成人免费视频网站在线观看 | www.v888av.com| 久久成人18免费网站 | 欧美日韩福利视频 | 日韩精品在线看 | 欧美一区二区三区 | 国产成人午夜电影网 | 激情毛片 | 欧美成人精品在线观看 |