在當(dāng)今大數(shù)據(jù)時代,企業(yè)對實時數(shù)據(jù)處理的規(guī)模、速度和可靠性的要求日益嚴(yán)苛。金山云,作為國內(nèi)領(lǐng)先的云計算服務(wù)提供商,其平臺每日需要處理的數(shù)據(jù)量已達(dá)TB級別,涵蓋海量的日志記錄、應(yīng)用指標(biāo)和用戶行為數(shù)據(jù)。面對如此巨大的數(shù)據(jù)洪流,傳統(tǒng)的消息隊列和流處理平臺在吞吐量、延遲、可擴(kuò)展性及運維復(fù)雜度等方面逐漸顯現(xiàn)出瓶頸。為了構(gòu)建一個更強(qiáng)大、更高效的日志服務(wù)與實時數(shù)據(jù)處理服務(wù),金山云經(jīng)過深入的技術(shù)選型與評估,最終選擇了Apache Pulsar作為其核心基礎(chǔ)設(shè)施。
一、 挑戰(zhàn):TB級數(shù)據(jù)洪流下的核心訴求
金山云原有的數(shù)據(jù)處理架構(gòu)在處理日均TB級數(shù)據(jù)時,主要面臨以下幾個關(guān)鍵挑戰(zhàn):
- 海量吞吐與低延遲的平衡:日志類數(shù)據(jù)爆發(fā)性強(qiáng),需要消息中間件能穩(wěn)定支撐極高的寫入吞吐(百萬級QPS),同時保證端到端的毫秒級低延遲,以滿足實時監(jiān)控、報警和數(shù)據(jù)分析的需求。
- 無限的彈性擴(kuò)展:業(yè)務(wù)增長不可預(yù)測,數(shù)據(jù)量可能瞬間激增。系統(tǒng)需要具備無中斷的水平擴(kuò)展能力,能夠輕松應(yīng)對流量峰值,而無需復(fù)雜的重新分區(qū)或數(shù)據(jù)遷移。
- 數(shù)據(jù)的持久化與可靠性:日志和事務(wù)數(shù)據(jù)是企業(yè)的核心資產(chǎn),必須保證數(shù)據(jù)不丟失、不重復(fù),并支持長期保留,以供后續(xù)審計、回溯分析和合規(guī)性檢查。
- 云原生與多租戶支持:作為公有云服務(wù)商,需要為成千上萬的客戶提供隔離、安全、可獨立計費的服務(wù)實例,對資源隔離和租戶管理有天然要求。
- 統(tǒng)一的架構(gòu)簡化運維:希望用一個統(tǒng)一的平臺同時替代傳統(tǒng)的消息隊列、日志總線和實時流處理中間件,降低技術(shù)棧的復(fù)雜性和運維成本。
二、 為何選擇Apache Pulsar?
在對比了Kafka、RocketMQ等主流技術(shù)后,Apache Pulsar憑借其獨特的架構(gòu)設(shè)計,完美契合了金山云的上述需求。
- 分層架構(gòu)(計算與存儲分離):Pulsar采用計算(Broker)與存儲(BookKeeper)分離的架構(gòu)。Broker節(jié)點無狀態(tài),負(fù)責(zé)消息的收發(fā)和協(xié)議處理;BookKeeper節(jié)點專門負(fù)責(zé)數(shù)據(jù)的持久化存儲。這種架構(gòu)帶來了革命性的優(yōu)勢:
- 無縫彈性伸縮:擴(kuò)容Broker僅需分鐘級別,對業(yè)務(wù)無感知;存儲層亦可獨立擴(kuò)展,容量近乎無限。
- 高可用與強(qiáng)一致性:數(shù)據(jù)在BookKeeper中被多副本同步持久化,即使Broker宕機(jī),數(shù)據(jù)安全無虞,新Broker可立即接管服務(wù)。
- 簡化故障恢復(fù):無狀態(tài)Broker的故障恢復(fù)極快,無需復(fù)雜的數(shù)據(jù)再平衡。
- 極致的吞吐與低延遲:Pulsar支持分層存儲(Tiered Storage),可將歷史冷數(shù)據(jù)自動卸載到更廉價的存儲系統(tǒng)(如S3、HDFS),而將熱數(shù)據(jù)保留在高速存儲(如SSD)中。這一特性使得金山云能夠以低成本長期保留TB級歷史數(shù)據(jù),同時保證熱點數(shù)據(jù)的訪問性能。其高效的流水線處理和零拷貝機(jī)制,確保了在高吞吐場景下依然保持穩(wěn)定的低延遲。
- 原生的多租戶與隔離:Pulsar在架構(gòu)層面原生支持多租戶。通過
租戶(Tenant)->命名空間(Namespace)->主題(Topic)的三層資源模型,金山云可以為不同客戶或業(yè)務(wù)線提供邏輯上完全隔離的資源池,并實施精細(xì)化的配額管理、認(rèn)證和授權(quán)策略,完美滿足云服務(wù)的需求。
- 流與隊列的統(tǒng)一模型:Pulsar獨創(chuàng)的“發(fā)布-訂閱”與“消息隊列”統(tǒng)一模型(通過獨占、故障轉(zhuǎn)移、共享和鍵共享四種訂閱模式實現(xiàn)),讓金山云可以用同一套集群同時支撐日志流式分發(fā)(類似Kafka場景)和傳統(tǒng)任務(wù)隊列(類似RabbitMQ場景),極大地簡化了技術(shù)架構(gòu)。
- 強(qiáng)大的生態(tài)系統(tǒng)與云原生友好:Pulsar原生支持Pulsar Functions(輕量級流處理)、與Flink/Spark的深度集成,并提供了完善的Kafka API兼容層,方便用戶遷移。其基于云的架構(gòu)設(shè)計與Kubernetes等容器編排平臺結(jié)合良好,便于實現(xiàn)自動化部署和運維。
三、 Pulsar在金山云的實踐與收益
金山云將Pulsar深度集成到其日志服務(wù)(KLS)和實時數(shù)據(jù)處理管道中:
- 作為高吞吐日志攝取總線:所有服務(wù)器、容器和應(yīng)用日志通過輕量級采集器發(fā)送至Pulsar集群。Pulsar以極高的吞吐量接收并持久化這些數(shù)據(jù)。
- 支撐實時流處理:下游的實時計算引擎(如Flink)直接消費Pulsar中的日志流,進(jìn)行實時聚合分析、異常檢測和指標(biāo)計算,結(jié)果實時寫入數(shù)據(jù)庫或推送至儀表盤。
- 實現(xiàn)歷史數(shù)據(jù)湖歸檔:通過配置分層存儲,超過一定時間的日志數(shù)據(jù)自動、透明地遷移到對象存儲中,形成數(shù)據(jù)湖,供離線分析、機(jī)器學(xué)習(xí)訓(xùn)練和數(shù)據(jù)挖掘使用,成本大幅降低。
- 服務(wù)內(nèi)部微服務(wù)通信:利用Pulsar的隊列訂閱模式,支撐內(nèi)部服務(wù)間的異步解耦通信,實現(xiàn)了技術(shù)棧的統(tǒng)一。
取得的顯著收益包括:
- 性能與成本優(yōu)化:在日均TB級數(shù)據(jù)壓力下,系統(tǒng)保持穩(wěn)定,峰值吞吐能力提升數(shù)倍,同時存儲成本因分層存儲下降顯著。
- 運維效率提升:計算存儲分離架構(gòu)使得擴(kuò)縮容操作變得簡單快捷,運維復(fù)雜度降低,系統(tǒng)整體可用性達(dá)到99.95%以上。
- 業(yè)務(wù)敏捷性增強(qiáng):統(tǒng)一的平臺加速了新業(yè)務(wù)(如新的日志分析產(chǎn)品、實時風(fēng)控系統(tǒng))的上線速度,滿足了客戶多樣化的實時數(shù)據(jù)處理需求。
- 未來可擴(kuò)展性:Pulsar的架構(gòu)為未來向更大數(shù)據(jù)規(guī)模、更復(fù)雜處理場景(如全局事件驅(qū)動架構(gòu))演進(jìn)奠定了堅實基礎(chǔ)。
###
金山云選擇Apache Pulsar,不僅僅是對一項新技術(shù)的采納,更是應(yīng)對數(shù)據(jù)規(guī)模與復(fù)雜度爆炸式增長的必然戰(zhàn)略選擇。Pulsar以其云原生、分層、統(tǒng)一的設(shè)計哲學(xué),成功幫助金山云構(gòu)建了一個面向未來、具備極致彈性、超高可靠性和成本效益的下一代日志與數(shù)據(jù)處理服務(wù)平臺。這一實踐也為業(yè)界處理超大規(guī)模實時數(shù)據(jù)流提供了極具價值的參考范式,證明了Pulsar在企業(yè)級核心數(shù)據(jù)管道中擔(dān)當(dāng)重任的能力。