在當前數據量激增傳統的時代,不同的業務場景都有大量的業務數據產生,對于這些不斷產生的數據應該如何進行有效地處理,成為當下大多數公司所面臨的問題。
隨著雅虎對Hadoop的開源,越來越多的大數據處理技術開始涌入人們的視線,例如目前比較流行大數據處理引擎Apache Spark,基本上已經取代了MapReduce成為當前大數據處理的標準。
但隨著數據的不斷增長,新技術的不斷發展,人們逐漸意識到對實時數據處理的重要性,企業需要能夠同時支持高吞吐、低延遲、高性能的流處理技術來處理日益增長的數據。
相對于傳統的數據處理模式,流式數據處理則有著更高的處理效率和成本控制。Apache Flink就是近年來在開源社區發展不斷發展的能夠支持同時支持高吞吐、低延遲、高性能分布式處理框架。
在2010至2014年間,由柏林工業大學,柏林洪堡大學和哈索普拉特納研究所聯合發起名為“Stratosphere: Information Management on the Cloud”研究項目,該項目在當時的社區逐漸具有一定社區知名度,2014年4月,Stratosphere代碼被貢獻給Apache 軟件基金會,成為Apache基金會孵化器項目。
期初參與該項目的核心成員均來自Stratosphere原來的核心成員,美國服務器租用,之后團隊的大部分創始成員離開學校,共同創辦了一家名叫Data Artisans的公司,其主要業務便是將Stratosphere,也就是之后的Flink實現商業化。在項目孵化期間,項目Stratosphere改名為Flink。
Flink在德語中是快速和靈敏的意思,用來體現流式數據處理器的速度快和靈活性強等特點,同時使用棕紅色松鼠圖案作為Flink項目的Logo,也是主要借助于松鼠靈活快速的特點,由此Flink開始正式地進入社區開發者的視線。
在2014年12月,該項目成為Apache 軟件基金會頂級項目,從2015年09月發布第一個穩定版本0.9,到2019年4月已經發布到1.8的版本,更多的社區開發成員也逐步地加入,現在Flink在全球范圍內擁有350多位的開發人員,不斷有新的特性被發布。
同時在全球范圍內,越來越多的公司開始使用Flink,在國內比較出名的互聯網公司如Alibaba,美團,滴滴等,都在大規模的使用Flink作為企業的分布式大數據處理引擎。
Flink在近年來逐步被人們所熟知和使用,其主要原因不僅因為提供同時支持高吞吐、低延遲和exactly-once語義的實時計算能力,同時Flink還提供了基于流式計算引擎處理批量數據的計算能力,真正意義實現了批流統一,同時隨著Alibaba對Blink的開源,極大地增強了Flink對批計算領域的支持。
眾多優秀的特性,使得Flink成為開源大數據數據處理框架中的一顆新星,隨著國內社區不斷推動,越來越多的國內公司開始選擇使用Flink作為實時數據處理的技術,在將來不久的時間內,Flink也將會成為企業內部主流的數據處理框架,最終成為下一代大數據數據處理框架的標準。
03 Flink的重要特性及優勢
有狀態流計算將會隨著技術的發展,逐步成為企業作為構建數據平臺的架構模式,而這種技術實現的開源方案目前從社區來看,能夠滿足的就是Apache Flink。Flink通過實現Google Dataflow流式計算模型實現了高吞吐,低延遲,高性能兼具實時流式計算框架。
▲有狀態計算架構
同時Flink支持高效容錯的狀態管理,Flink能夠將其狀態維護在內存或RockDB數據庫中,為了防止狀態在計算過程中因為系統異常而出現丟失,Flink周期性的通過分布式快照技術CheckPoints實現狀態的持久化維護,使得在系統即使在停機或者異常的情況下都能正確的進行狀態恢復,從而保證在任何時間都能計算出正確的結果。
數據架構的演變過程,伴隨著技術的不斷迭代更新,Flink具有先進的架構理念,以及諸多的優秀特性,以及完善的編程接口,而Flink也在每一次的Release版本中,不斷推出新的特性。
例如Queryable State功能的提出,將直接容許用戶通過遠程的方式直接獲取流式計算任務的狀態信息,也就是說數據不需要落地數據庫就能直接從流式應用中直接查詢出,對于實時交互式的查詢業務可以直接從Flink的狀態中查詢最新的結果,當然這個功能目前還屬于Beta版本,但是相信在不久的未來,會變得越來越完善,那時Flink將不僅作為實時流式處理的框架,更多的可能會成為一套實時的存儲引擎,會讓更多的用戶從有狀態計算的技術中獲取收益。