傅和安
“從開源中來,到開源中去”,這種近乎烏托邦式的技術理念,支撐國際開源走過30年發展歷程。放眼國內,中國開源起步較晚,但也有20年歷史。
起初,中國開源軟件并不受重視,開發者在社區的地位很低,很多人甚至認為中國開發者奉行的都是“拿來主義”,索取多貢獻少。的確,在很長一段時間里,中國基礎軟件依賴國外開源軟件生態而生存,包括操作系統、數據庫和編程語言等。但隨著中國開源力量的崛起,中國開發者的身影不僅出現在Linux、MySQL、Python等基礎應用領域,在以大數據、云計算為核心的世界頂尖級項目上,也同樣具備話語權,甚至已占據領導者地位。
前不久,開源大數據引擎Flink社區公布最新數據,Flink的Github Star數和貢獻者人數每年正以超30 %的速度增長,Github Star數超20 000個,已有上千名貢獻者(contributors)加入,月下載量峰值突破1 400萬次,連續兩年蟬聯Apache基金會財年報告最活躍項目。

看似平淡無奇的2022年,開源生態卻在悄然布局。數據顯示,Flink有20萬開發者關注,超過100家國內外知名公司參與代碼貢獻,已形成了龐大的用戶和開發者生態。有意思的是,中國開發者已成為Flink全球化社區的中堅力量,阿里巴巴、騰訊和字節跳動等中國企業貢獻了超過一半的代碼。其中,阿里巴巴對Flink核心代碼貢獻最大。
可以說,Flink能有今天的發展,和阿里的全力推進密切相關。在核心技術方面,阿里巴巴主導了211個FLIP,貢獻了Flink 70 %以上的核心改進。人才培養方面,阿里聯合Ververica累計培養了近70位Flink核心貢獻者(含項目管理委員會PMC成員和活躍貢獻者committer),占比超過70 %。社區運營方面,阿里在2018年把Flink社區官方技術大會Flink Forward引入亞洲。在2019-2022年間,阿里連續舉辦了4屆FFA大會(Flink Forward Asia);同時還不定期舉辦各種類型線下Meetup,已累計上百場。應用落地方面,阿里云基于Flink推出了實時計算Flink云產品和全球統一的Flink企業版平臺Ververica Platform,推動Flink走向各行各業。
作為Flink的最早一批“忠粉兒”,阿里為之傾注的心血最多,甚至不惜把“自己的孩子”拱手相送,把Blink內核并入到Flink中。2016年,基于Flink搭建的平臺正式上線,并率先應用于阿里的搜索和推薦兩大場景。2019年,阿里將內部研發的Flink分支Blink正式開源,為Flink貢獻了超過百萬行代碼;同年,阿里收購Flink母公司Data Artisans(后更名為Ververica),成為Flink社區最大的推動者。
如何更好地滿足大促期間的實時大數據更新?在追求數據處理速度這條道路上,阿里從未停止探索!所以,當Flink誕生,阿里很自然地成為了那個“敢吃螃蟹”的人。只不過,最初Apache Flink版本的體驗并不友好,使用起來非常不方便,有些復雜功能不能用SQL直接實現,同時在規模和應用方面還缺少實踐的檢驗。為了讓Flink快速走進實際業務場景,阿里巴巴在性能和穩定性方面做了諸多優化,除了供企業內部使用,還通過阿里云向整個開發者生態提供基于Flink的云產品支持,這便是早期的Blink。
說白了,Flink能成為阿里的“專寵”,成為大數據領域最火爆的開源項目,根本原因只有一個,那就是流批一體趨勢的推動。
大數據的高速發展已走過10年,未來會強調從計算的規模化走向數據流動的實時化。以“雙11”為例,通過大屏實時展示交易額、成交額,并實現毫秒級更新,已成為業務場景的“剛需”。包括在銀行、證券等核心的金融業務場景,實時計算可以更好地監控交易行為,進行反作、弊反洗錢等行為的探測。
實時計算能夠支持日常生活中涉及的各個場景,背后需要一套極其強大的大數據計算能力,Flink在此種背景下應運而生。因為傳統的Hadoop、Spark等計算引擎,本質上是批計算引擎,只能對有限的數據集進行數據處理,延時性不能保證。而Flink從設計之初就從流計算開啟,可以實時查閱生產場景中的數據,并對數據進行實時分析,讓數據在第一時間發揮價值。憑借強大一致性的計算能力、大規模的擴展性、整體性能卓越等特性,Flink瞬間贏得廣大用戶的青睞。
Flink最早應用于國內外的互聯網場景,除了國內的阿里巴巴、騰訊和字節跳動等企業,國外的Apple、Capital One、eBay、Ericsson等全球知名公司也在使用Flink處理實時數據。從社區的活躍度來看,Flink大有取代傳統計算引擎的趨勢,很多企業不僅把Flink應用于流式的數據分析,還擴展到流式的數倉、數據庫。

