Flink流計算編程--流處理引擎的選型

1、需求決定引擎選型

根據馬斯洛需求層次理論,可以將流處理引擎的需求分爲以下幾種層次:
這裏寫圖片描述

1、持續性的流處理
2、低延遲的計算結果,亞秒級別的延遲
3、高效可擴展性,每秒百萬級的吞吐量
4、容錯性,即失敗時的可恢復性
5、精確的可重複性
6、可查詢性

流處理就是在延遲、吞吐量和正確性之間做一個平衡。

2、當前的流處理引擎包含哪些

這裏寫圖片描述

1、Spark Streaming
2、Storm
3、Flink
4、samza
。。。。

3、根據Maslow模型,在不同流處理系統之間做個簡單的橫向對比

1、連續不斷的處理
這裏寫圖片描述
都具有處理“流”的能力。

2、低延遲
這裏寫圖片描述
Spark Streaming本質是個“micro-batch”,延遲達到秒級。
如果對“延遲性”要求很高,Spark Streaming不適合。

3、高吞吐高擴展
這裏寫圖片描述
storm在大規模集羣下的吞吐量不行?直接看一組來自Yahoo的benchmark:
這裏寫圖片描述

4、容錯和excactly_once
這裏寫圖片描述
Flink支持excactly_once,通過檢查點產生的分佈式快照(有狀態的operator)+kafka可重發的數據源完成。

5、準確性與可重發
這裏寫圖片描述
準確性依賴於對Event Time的支持以及kafka的可部分重發的數據源。

6、查詢性
這裏寫圖片描述
將計算結果不斷的sink到database或者key/value數據庫,雖然這會成爲潛在的瓶頸。

4、Flink實時查詢服務架構

這裏寫圖片描述
不斷的sink到nosql數據庫,提供了一個實時查詢的可能性!!!

5、根據需求,確定適合自己的流處理框架

這裏寫圖片描述

6、參考

Counting in streams: A hierarchy of needs
Stateful Stream Processing at In-Memory Speed
Yahoo Streaming Benchmarks
Apache Flink Presentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章