
作者 | 王峰(莫問)
來源 | 阿裡技術公衆号
随着 11 月 11 日 12 點鐘聲的敲響,2020 年雙 11 的 GMV 數字定格在了 4982 億,在 Flink 實時計算技術的驅動下全程保持了絲般順滑滾動,基于 Flink 的阿裡巴巴實時計算平台也圓滿完成了今年雙 11 整體經濟體的實時資料任務保障,再次平穩度過全年大考。
除了 GMV 媒體大屏之外,Flink 還支援了諸如搜尋推薦實時機器學習,廣告實時反作弊,菜鳥訂單狀态實時跟蹤回報,雲伺服器的實時攻擊探測以及大量基礎設施的監控報警等等重要業務。實時業務量和資料量每年都在大幅增長,今年的實時計算峰值達到了創紀錄的每秒 40 億條記錄,資料體量也達到了驚人的7 TB 每秒,相當于一秒鐘需要讀完 500 萬本《新華字典》。
截止目前,我們的實時計算作業數達到了 35000 多個,叢集總計算規模也達到了超過 150 萬核,在中國乃至世界範圍内都處于領先水準。至此,Flink 已經支援了阿裡經濟體所有的實時計算需求,實作了全鍊路資料實時化,第一時間為消費者、商家以及營運人員帶來了資料的價值。
但今年 Flink 技術演進帶來的價值不僅于此,基于 Flink 的流批一體資料應用也開始在阿裡巴巴最核心的資料業務場景嶄露頭角,并在穩定性、性能和效率方面都經受住了嚴苛的生産考驗。
“流批一體”在阿裡核心資料場景首次落地
事實上,Flink 流批一體技術很早就在阿裡巴巴内部開始應用了。Flink 在阿裡的發展始于搜尋推薦場景,是以搜尋引擎的索引建構以及機器學習的特征工程都已經是基于 Flink的 批流一體架構。今年雙11,Flink 更進一步,利用流批一體計算能力,助力資料中台實作更加精準的實時離線交叉資料分析和業務決策。
阿裡的資料報表分為實時和離線兩種,前者在諸如雙 11 大促場景下的作用尤為明顯,可以為商家、營運以及管理層提供各種次元的實時資料資訊,并幫助其及時作出決策,提升平台和業務效率。例如:在典型的營銷資料實時分析場景,營運和決策層需要對比大促當天某個時間段和曆史某個時間段的資料結果(比如大促當天 10 點的成交額和昨天 10 點成交額的對比),進而判斷目前營銷的效果,以及是否需要進行調控、如何調控等政策。
在上面這種營銷資料分析場景下,實際上需要兩套資料分析結果,一套是基于批處理技術在每天晚上計算出的離線資料報表,一套是基于流處理技術算出當天的實時資料報表,然後針對實時和曆史資料進行對比分析,根據對比結果進行相關決策。離線和實時報表分别是基于批和流兩種不同計算引擎産出,即批和流分離的架構不僅會有兩套開發成本,更難以解決的是資料邏輯和口徑對齊問題,很難保證兩套技術開發出的資料統計結果是一緻的。是以,理想的解決方案就是利用一套流批一體的計算引擎進行資料分析,這樣離線和實時報表将天然一緻。鑒于 Flink 流批一體計算技術的不斷成熟,以及前期在搜尋推薦場景的成功落地,今年雙 11 資料平台開發團隊也展示出堅定的信心和信任,與 Flink 實時計算團隊并肩作戰,共同推動實時計算平台技術更新,第一次讓基于 Flink 的流批一體資料處理技術在雙 11 最核心的資料場景順利落地。
今年由 Flink 團隊和資料平台團隊共同推動的流批一體計算架構在雙 11 資料核心場景成功首秀,也得到了阿裡資料中台負責人朋新宇在業務層的認可:流批一體在技術上,實作了哪怕是多個計算處理模式,也隻需要撰寫一套代碼就能相容。在計算速度上比其他架構快1倍、查詢快4倍,給小二們搭建資料報表提升了4-10倍的速度。同時,由于"一體化"的特性,能實作實時與離線資料的完全一緻。
除了在業務開發效率和計算性能上的進步,流批一體計算架構也讓叢集資源使用率得到大幅提升。阿裡的 Flink 實時叢集經過最近幾年的高速擴充,已經達到了百萬核 CPU 的計算規模,上面運作着數萬個 Flink 實時計算任務。白天是實時資料業務的高峰期,晚上業務低峰期計算資源出現空閑,正好可以為離線批任務提供免費的計算資源。批和流一套引擎,運作在一套資源底座上,天然的削峰填谷,自然的混布,不僅節省了開發成本,同時也大幅節省了運維成本和資源成本。今年雙 11,基于 Flink 的流批一體資料業務,沒有額外申請任何資源,批模式全部複用 Flink 實時計算叢集,叢集使用率大幅提升,為業務方節省了大量的資源開銷,高效的資源模式也為後續更多業務創新提供了沃土。
“流批一體”,Flink 十年磨一劍
接下來讓我們從技術角度聊一下“流批一體”大資料處理技術的發展曆程。這要從開源大資料技術的鼻祖 Hadoop 開始談起,10 多年前 Hadoop 作為第一代開源大資料技術出現,MapReduce 作為第一代批處理技術解決了大規模資料處理問題,Hive 的出現更是讓使用者可以用 SQL 的方式進行大規模資料的計算。但随着大資料業務場景的逐漸發展,很多應用都對資料實時化産生了越來越強烈的需求,例如:社交媒體,電商交易,金融風控等行業。在這個需求背景下,Storm 作為第一代大資料流處理技術應運而生,Storm 在架構上和 Hadoop / Hive 完全不同,它是完全基于消息的流式計算模型,可以在毫秒級延遲情況下并發處理海量資料,是以 Storm 彌補了 Hadoop MapReduce 和 Hive 在時效性上的不足。就這樣大資料計算在批和流兩個方向都有了各自不同的主流引擎,并呈現出泾渭分明的格局,大資料處理技術經曆完了第一個時代。
随後大資料處理技術來到了第二個時代, Spark 和 Flink 兩款計算引擎在新時代陸續登場。Spark 相對于 Hadoop 和 Hive,具備更加完善的批處理表達能力和更加優秀的性能,這讓 Spark 社群迅速發展,并逐漸超越了 老牌的 Hadoop 和 Hive,成為批處理技術領域的主流技術。但 Spark 并未止步于批處理技術,很快 Spark 也推出了流計算解決方案,即 Spark Streaming,并不斷進行改進完善。但大家都知道 Spark 的核心引擎是面向“批處理”概念的,不是一款純流式計算引擎,在時效性等問題上無法提供極緻的流批一體體驗。但 Spark 基于一套核心引擎技術,同時實作流和批兩種計算語義的理念是非常先進的,與其具備相同流批一體理念的還有另一款新引擎 Flink。Flink 正式亮相比 Spark 稍微晚一些,但其前身是來自德國柏林工業大學 2009 年的研究項目 Stratosphere,至今也有 10 年之久。Flink 的理念和目标也是利用一套計算引擎同時支援流和批兩種計算模式,但它和 Spark 相比選擇了不同的實作路線。Flink 選擇了面向“流處理”的引擎架構,并認為“批”其實是一種“有限流”,基于流為核心的引擎實作流批一體更加自然,并且不會有架構瓶頸,我們可以認為 Flink 選擇了 ”batch on streaming“ 的架構,不同于 Spark 選擇的 “streaming on batch” 架構。
Flink 實作完善的流批一體架構也不是一蹴而就的,在早期的 Flink 版本中,Flink的流和批無論在 API 還是在Runtime 上都還沒有達到徹底的統一。但從 1.9 版本開始,Flink 開始加速在流批一體上進行完善和更新,Flink SQL 作為使用者使用的最主流 API,率先實作了流批一體語義,使得使用者隻需學習使用一套 SQL 就可以進行流批一體的開發,大幅節省開發成本。
但是 SQL 并不能解決使用者的所有需求。一些定制化程度較高,比如需要精細化的操縱狀态存儲的作業還是需要繼續使用 DataStream API。在常見的業務場景中,使用者寫了一份流計算作業後,一般還會再準備一個離線作業進行曆史資料的批量回刷。但是 DataStream 雖然能很好的解決流計算場景的各種需求,但卻缺乏對批處理的高效支援。
是以,Flink 社群在完成 SQL 流批一體更新之後,從 1.11 版本也開始投入大量精力對 DataStream 進行流批一體能力的完善,在 DataSteam API 上增加批處理的語義,同時結合流批一體 Connector 的設計,讓 DataStream API 能夠在流批融合場景下對接 Kafka 和 HDFS 等不同類型流批資料源。 接下來流批一體的疊代計算 API 也将被引入到 DataStream 中,進一步解鎖一系列機器學習的場景。
在目前 Flink 主版本中,不管是 SQL 還是 DataStream API,在流批一體概念上都還是流計算和批計算功能的一個結合體。使用者編寫的代碼,需要選擇使用流的方式跑,還是批的方式跑。但有些業務場景已經提出更高的要求,即流批混合的需求,并且自動的在批和流之間自動切換,例如:資料內建以及資料入湖場景,使用者的需求是先把資料庫的全量資料同步到 HDFS 或者雲存儲上,然後再自動實時同步 DB 中的增量資料上去,并在同步過程中進行 流批混合的 ETL 資料處理,Flink 也将在後續繼續支援更加智能的流批融合場景。
Flink “流批一體”技術在阿裡巴巴的發展曆程
阿裡巴巴是國内最早選擇 Flink 開源技術的公司,在 2015 年我所在的搜尋推薦團隊希望面向未來5-10 年的發展,選擇一款新的大資料計算引擎,用來處理搜尋推薦背景海量商品和使用者資料,由于電商行業對時效性具備非常高的訴求,是以我們希望新的計算引擎既有大規模批處理能力,也具備毫秒級實時處理能力,即一款流批統一的引擎,當時 Spark 的生态已經走向成熟,并且通過 Spark Streaming 提供了流批一體的計算能力,而 Flink 當時剛剛在前一年成為Apache頂級項目,還是一個冉冉升起的新星項目,當時團隊内部針對 Spark 和 Flink 經過了一段時間的調研和讨論,一緻認為雖然 Flink當時生态并不成熟,但其基于流處理為核心的架構對于流批一體的支援更加合适,是以非常迅速的做出決定,在阿裡内部基于開源 Flink 進行完善和優化,搭建搜尋推薦的實時計算平台。
經過團隊一年的努力,基于 Flink 的搜尋推薦實時計算平台成功的支援了2016 年的搜尋雙 11,保證了搜尋推薦全鍊路實時化。通過在阿裡最核心業務場景的落地證明,也讓全集團都認識了 Flink 實時計算引擎,并決定将全集團實時資料業務都将遷移到 Flink 實時計算平台上。又經過一年的努力,Flink 在 2017 年雙 11 不負衆望,非常順利的支援了全集團雙 11 的實時資料業務,包括 GMV 大屏等最核心的資料業務場景。
2018 年 Flink 開始走向雲端,阿裡雲上推出了基于 Flink 的實時計算産品,旨在為廣大中小企業提供雲計算服務。飲水思源,阿裡巴巴不僅希望利用 Flink 技術解決自己業務的問題,同樣也希望能夠推動 Flink 開源社群更快的發展,為開源技術社群做出更多貢獻,是以阿裡巴巴在 2019 年初收購了 Flink 創始公司和團隊 Ververica,開始投入更多資源在 Flink 生态和社群上。到了 2020 年,國内外主流科技公司幾乎都已經選擇了 Flink 作為其實時計算解決方案,我們看到 Flink 已經成為大資料業界實時計算的事實标準。
接下來,Flink 社群不會停止技術創新,在阿裡巴巴業務場景中流批一體技術已經從理論走向落地。2020 年的雙 11,Flink 流批一體技術在天貓營銷決策核心系統中給出了精彩的表現,加上之前已經在搜尋推薦中成功運作的流批一體索引建構以及機器學習流程,充分驗證了5 年前我們大膽選擇 Flink 技術體系的正确性,相信未來我們将會在更多公司看到 Flink 流批一體技術的落地。
“流批一體”技術創新,推動 Flink 開源社群蓬勃發展
Flink 堅持流批一體技術創新之路,也自然推動 Flink 開源社群的高速發展和生态的加速繁榮。我們欣喜的看到,随着 Flink 在國内更多公司的加速落地,來自中文社群力量日益龐大,已經開始逐漸超越國外成為主流。
首先最明顯的是使用者數量的增多,從今年 6 月份起,Flink 中文郵件清單的活躍度開始超越英文郵件清單。随着大量的使用者湧入 Flink 社群,也帶來了更多的優秀代碼貢獻者,有效的促進了 Flink 引擎的開發疊代。
自 1.8.0 版本以來,Flink 每個版本的 Contributor 數量都在提升,其中大多數都是來自國内的各大企業。毫無疑問,來自國内的開發者和使用者群體,已經逐漸成為推動 Flink 向前發展的中堅力量。
中文社群的不斷壯大,使得 Flink 整體的活躍度和 2019 年相比有增無減。在 Apache 軟體基金會 2020 财年的報告中,Flink 蟬聯了年度最活躍項目(通過 user+dev 郵件清單活躍度)。與此同時,在代碼 Commit 次數和 Github 首頁流量這兩項名額上,Flink 均排名第二。能在 Apache 軟體基金會接近 350個 頂級項目中取得如此成績,着實不易。
Flink Forward Asia 2020,“流批一體”技術揭秘
Flink Forward 是由 Apache 官方授權的 Flink 技術大會, 今年 Flink Forward Asia (簡稱:FFA) 大會全程采用線上直播的方式,免費為廣大開發者提供一場開源大資料技術盛宴,足不出戶可以線上觀看來自 阿裡巴巴、螞蟻科技、騰訊、位元組跳動、美團、小米、快手、B 站、網易、微網誌、Intel、DellEMC、Linkedin 等國内外一線網際網路公司針對 Flink 的技術實踐分享和技術創新。
流批一體也将是本屆 FFA 大會的熱門話題,來自天貓資料技術負責人将會給大家分享 Flink 流批一體技術在阿裡的實踐和落地,讓大家看到流批一體技術是如何在雙 11 最核心的場景中發揮業務價值;來自阿裡巴巴、位元組跳動的 Flink PMC 和 Committer 技術專家将圍繞 Flink 流批一體 SQL 和 Runtime 進行深度技術解讀,為大家帶來 Flink 社群的最新技術進展;來自騰訊的遊戲技術專家将為大家帶來 Flink 在國民遊戲王者榮耀中的應用實踐;來自美團的實時大資料負責人将為大家介紹 Flink 如何助力生活服務場景實時化;來自快手大資料負責人将為大家帶來 Flink 在快手的前世今生發展曆程;來自微網誌的機器學習技術專家将為大家帶來如何利用 Flink 進行資訊推薦。此外,Flink 相關的議題還涵蓋了金融、銀行、物流、汽車制造、出行等各行各業,呈現出百花齊放的繁榮生态景象。歡迎對開源大資料技術有熱情的開發者能參加本屆 Flink Forward Asia 技術大會,了解更多 Flink 社群最新技術發展和創新。大會官網:
http://flink-forward.org.cn