2021年大数据Flink(二):Flink用武之地
目錄
???????Flink用武之地
???????Event-driven Applications【事件驅動】
???????Data Analytics Applications【數據分析】
???????Data Pipeline Applications【數據管道】
Flink用武之地
http://www.liaojiayi.com/flink-IoT/
https://flink.apache.org/zh/usecases.html
?
從很多公司的應用案例發現,其實Flink主要用在如下三大場景:
???????Event-driven Applications【事件驅動】
事件驅動型應用是一類具有狀態的應用,它從一個或多個事件流提取數據,并根據到來的事件觸發計算、狀態更新或其他外部動作。
事件驅動型應用是在計算存儲分離的傳統應用基礎上進化而來。
在傳統架構中,應用需要讀寫遠程事務型數據庫。
相反,事件驅動型應用是基于狀態化流處理來完成。在該設計中,數據和計算不會分離,應用只需訪問本地(內存或磁盤)即可獲取數據。
系統容錯性的實現依賴于定期向遠程持久化存儲寫入 checkpoint。下圖描述了傳統應用和事件驅動型應用架構的區別。
?
從某種程度上來說,所有的實時的數據處理或者是流式數據處理都應該是屬于Data Driven,流計算本質上是Data Driven 計算。應用較多的如風控系統,當風控系統需要處理各種各樣復雜的規則時,Data Driven 就會把處理的規則和邏輯寫入到Datastream 的API 或者是ProcessFunction 的API 中,然后將邏輯抽象到整個Flink 引擎,當外面的數據流或者是事件進入就會觸發相應的規則,這就是Data Driven 的原理。在觸發某些規則后,Data Driven 會進行處理或者是進行預警,這些預警會發到下游產生業務通知,這是Data Driven 的應用場景,Data Driven 在應用上更多應用于復雜事件的處理。
典型實例:
- - 欺詐檢測(Fraud detection)
- - 異常檢測(Anomaly detection)
- - 基于規則的告警(Rule-based alerting)
- - 業務流程監控(Business process monitoring)
- - Web應用程序(社交網絡)
?
???????Data Analytics Applications【數據分析】
數據分析任務需要從原始數據中提取有價值的信息和指標。
如下圖所示,Apache Flink 同時支持流式及批量分析應用。
?
?
Data Analytics Applications包含Batch analytics(批處理分析)和Streaming analytics(流處理分析)
Batch analytics可以理解為周期性查詢:Batch Analytics 就是傳統意義上使用類似于Map Reduce、Hive、Spark Batch 等,對作業進行分析、處理、生成離線報表。比如Flink應用凌晨從Recorded Events中讀取昨天的數據,然后做周期查詢運算,最后將數據寫入Database或者HDFS,或者直接將數據生成報表供公司上層領導決策使用。
Streaming analytics可以理解為連續性查詢:比如實時展示雙十一天貓銷售GMV(Gross Merchandise Volume成交總額),用戶下單數據需要實時寫入消息隊列,Flink 應用源源不斷讀取數據做實時計算,然后不斷的將數據更新至Database或者K-VStore,最后做大屏實時展示。
?
典型實例
- - 電信網絡質量監控
- - 移動應用中的產品更新及實驗評估分析
- - 消費者技術中的實時數據即席分析
- - 大規模圖分析
?
???????Data Pipeline Applications【數據管道】
什么是數據管道?
提取-轉換-加載(ETL)是一種在存儲系統之間進行數據轉換和遷移的常用方法。
ETL 作業通常會周期性地觸發,將數據從事務型數據庫拷貝到分析型數據庫或數據倉庫。
數據管道和 ETL 作業的用途相似,都可以轉換、豐富數據,并將其從某個存儲系統移動到另一個。
但數據管道是以持續流模式運行,而非周期性觸發。
因此數據管道支持從一個不斷生成數據的源頭讀取記錄,并將它們以低延遲移動到終點。
例如:數據管道可以用來監控文件系統目錄中的新文件,并將其數據寫入事件日志;另一個應用可能會將事件流物化到數據庫或增量構建和優化查詢索引。
和周期性 ETL 作業相比,持續數據管道可以明顯降低將數據移動到目的端的延遲。
此外,由于它能夠持續消費和發送數據,因此用途更廣,支持用例更多。
下圖描述了周期性ETL作業和持續數據管道的差異。
Periodic ETL:比如每天凌晨周期性的啟動一個Flink ETL Job,讀取傳統數據庫中的數據,然后做ETL,最后寫入數據庫和文件系統。
Data Pipeline:比如啟動一個Flink 實時應用,數據源(比如數據庫、Kafka)中的數據不斷的通過Flink Data Pipeline流入或者追加到數據倉庫(數據庫或者文件系統),或者Kafka消息隊列。
Data Pipeline 的核心場景類似于數據搬運并在搬運的過程中進行部分數據清洗或者處理,而整個業務架構圖的左邊是Periodic ETL,它提供了流式ETL 或者實時ETL,能夠訂閱消息隊列的消息并進行處理,清洗完成后實時寫入到下游的Database或File system 中。
典型實例
- - 電子商務中的持續 ETL(實時數倉)
當下游要構建實時數倉時,上游則可能需要實時的Stream ETL。這個過程會進行實時清洗或擴展數據,清洗完成后寫入到下游的實時數倉的整個鏈路中,可保證數據查詢的時效性,形成實時數據采集、實時數據處理以及下游的實時Query。
- - 電子商務中的實時查詢索引構建(搜索引擎推薦)
搜索引擎這塊以淘寶為例,當賣家上線新商品時,后臺會實時產生消息流,該消息流經過Flink 系統時會進行數據的處理、擴展。然后將處理及擴展后的數據生成實時索引,寫入到搜索引擎中。這樣當淘寶賣家上線新商品時,能在秒級或者分鐘級實現搜索引擎的搜索。
總結
以上是生活随笔為你收集整理的2021年大数据Flink(二):Flink用武之地的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Flink(一):乘风破
- 下一篇: 2021年大数据Flink(三):