聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

環球新動態:輕量級微服務計算框架Pulsar——下一代的消息系統

來源:CSDN 時間:2023-01-10 15:19:53

Pulsar 是下一代的新型消息系統,將批流處理集于一身,并且致力于克服一些現有的消息系統的弱點。Apache Pulsar 是由 Yahoo 開發并開源的企業級消息系統。由 Yahoo 在 2016年開源,并在 2018 年成為 Apache Software Foundation 頂級項目。為了有更好的運行效率、可擴展性和靈活性,Pulsar 從架構上就是分層架構。這樣的分層架構相比以往的單體架構更加靈活,可以根據需要來進行配置存儲層和處理層,更加容易維護和擴容。


【資料圖】

Pulsar Overview

Apache Pulsar 是一個提供多租戶并且擁有高性能的消息系統,早期由 Yahoo 進行開發,后由 ASF 進行管理。 

Pulsar 有以下特征: 

原生支持多集群,并且在集群之間通過地域復制 (geo-replication) 無縫銜接。 

端到端之間的低延遲。 

百萬 topic 無縫擴展。 

支持多種客戶端比如:Java、Go、C++、Python。 

支持獨占訂閱、共享訂閱、故障轉移訂閱。 

用 BookKeeper 保證消息的持久化。

原生支持輕量級微服務計算框架 Pulsar Functions。 

基于 Pulsar Functions 的微服務連接器框架 Pulsar IO,方便數據在 Apache Pulsar 的輸入輸出。

分層存儲提供了當數據變為老數據時可以從熱存儲卸載到類似 S3 或 GCS 的冷存儲。

Queuing vs Streaming

Queuing

消息隊列沒有順序,并且可以共享,消費者可以從一個點對點的消息隊列中接收消息。當有消息發出后,任何消費者都有可能接收到這條消息并進行消費,至于哪個消費者能接收到消息是由消息中間件的實現來決定的。消息隊列通常會應用在一些無狀態的應用中,這些應用并不關心這些消息的接收順序,他們只需要將這些收到的消息進行確認或者刪除,并且盡可能的去并發處理這些消息。典型的消息系統有 RabbitMQ、RocketMQ。

Streaming

與消息隊列正好相反,streaming 是嚴格要求順序并且是獨占的消息。在流消息這種情況下,通常只有一個消費者消費,并且這條消息是和寫入時的順序一致。流消息通常用于有狀態的應用中,這些應用要求消息的順序與寫入時一致,錯誤的順序會影響結果的正確性,也會影響對這些消息的處理。隊列和流的存在, 在現在的微服務架構和事件驅動架構中舉足輕重。

Stream process

流處理是在消息的生產者和消費者中間的處理過程。在消息到達消費者之前,可以自定義輸出消息,來達到符合自己要求的消息。通常流處理應用于大數據的處理過程,一些公司的數據都是實時動態生成,采用時間窗口或者其他方式對復雜的流事件進行分析和處理,然后再傳遞給下一個消費者消費。

Process Guarantees

Process Guarantees 是 Pulsar 中消息接收或處理的保證機制,目前在 Pulsar 中,這種保證大部分是在 Pulsar Functions 中,由于 Pulsar Functions 是一種 Event process, 數據的處理過程對結果會造成影響,所以需要一種機制來保證數據的處理次數。

Pulsar 提供了以下幾種狀態:

At most once: 指此條消息最多被使用一次。 

At least once (default): 指在接收到消息后,這條消息會被至少使用一次;如果不成功,重新拿到消息處理。在 Pulsar Function 處理過程所產生的中間修改會被保存。 

Effectively once: 在 Pulsar Functions 只有效處理一次,當一次處理過程出錯,中間修改不會被保存。

以上狀態大多數在 Pulsar Functions 中使用,在消費者端,Pulsar 會保證 At least once。

更多關于 Pulsar 的技術干貨和產品動態,請關注 ApachePulsar 微信公眾號。

點擊“閱讀原文”,進入 Pulsar 官網了解更多。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线