flink 通過實現了 Google Dataflow 流式計算模型實現了高吞吐、低延遲、高性能兼具實時流式計算框架。 同時 flink 支持高度容錯的狀態管理,防止狀態在計算過程中因為系統異常而丟失,flink 周期性地通過分散式快照技術 Checkpoints 實現狀態的持久化維護,使得即使在系 ...
flink 通過實現了 Google Dataflow 流式計算模型實現了高吞吐、低延遲、高性能兼具實時流式計算框架。
同時 flink 支持高度容錯的狀態管理,防止狀態在計算過程中因為系統異常而丟失,flink 周期性地通過分散式快照技術 Checkpoints 實現狀態的持久化維護,使得即使在系統停機或者異常情況下都能計算出正確的結果。
具體的優勢有以下幾點
(1) 同時支持高吞吐、低延遲、高性能
是目前開源社區中唯一一套集高吞吐、低延遲、高性能三者於一身的分散式流式數據處理框架。
像 Apache Spark 也只能兼顧高吞吐和高性能特性,無法做到低延遲保障
Apache Storm 只能支持低延時和高性能特性,無法滿足高吞吐的要求
(2)支持事件時間(Event Time)概念
在流式計算領域中,視窗計算的地位舉足輕重,但目前大多數框架視窗計算採用的都是系統時間(Process Time),也是事件傳輸到計算框架處理時,系統主機的當前時間。
Flink 能夠支持基於事件時間(Event Time)語義進行視窗計算,這種基於事件驅動的機制使得事件即使亂序到達,流系統也能夠計算出精確的結果,保持了事件原本產生時的時序性,儘可能避免網路傳輸或硬體系統的影響。
(3)支持有狀態計算
所謂狀態就是在流式計算過程中將運算元的中間結果保存在記憶體或者文件系統中,等下一個事件進入運算元後可以從之前的狀態中獲取中間結果,計算當前的結果,從而無須每次都基於全部的原始數據來統計結果,極大的提升了系統性能
(4)支持高度靈活的視窗(Window)操作
Flink 將視窗劃分為基於 Time 、Count 、Session、以及Data-Driven等類型的視窗操作,視窗可以用靈活的觸發條件定製化來達到對複雜的流傳輸模式的支持,用戶可以定義不同的視窗觸發機制來滿足不同的需求
(5)基於輕量級分散式快照(Snapshot)實現的容錯
Flink 能夠分佈運行在上千個節點上,通過基於分散式快照技術的Checkpoints,將執行過程中的狀態信息進行持久化存儲,一旦任務出現異常停止,Flink 能夠從 Checkpoints 中進行任務的自動恢復,以確保數據愛處理過程中的一致性
(6) 基於 JVM 實現的獨立的記憶體管理
Flink 實現了自身管理記憶體的機制,儘可能減少 JVM GC 對系統的影響。
通過序列化/反序列化機制將所有的數據對象轉換成二進位在記憶體中存儲,降低數據存儲大小的同時,更加有效的利用空間,降低GC帶來的性能下降或任務異常的風險
(7)Save Points 保存點
對於 7 * 24 小時運行的流式應用,數據源源不斷的流入,在一段時間內應用的終止有可能導致數據的丟失或者計算結果的不准確。
比如集群版本的升級,停機運維操作等。
值得一提的是,Flink 通過Save Points 技術將任務執行的快照保存在存儲介質上,當任務重啟的時候,可以從事先保存的 Save Points 恢複原有的計算狀態,使得任務繼續按照停機之前的狀態運行。
還在等什麼,快去使用 flink 吧