近期,CirroData團隊開發完成了具備處理流資料能力的實時流處理平臺:CirroStream,以滿足市場對實時資料處理的旺盛需求。未來,我們會圍繞CirroStream平臺進行一系列相關報道。本篇是“概念篇”,側重介紹流資料的定義,當前行業內主流的流資料計算框架,以及CirroStream實時流處理平臺的基本資訊。
什麼是流資料?
“流資料(data stream)”的概念是伴隨電信業和網際網路行業的興起而產生的,它是一組順序、大量、快速、連續到達的資料序列。資料流可被視為一個隨時間延續而無限增長的動態資料集合。
· 在工業網際網路方面,裝置上的感測器將“流資料”持續不斷的傳送到流處理平臺,實現對機器裝置的監測,對生產風險的預警,防止重大生產事故的發生;
· 在金融風控方面,通過實時跟蹤貸款人的金融行為“流資料”,檢查異常客戶,及時報警和逾期客戶的失聯修復;
· 在商業營銷方面,可以通過檢測客戶的實時位置“流資料”,推送基於地理位置的廣告資訊,比如餐廳、商場、加油站等;
· 在新媒體方面,通過對數十億的線上內容點選“流資料”進行流處理,優化網站上的內容投放,為使用者提供最佳的使用者體驗。
由於流資料的快速、大量和連續到達的特點,也給資料處理技術帶來了極大的挑戰。“快速”意味著短時間內可能會有大量的輸入資料需要處理;“大量”意味著系統難以完整儲存全部資訊,通常只能在資料到達的時候存取資料一次;“連續到達”則意味著資料量可能是無限的,對資料流的查詢結果往往不是一次性而是持續的,即隨著底層資料的到達而不斷返回最新的結果。這些“流資料”的特點決定了流處理的形式:一次存取、持續處理、有限儲存、近似結果、快速響應。
Storm,Spark Streaming 和 Flink
Storm,Spark Streaming 和 Flink是目前業內比較知名的流資料計算框架,這三款軟體都是Apache名下的開源專案,被廣泛使用。
如果從對“流資料”處理的策略上對這三種計算框架進行分類,那麼Flink和Storm屬於同一類,都是採用的“Native Streaming”方式,在這類計算引擎中,所有的資料到來後,都會被立即處理,一條接著一條;而Spark Streaming則是基於“Micro-batch”策略實現的,即資料流被切分為一個一個小的批次,然後再逐個被計算引擎處理。
綜合對比Storm、Spark和Flink的功能、容錯和效能,如下表所示:
· 訊息傳遞機制保護(Guarantees):有兩種,“至少一次(at-least-once)”和“僅一次(exactly-once)”,前者對訊息至少傳輸一次,通常帶來的結果是訊息的重發;後者對訊息只傳輸一次,無論是否出錯。
· 延遲(Latency):通過“Native Streaming”方式進行流處理的Storm和Flink,延遲非常低;而通過“Micro-batch”方式進行流處理的Spark Streaming,則會把一段時間內的流組成小批量進行處理,它的延遲就會高一些。
· 吞吐量(Throughput):與流處理模式和容錯機制相關,採用“Native Streaming”方式和“Record-ACK”容錯機制的Storm資料吞吐量不高,而採用“Micro-batch”方式的Spark吞吐量就會很高。
綜合以上,可以看出Flink是一個設計良好的框架,它不但功能強大,而且效能出色。此外它還有一些比較好的設計,比如記憶體管理和流控。但開源的Flink產品也存在著成熟度較低,使用不方便的問題。
CirroStream實時流處理平臺
CirroStream是一套依託於CirroData和Apache Flink構建的一站式、高效能實時流資料處理平臺。在繼承了Flink在處理流資料時的高效能、低延時、高容錯等方面的強大能力之外,還融合了CirroData完善的SQL語義解析和執行計劃功能,並針對Flink使用不便的弱點,設計了視覺化的開發管理平臺,同時支援豐富的資料來源輸入。
· 全SQL進行實時計算:擺脫傳統API定義實時計算。完全支援ANSI SQL來定義實時流計算;
· 豐富的資料來源支援:支援資料庫(CirroData、傳統關係型資料庫)、訊息佇列(Kafka/Rabbit MQ)等;
· 視覺化的開發管理平臺:與計算引擎同時配套推出視覺化開發和管理平臺,降低使用門檻;
· 高可用架構設計:突破單節點故障的同時與Hadoop生態共存,協同使用叢集計算資源;
· 低延時高吞吐:系統具備每秒100萬筆的資料處理能力。
在企業中,CirroStream能夠針對業務部門、資料部門、運維部門等不同職能單位在實時資料處理方面的需求,提供強大的資料技術支撐:
具體到技術層面,又可以劃分為以下三種應用場景:
· 實時ETL&資料流:實時ETL&資料流的目的是實時把資料從A點投遞到B點。中間可能會加上一些資料清洗和整合的工作,比如實時數倉中的ETL過程等。
· 實時資料分析:資料分析指的是根據業務目標從原始資料中抽取對應資訊並整合的過程。一般最終體現為實時報表或實時大屏。
· 事件驅動:應用事件驅動應用是對一系列訂閱事件進行處理或作出響應的系統。比如電子柵欄,點選欺詐檢測,風控系統。
基於CirroStream的開發完成,CirroData資料庫進一步完善了對實時資料的支撐處理,在企業客戶方面覆蓋更加廣泛的業務應用場景。目前CirroStream團隊正在為工業領域和電信行業的使用做準備和測試工作。
CirroData是東方國信自主研發的新一代雲化資料庫,至今已擁有數百名企業級客戶,部署超過數千節點。CirroData採用了先進的計算儲存分離架構,融合了分散式儲存和MPP平行計算的各自優勢,輕鬆實現雲平臺上的即時彈性伸縮和擴充套件。
目前,CirroData已經成功申請國家發明專利二十餘項,獲得國家發改委定向資料庫資金支援,併入選工信部頒發的百家大資料優秀案例。