問題是,流的場景問題解決了,那批的計算場景怎么辦?Flink也有更多考慮,那就是通過“流”來模擬“批”。Flink的核心API最初是針對特定的場景設計的,盡管針對流處理和批處理已經實現了統一API,但用戶在使用較底層的API時,仍然需要在批處理(DataSet API)和流處理(DataStream API)之間進行選擇。鑒于批處理是流處理的一種特例,社區朝著流批統一的DataStream API邁出了第一步,全面支持高效的批處理。在Apache Flink1.12版本推出時,流批一體真正統一運行。
正如阿里巴巴開源委員會副主席、阿里云開源大數據平臺負責人王峰所言,Flink擊敗Storm成為新一代流計算引擎的關鍵點在于,它是一款有狀態的流計算,除了低延遲、高吞吐的流計算能力,它能將流計算和狀態存儲進行有機融合,從而在框架層支持整個流計算狀態,確保數據的精準以及一致性體驗。
而從實際業務角度來看,Flink流批一體架構的推出,不只是簡單的技術架構革新,而是從根本上解決了實際場景的生產可用性問題。以小米為例,引入Flink之前,小米的實時計算主要以SparkStreaming為主,少部分是Storm,離線以Spark為主。2019年以后,小米將Flink廣泛應用于信息流搜索推薦、廣告實時樣本和實時ETL等場景,逐步替換了原來的SparkStreaming。基于Flink架構的各種優勢,極大地滿足了業務需求,提升了資源的使用率。2020年,企業開始使用FlinkSQL,用于實時數倉建設和實時ETL開發,讓整個數據鏈路由T+1降到秒級。2021年,企業開始接入數據湖Iceberg,通過Flink和Iceberg構建流批一體的實時數據倉庫解決方案。小米今天實時的業務響應能力說明,流批一體架構在開發效率提升、數據鏈路簡化等方面擁有絕對的優勢。
很明顯,作為全球最受歡迎的開源軟件之一,Flink已經占據新一代流計算的霸主地位,但實時計算的創新并不會止步于此。Flink正在通過流批一體的SQL、流批一體的存儲以及全鏈路的流式數倉(Streaming Data Warehouse)不斷提升用戶體驗。
從發展淵源來看,互聯網領域是Flink誕生的“搖籃”。根據不完全統計,使用Flink的非互聯網企業占比已超過30 %。在互聯網用戶的帶領下,傳統行業也在加入Flink實時計算的浪潮。目前,Flink已在政務、金融、制造、零售、交通出行、傳媒、游戲和科技等行業大規模應用,幫助上千家全球企業更高效地進行實時業務升級。
如今,Flink已更新到1.16版本,部分子項目已更新到2.1.0版本,不管在易用性、穩定性和性能方面,都得到全方位的改進,常被用戶詬病的多個痛點問題也得以解決。同時,Flink社區也在一步步地推動Streaming Data Warehouse從概念變為現實,并走向成熟。
針對Flink未來發展,阿里巴巴將秉承初心,積極擁抱開源,貢獻開源、引領開源。另外,流批一體將會是Flink未來主攻的一個重要方向。
“Flink是阿里代表性開源項目之一,未來會持續對其進行投入。我們會繼續朝著Streaming Data Warehouse的方向努力,真正意義上完成流批一體計算與存儲的融合,讓數倉的數據流動起來,為全球的用戶提供更優質的服務與支持。”王峰表示。
總之,滾滾歷史洪流中,有爭議、有吵鬧,有憤懣不平的由開源到閉源,但整體趨勢向好。Flink今天的成功,再次證明開源對社會的發展、對技術創新帶來的推動作用,有目共睹。這種免費、靈活、安全和可靠的服務形式,使得諸多用戶得以更加經濟、高效地使用軟件,進而快速邁向數字化轉型征程中。尤其,當開源軟件與云計算、云原生技術相互促進、交匯發展,使技術創新浪潮再次迸發,中國開發者開始以更加積極的心態擁抱開源,并成為開源世界的中堅力量。
