聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

環(huán)球新動(dòng)態(tài):輕量級(jí)微服務(wù)計(jì)算框架Pulsar——下一代的消息系統(tǒng)

來源:CSDN 時(shí)間:2023-01-10 15:19:53

Pulsar 是下一代的新型消息系統(tǒng),將批流處理集于一身,并且致力于克服一些現(xiàn)有的消息系統(tǒng)的弱點(diǎn)。Apache Pulsar 是由 Yahoo 開發(fā)并開源的企業(yè)級(jí)消息系統(tǒng)。由 Yahoo 在 2016年開源,并在 2018 年成為 Apache Software Foundation 頂級(jí)項(xiàng)目。為了有更好的運(yùn)行效率、可擴(kuò)展性和靈活性,Pulsar 從架構(gòu)上就是分層架構(gòu)。這樣的分層架構(gòu)相比以往的單體架構(gòu)更加靈活,可以根據(jù)需要來進(jìn)行配置存儲(chǔ)層和處理層,更加容易維護(hù)和擴(kuò)容。


【資料圖】

Pulsar Overview

Apache Pulsar 是一個(gè)提供多租戶并且擁有高性能的消息系統(tǒng),早期由 Yahoo 進(jìn)行開發(fā),后由 ASF 進(jìn)行管理。 

Pulsar 有以下特征: 

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

端到端之間的低延遲。 

百萬 topic 無縫擴(kuò)展。 

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

支持獨(dú)占訂閱、共享訂閱、故障轉(zhuǎn)移訂閱。 

用 BookKeeper 保證消息的持久化。

原生支持輕量級(jí)微服務(wù)計(jì)算框架 Pulsar Functions。 

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

分層存儲(chǔ)提供了當(dāng)數(shù)據(jù)變?yōu)槔蠑?shù)據(jù)時(shí)可以從熱存儲(chǔ)卸載到類似 S3 或 GCS 的冷存儲(chǔ)。

Queuing vs Streaming

Queuing

消息隊(duì)列沒有順序,并且可以共享,消費(fèi)者可以從一個(gè)點(diǎn)對點(diǎn)的消息隊(duì)列中接收消息。當(dāng)有消息發(fā)出后,任何消費(fèi)者都有可能接收到這條消息并進(jìn)行消費(fèi),至于哪個(gè)消費(fèi)者能接收到消息是由消息中間件的實(shí)現(xiàn)來決定的。消息隊(duì)列通常會(huì)應(yīng)用在一些無狀態(tài)的應(yīng)用中,這些應(yīng)用并不關(guān)心這些消息的接收順序,他們只需要將這些收到的消息進(jìn)行確認(rèn)或者刪除,并且盡可能的去并發(fā)處理這些消息。典型的消息系統(tǒng)有 RabbitMQ、RocketMQ。

Streaming

與消息隊(duì)列正好相反,streaming 是嚴(yán)格要求順序并且是獨(dú)占的消息。在流消息這種情況下,通常只有一個(gè)消費(fèi)者消費(fèi),并且這條消息是和寫入時(shí)的順序一致。流消息通常用于有狀態(tài)的應(yīng)用中,這些應(yīng)用要求消息的順序與寫入時(shí)一致,錯(cuò)誤的順序會(huì)影響結(jié)果的正確性,也會(huì)影響對這些消息的處理。隊(duì)列和流的存在, 在現(xiàn)在的微服務(wù)架構(gòu)和事件驅(qū)動(dòng)架構(gòu)中舉足輕重。

Stream process

流處理是在消息的生產(chǎn)者和消費(fèi)者中間的處理過程。在消息到達(dá)消費(fèi)者之前,可以自定義輸出消息,來達(dá)到符合自己要求的消息。通常流處理應(yīng)用于大數(shù)據(jù)的處理過程,一些公司的數(shù)據(jù)都是實(shí)時(shí)動(dòng)態(tài)生成,采用時(shí)間窗口或者其他方式對復(fù)雜的流事件進(jìn)行分析和處理,然后再傳遞給下一個(gè)消費(fèi)者消費(fèi)。

Process Guarantees

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

Pulsar 提供了以下幾種狀態(tài):

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

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

Effectively once: 在 Pulsar Functions 只有效處理一次,當(dāng)一次處理過程出錯(cuò),中間修改不會(huì)被保存。

以上狀態(tài)大多數(shù)在 Pulsar Functions 中使用,在消費(fèi)者端,Pulsar 會(huì)保證 At least once。

更多關(guān)于 Pulsar 的技術(shù)干貨和產(chǎn)品動(dòng)態(tài),請關(guān)注 ApachePulsar 微信公眾號(hào)。

點(diǎn)擊“閱讀原文”,進(jìn)入 Pulsar 官網(wǎng)了解更多。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top