本文為《Flink大數據項目實戰》學習筆記,想通過視頻系統學習Flink這個最火爆的大數據計算框架的同學,推薦學習課程:
Flink大數據項目實戰:http://t.cn/EJtKhaz
主要應用場景有三類:
1.Event-driven Applications【事件驅動】
2.Data Analytics Applications【分析】
3.Data Pipeline Applications【管道式ETL】
3.1 Event-driven Applications

上圖包含兩塊:Traditional transaction Application(傳統事務應用)和Event-driven Applications(事件驅動應用)。
Traditional transaction Application執行流程:比如點擊流Events可以通過Application寫入Transaction DB(數據庫),同時也可以通過Application從Transaction DB將數據讀出,並進行處理,當處理結果達到一個預警值就會觸發一個Action動作,這種方式一般為事后諸葛亮。
Event-driven Applications執行流程:比如采集的數據Events可以不斷的放入消息隊列,Flink應用會不斷ingest(消費)消息隊列中的數據,Flink 應用內部維護着一段時間的數據(state),隔一段時間會將數據持久化存儲(Persistent sstorage),防止Flink應用死掉。Flink應用每接受一條數據,就會處理一條數據,處理之后就會觸發(trigger)一個動作(Action),同時也可以將處理結果寫入外部消息隊列中,其他Flink應用再消費。
典型的事件驅動類應用:
1.欺詐檢測(Fraud detection)
2.異常檢測(Anomaly detection)
3.基於規則的告警(Rule-based alerting)
4.業務流程監控(Business process monitoring)
5.Web應用程序(社交網絡)
3.2 Data Analytics Applications

Data Analytics Applications包含Batch analytics(批處理分析)和Streaming analytics(流處理分析)。
Batch analytics可以理解為周期性查詢:比如Flink應用凌晨從Recorded Events中讀取昨天的數據,然后做周期查詢運算,最后將數據寫入Database或者HDFS,或者直接將數據生成報表供公司上層領導決策使用。
Streaming analytics可以理解為連續性查詢:比如實時展示雙十一天貓銷售GMV,用戶下單數據需要實時寫入消息隊列,Flink 應用源源不斷讀取數據做實時計算,然后不斷的將數據更新至Database或者K-VStore,最后做大屏實時展示。
3.3 Data Pipeline Applications

Data Pipeline Applications包含Periodic (周期性)ETL和Data Pipeline(管道)
Periodic ETL:比如每天凌晨周期性的啟動一個Flink ETL Job,讀取傳統數據庫中的數據,然后做ETL,最后寫入數據庫和文件系統。
Data Pipeline:比如啟動一個Flink 實時應用,數據源(比如數據庫、Kafka)中的數據不斷的通過Flink Data Pipeline流入或者追加到數據倉庫(數據庫或者文件系統),或者Kafka消息隊列。
3.4阿里Flink應用場景

阿里在Flink的應用主要包含四個模塊:實時監控、實時報表、流數據分析和實時倉庫。
實時監控:
- 用戶行為預警、app crash 預警、服務器攻擊預警
- 對用戶行為或者相關事件進行實時監測和分析,基於風控規則進行預警
實時報表:
- 雙11、雙12等活動直播大屏
- 對外數據產品:生意參謀等
- 數據化運營
流數據分析:
- 實時計算相關指標反饋及時調整決策
- 內容投放、無線智能推送、實時個性化推薦等
實時倉庫:
- 數據實時清洗、歸並、結構化
- 數倉的補充和優化
欺詐檢測

背景:
假設你是一個電商公司,經常搞運營活動,但收效甚微,經過細致排查,發現原來是羊毛黨在薅平台的羊毛,把補給用戶的補貼都薅走了,錢花了不少,效果卻沒達到。
怎么辦呢?
你可以做一個實時的異常檢測系統,監控用戶的高危行為,及時發現高危行為並采取措施,降低損失。
系統流程:
1.用戶的行為經由app 上報或web日志記錄下來,發送到一個消息隊列里去;
2.然后流計算訂閱消息隊列,過濾出感興趣的行為,比如:購買、領券、瀏覽等;
3.流計算把這個行為特征化;
4.流計算通過UDF調用外部一個風險模型,判斷這次行為是否有問題(單次行為);
5.流計算里通過CEP功能,跨多條記錄分析用戶行為(比如用戶先做了a,又做了b,又做了3次c),整體識別是否有風險;
6.綜合風險模型和CEP的結果,產出預警信息。

