技术专家:为什么我们最终选择Apache Pulsar替代Kafka?
導讀:在傳統消息系統中,存在一些問題。一方面,消息的存儲和服務一般是緊耦合的,節點的擴容和運維不便,特別是在需要多備份來保證高可用性的場景。另一方面,消息的消費模式被固定,在企業內部需要維護多套系統來保證不同的消息消費場景。另外消息系統中,多租戶,多機房互備等企業級的特性和功能也不太豐富。
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消息平臺,它可以提供如下特性:
持久化:采用 BookKeeper 作為存儲層,靈活性強。
Ordering:每個消息有全局唯一的 ID,消息重發簡單。
Delivery Guarantees:At least once, at most once 和 effectively once。
高吞吐:單個分區高達 1.8 M 消息/秒。
低延遲:99% 的生產延遲小于 5 ms。
統一消息模型:同時支持兩種消費模型,流和隊列。
多租戶:單個群集可支持多租戶和用例。
跨地域復制:原生可用。
高可用、高擴展性、易運維
架構概述
Pulsar使用分層結構,將存儲機制與broker隔離開來。此體系結構為Pulsar提供以下好處:
1、獨立擴展broker,負責處理Producer發來的消息并分發給消費者。通過一個全局的ZK集群來處理多種協作式任務,例如說基于地理位置的復制。并將消息存儲到BookKeeper中,同時單個集群內也需要有一套ZK集群,來存儲一些元數據。
2、獨立擴展存儲(Bookies)
3、更容易容器化Zookeeper, Broker and Bookies
4、ZooKeeper提供集群的配置和狀態存儲
亮點如下:
1、負載均衡器:Pulsar內置負載均衡器,可在內部將負載分配給所有broker
2、服務發現:Pulsar具有內置的服務發現功能,可以識別在何處以及如何連接到broker。
3、全局復制器:可以在為同一個命名空間配置的N個borker之間復制數據。
4、全局ZK:全局ZK用于實現跨地域復制
跨地域復制
跨地域復制是Pulsar提供的解決方案。全局集群可以在名稱空間級別進行配置,以便在任意數量的集群(n-wayMesh解決方案)中進行復制。從下面的示例中,數據中心C沒有消費者,但數據中心A或B中仍會根據訂閱模型消費消息。
多租戶
多租戶特性通過對數據存儲的隔離,幫助為企業建立Pulsar集群。這一內置功能將大大降低組織的基礎設施建設和運營成本。
零Rebalancing時間
Pulsar的分層架構和代理的無狀態性質有助于實現零Rebalancing時間。如果一個新的broker被添加到集群中,它將立即可用;無需在集群中rebalancing數據。
從Bookies的角度來看:當一個新的Bookie添加到集群中時,由于其底層的分布式日志架構(讀/寫隔離),該節點立刻可以寫入數據?;诙螐椭婆渲玫臄祿ebalance在后臺進行,不會對集群產生任何影響。
統一的隊列和流模型
Pulsar使用同一個模型支持流和隊列語義。這個特性可以通過訂閱模型實現。消費者使用訂閱模型中的任何一個訂閱主題:
1、Exclusive - 支持流語義
2、Failover - 支持流語義
3、Shared - 支持隊列語義
函數
函數是能夠在Pulsar內部或外部存在的本地監聽器。從用途本身來看,函數可用于基于內容的路由,這將幫助企業應用程序路由預期的消息。
Proxy
當broker部署在云或Kubernetes中時,需要使用proxy將broker暴露于外部世界。Proxy本身可以提供身份驗證和授權。Proxy內置將授權令牌傳遞給broker以進行命名空間權限驗證的功能。
結論
Apache Pulsar使用基于分層體系結構的pub/sub模型,它具有跨地域復制、多租戶、零Rebalancing時間等功能。
原文地址:https://medium.com/@pckeyan/apache-pulsar-gentle-introduction-465ca6da0e18
作者:Karthikeyan Palanivelu,由方圓翻譯
不知大家讀完此文,是否被Pulsar所吸引?它確實彌補了一些競品的短板,例如地域復制、多用戶、擴展性、讀寫隔離等等。如果大家想了解更多關于Apache Pulsar的知識,那么就參加本月21-23日,由msup和高可用共同舉辦的GIAC全球互聯網架構大會吧!
Apache Pulsar和Apache BookKeeper的PMC成員和Committer翟佳將出席GIAC深圳站,作為中間件專場講師分享《下一代分布式消息系統Apache Pulsar》的話題。參加2019年GIAC深圳站,可以了解業界動態,和業界專家近距離接觸。
本屆大會,組委會還特別邀請到了105位來自Google、微軟、Oracle、eBay、百度、阿里、騰訊、商湯、圖森、字節跳動、新浪、美團點評等一線互聯網大廠嘉賓作為講師出席,分享他們的實踐經驗、遇到的問題及解決方案?,F在席位所剩不多,快來識別圖中二維碼報名吧!
轉載于:https://juejin.im/post/5d05c6a96fb9a07eaf2b8fa0
總結
以上是生活随笔為你收集整理的技术专家:为什么我们最终选择Apache Pulsar替代Kafka?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis实现求交集操作结果缓存的设计方
- 下一篇: 【译】Activitys, Thread