Pulsar:來自eBay的開源實時分析平臺
原文 http://www.infoq.com/cn/news/2015/03/pulsar-ebay-open-source
Pulsar 是一個來自eBay的高擴展性、高可用性、基于事件驅動的開源實時分析平臺和流處理框架,它能夠實時收集和處理用戶行為和業務事件。Pulsar使用一種 類似SQL的事件處理語言并通過對數據進行加工(如聚合、補充、變異和過濾等)以實現流的自定義創建。Pulsar具有實時Session化、多維度量聚 合等功能,并具有每秒百萬級流量處理能力和基于標準的分布式和跨越多個數據中心云部署架構等特征。
作為全球性的商務平臺和支付行業領先者,eBay擁有海量的用戶行為數據。過去,eBay使用面向批處理的數據平臺(如Hadoop)對用戶行為進行分析 以提供良好的用戶體驗。近來,eBay商務平臺出現了新的需求和使用場景,如實時生成報表和儀表盤、業務活動監控、個性化設置、市場營銷和廣告、不良行為 監測等。至此,批量的大數據處理平臺已不能滿足業務對實時性的要求。于是,eBay研發團隊基于Pulsar CEP( Complex Event Processing即復雜事件處理 )框架并實現了Pulsar實時分析數據管道,從而開發出了Pulsar。eBay的CEP框架提供了一個基于Java的CEP框架和用來在云環境中構 建、部署和管理CEP應用的工具。Pulsar實時分析數據管道由一些松耦合的階段組成,從而提供了一個高可靠性和高擴展性的擴展模型。實時分析數據管道 處理過程包括:補充、過濾、變異、聚合以及狀態處理。
Pulsar的主要組件包括:
- 收集組件(Collector):具有Rest風格的事件收集API;
- Session化組件(Sessionizer):事件Session化、維護Session狀態和生成Session開始和結束的標示事件,該組件還包括插件式的接口,該接口可用來集成第三其他存儲系統從而實現Session的持久化;
- 分發組件(Distributor):對數據進行過濾和變異操作以滿足不同的消費者;負責事件的路由轉發;
- 度量計算組件(Metric Calculator):通過多維度進行計算并將計算結果持久化;
- 回放組件(Replay): 為了避免數據的丟失,在其它階段重傳發送失敗或未處理的事件;
- 配置組件(ConfigApp): 為Pulsar實時分析數據管道配置和提供處理邏輯。
Pulsar的系統架構如下圖所示:
從Pulsar的官網得知,Pulsar具有以下主要特征:
- 高可擴展性:Pulsar能夠跨集群節點對事件處理進行動態分區,并能夠擴展為每秒處理數百萬事件;此外,Pulsar能夠集成Druid或Cassandra等存儲系統;
- 高可用性:Pulsar具有基于標準的分布式、跨多個數據中心云部署架構,所以在軟件更新、流處理規則和拓撲結構改變過程中,無需停止服務;
- 富有靈活性:類SQL的語言和注解能夠用來定義流處理規則,包括聲明式的管道拼接以做到在運行時能夠自動適應動態拓撲改變;
- 實時分析:Pulsar能夠基于時間窗口實現多維度聚合和通過對數據進行加工處理(如補充、變異和過濾等)并自定義流的創建;
- Session化:Pulsar的實時邏輯能夠將用戶事件分組到Session中,還能夠事件Session化、維護Session狀態和持久化Session等;
- 高精確度:達到99.9%的數據精確度;
- 支持云端部署:在跨數據中心的情況下,Pulsar通過Docker鏡像能夠將節點分布到標準的云計算基礎架構環境中。
Pulsar CEP的處理邏輯能夠部署在跨數據中心的許多節點(即CEP單元)上,每個節點都能夠使用輸入通道、輸出通道以及處理邏輯進行配置,事件通常基于一個 Key(如用戶id)被分配到對應的節點上處理。在集群中擴展節點時,Pulsar借助Zookeeper實現了自動檢測新的單元、重新平衡事件處理以及 對故障節點的處理。Pulsar的部署架構如下圖所示:
Pulsar已經在eBay生成環境中用來對用戶行為事件進行分析。近日,eBay還宣布將Pulsar基于 GPLv2協議 開源,代碼托管在 GitHub ,且Pulsar開放團隊仍繼續以開放的方式開發Pulsar。更多關于Pulsar信息,請讀者閱讀eBay官方提供的一篇介紹Pulsar的 文章 、Pulsar的 FAQ 內容以及GitHub提供的 Wiki頁面 和 入門指南 。