一、什麼是Flink
Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams.
Apache Flink是一個框架和分佈式處理引擎,用於對無界和有界數據流進行狀態計算。
二、那我們爲什麼選擇Flink呢?
1)流數據可以更加真實的反映了我們的生活方式;
2)傳統的數據架構是基於有限數據集的;
3)我們的目標是追求低延遲、高吞吐、結果的準確性和良好的容錯性;
三、目前哪些行業需要進行流式數據的處理呢?
1)電商和市場營銷(數據報表、廣告投放、業務流程需要);
2)物聯網(IOT)(傳感器實時數據採集和顯示、實時報警。交通運輸業)
3)電信業(基站流量調配)
4)銀行和金融業(實時結算和通知推送,實時檢測異常行爲)
四、傳統的數據處理架構
1)事務處理過程
2)分析處理:將數據從業務數據庫複製到數倉,再進行分析和查詢。
3)有狀態的流式處理
五、流處理的演變
1)lambda架構
用兩套系統,同時保證低延遲和結果準確
2)流處理的演變
六、Flink的主要特點
1)事件驅動(Event-driven)
2)基於流的世界觀
在Flink的世界觀中,一切都是由流組成的,離線數據是有界的流;實時數據是一個沒有界限的流;這就是所謂的有界流和無界流。
3)分層API
越頂層越抽象,表達含義越簡明,使用越方便;
越底層越具體,表達能力越豐富,使用越靈活;
七、Flink的其他特點
1)支持事件時間(event-time)和處理時間(processing-time)語義;
2)精確一次(exectly-once)的狀態一致性保證;
3)低延遲,每秒鐘處理數百萬個事件,毫秒級延遲;
4)與衆多常用存儲系統的連接;
5)高可用,動態擴展,實現7*24小時全天候運行;
八、Flink vs Spark Streaming
1)流(stream)和微批(micro-batching)
2)數據模型
----spark採用RDD模型,spark streaming的DStream實際上也就是一組組小批數據RDD的集合;
----flink基本數據模型是數據流,以及事件(Event)序列
3)運行時架構
----spark 是批計算,將DAG劃分爲不同的Stage,一個完成之後纔可以計算下一個;
----flink是標準的流執行模式,一個事件在一個節點處理完之後可以直接發往下一個節點進行後續處理;