被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

Apache 設計 Java 雅虎 NoSQL 金融 Flickr 硬件 Google 高可用架構 2019-05-13

導讀:在傳統消息系統中,存在一些問題。一方面,消息的存儲和服務一般是緊耦合的,節點的擴容和運維不便,特別是在需要多備份來保證高可用性的場景。另一方面,消息的消費模式被固定,在企業內部需要維護多套系統來保證不同的消息消費場景。另外消息系統中,多租戶,多機房互備等企業級的特性和功能也不太豐富。

Apache Pulsar採用了分層的架構,解決了存儲計算的耦合,同時提供了很好的擴展性和可維護性。Pulsar也通過訂閱層的抽象,提供了統一的消息消費模型。特別是在Pulsar的設計之初,就注重對多租戶,多機房互備等方面的需求,提供了眾多完備的企業級的特性。

Apache Pulsar從2015年初在Yahoo全球近十個機房內部大規模部署,穩定服務了Yahoo內部郵箱,金融,Flickr,廣告,NoSQL等眾多的應用場景,一共創建了80多個租戶,230多萬個topic。 智聯招聘在18年用Pulsar替換了線上原有的RabbitMQ,作為內部的消息總線,服務內部的20多個應用,每天會產生6億多條消息和3TB的數據。在減輕硬件,運維和部署成本的同時,為系統提供了更好的服務質量和擴展性。

Apache Pulsar,是一個使用Apache Bookkeeper提供持久化的pub/sub消息平臺,它可以提供如下特性:

  • 跨地域複製

  • 多租戶

  • 零數據丟失

  • 零Rebalancing時間

  • 統一的隊列和流模型

  • 高可擴展性

  • 高吞吐量

  • Pulsar Proxy

  • 函數

Apache Pulsar的文檔對這些特性都有詳細解釋,有興趣可以去看官方文檔。

架構

被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

Pulsar使用分層結構,將存儲機制與broker隔離開來。此體系結構為Pulsar提供以下好處:

  1. 獨立擴展broker

  2. 獨立擴展存儲(Bookies)

  3. 更容易容器化Zookeeper, Broker and Bookies

  4. ZooKeeper提供集群的配置和狀態存儲

被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

亮點如下:

  1. 負載均衡器:Pulsar內置負載均衡器,可在內部將負載分配給所有broker

  2. 服務發現:Pulsar具有內置的服務發現功能,可以識別在何處以及如何連接到broker。

  3. 全局複製器:可以在為同一個命名空間配置的N個borker之間複製數據。

  4. 全局ZK: 全局ZK用於實現跨地域複製


跨地域複製

跨地域複製是Pulsar提供的解決方案。全局集群可以在名稱空間級別進行配置,以便在任意數量的集群(n-wayMesh解決方案)中進行復制。從下面的示例中,數據中心C沒有消費者,但數據中心A或B中仍會根據訂閱模型消費消息。

被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

多租戶

多租戶特性通過對數據存儲的隔離,幫助為企業建立Pulsar集群。這一內置功能將大大降低組織的基礎設施建設和運營成本。

零Rebalancing時間

Pulsar的分層架構和代理的無狀態性質有助於實現零Rebalancing時間。如果一個新的broker被添加到集群中,它將立即可用;無需在集群中rebalancing數據。

從Bookies的角度來看:當一個新的Bookie添加到集群中時,由於其底層的分佈式日誌架構(讀/寫隔離),該節點立刻可以寫入數據。基於段複製配置的數據rebalance在後臺進行,不會對集群產生任何影響。

統一的隊列和流模型

Pulsar使用同一個模型支持流和隊列語義。這個特性可以通過訂閱模型實現。消費者使用訂閱模型中的任何一個訂閱主題:

  1. Exclusive - 支持流語義

  2. Failover - 支持流語義

  3. Shared - 支持隊列語義

被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

函數

函數是能夠在Pulsar內部或外部存在的本地監聽器。從用途本身來看,函數可用於基於內容的路由,這將幫助企業應用程序路由預期的消息。

Proxy

當broker部署在雲或Kubernetes中時,需要使用proxy將broker暴露於外部世界。Proxy本身可以提供身份驗證和授權。Proxy內置將授權令牌傳遞給broker以進行命名空間權限驗證的功能。

結論

Apache Pulsar使用基於分層體系結構的pub/sub模型,它具有跨地域複製、多租戶、零Rebalancing時間等功能。

原文地址:https://medium.com/@pckeyan/apache-pulsar-gentle-introduction-465ca6da0e18

參考閱讀:

  • 10行代碼理解Java鎖消除

  • 未來架構| 雲原生時代的分佈式事務

  • 5分鐘瞭解Java 12 八大新特性

  • 主流微服務註冊中心淺析和對比

  • 一圖瞭解Google工具棧

  • Facebook F4架構解讀:千億級圖片存儲Haystack的演進

本文作者Karthikeyan Palanivelu,由方圓翻譯。轉載本文請註明出處,歡迎更多小夥伴加入翻譯及投稿文章的行列,詳情請戳公眾號菜單「聯繫我們」。

GIAC全球互聯網架構大會深圳站將於2019年6月舉行,Apache Pulsar和Apache BookKeeper的PMC成員和Committer翟佳將作為中間件專場的講師出席2019年GIAC深圳站,並做關於Apache Pulsar的演講。參加2019年GIAC深圳站,可以瞭解業界動態,和業界專家近距離接觸。

被視為代替Kafka的消息隊列:Apache Pulsar設計簡介

參加 GIAC,盤點2019年最新技術,目前購買7.5折優惠 ,多人購買有更多優惠。識別二維碼瞭解大會更多詳情。

相關推薦

推薦中...