1. 程式人生 > >阿里雲實時計算的前世“功”今生“能”

阿里雲實時計算的前世“功”今生“能”

前言:
不修內功,難成大器。為了將Apache Flink在阿里巴巴真正執行起來,阿里巴巴實時計算團隊做了大量的優化,在阿里雲上的產品正式命名為實時計算,以Flink SQL為主要API,致力於打造一款全球領先的實時計算引擎。

正文:
阿里雲實時計算大可成稻草,小亦是利器
在光明日報近期的文章中,回首網際網路接入中國的二十多年,特別是最近五年,被網際網路之光照耀的地方,許多人的命運因網際網路而發生改變,人們可以通過一個滑鼠、一根網線或者一部手機就能與廣闊的世界相連。

有了網際網路,陝西省山陽縣貧困山區的孩子可以免費接受數字教育,通過網際網路認識到長頸鹿不是豬身馬首的動物。有了網際網路,甘肅山村貧困戶家裡養的山羊二十四小時就能通過專業冷鏈供應給上海市民。有了網際網路,80歲的烏鎮老太太可以用手機購物,開直播,成為“網紅”。這樣的故事還有很多很多。

然而科技並未止步於此,一直在不斷向前探索,對於企業來說,網際網路一面是陽光,一面是波濤。從網際網路時代到人工智慧時代,從資料量成指數級的爆發到應對實時計算的探索。到了今天,我們不止將目光侷限在淘寶能購物就好,物流能到貨就好,我們追求的是越來越精準化的購物體驗,對企業也提出了更加實時化,智慧化的需求。

實時計算一時間成為了企業向實時化、智慧化大資料計算升級轉型的稻草,抓住,則可繼續在波濤浪潮中翻滾,享受陽光。為了成為全球領先的實時計算引擎,阿里雲實時計算花了三年時間來苦練內功。

阿里雲實時計算的前半生,我叫Apache Flink™
2015年10月StreamCompute第一版在阿里巴巴集團內部發布,支援集團雙十一任務遷移到新平臺,保障大屏任務順利。2016年blink釋出上線,成功支援搜尋和推薦雙11全鏈路實時化。同年6月,公有云正式對外發布公測,為中國公有云環境下第一家提供流式資料處理平臺的產品Apache Flink™正式上線,並從阿里巴巴的搜尋和推薦這兩大場景開始實現。

對於阿里巴巴來說,為什麼需要Apache Flink™
阿里巴巴的商品資料處理經常需要面對增量和全量兩套不同的業務流程問題,所以阿里巴巴就在想:能不能有一套統一的大資料引擎技術,使用者只需要根據自己的業務邏輯開發一套程式碼。這樣在各種不同的場景下,不管是全量資料還是增量資料,亦或者實時處理,一套方案即可全部支援,這就是阿里巴巴選擇 Flink 的背景和初衷。

目前阿里巴巴所有的業務,包括阿里巴巴所有子公司都採用了基於 Flink 搭建的實時計算平臺。同時 Flink 計算平臺執行在開源的 Hadoop 叢集之上。採用 Hadoop 的 YARN 做為資源管理排程,以 HDFS 作為資料儲存。因此,Flink 可以和開源大資料軟體 Hadoop 無縫對接。
但是彼時的 Flink 不管是規模還是穩定性尚未經歷實踐,成熟度有待商榷。

阿里雲實時計算關鍵技術揭祕
揭祕關鍵技術之一:統一API
為了能夠真正做到使用者根據自己的業務邏輯開發一套程式碼,能夠同時執行在多種不同的場景,Flink 首先需要給使用者提供一個統一的 API。在經過一番調研之後,阿里巴巴實時計算認為 SQL 是一個非常適合的選擇。在批處理領域,SQL 已經經歷了幾十年的考驗,是公認的經典。

API選定好了,隨之而來的就是對SQL 層的技術架構進行升級和替換。阿里巴巴在 SQL 層提出了全新的 Quyer Processor,主要包括一個流和批可以儘量做到複用的優化層(Query Optimizer)以及基於相同介面的運算元層(Query Executor)。這樣一來, 80% 以上的工作可以做到兩邊複用,比如一些公共的優化規則,基礎資料結構等等。同時,流和批也會各自保留自己一些獨特的優化和運算元,以滿足不同的作業行為。
阿里雲實時計算的前世“功”今生“能”

揭祕關鍵技術之二:全新的資料結構

SQL 層的技術架構統一了,阿里巴巴開始尋求以全新的資料結構BinaryRow,從而讓 Blink 在 SQL 層的執行效率得到1倍以上的提升。得益於技術架構和基礎資料結構的統一,很多程式碼生成技術得以達到更廣範圍的複用。同時由於 SQL 的強型別保證,使用者可以預先知道運算元需要處理的資料的型別,從而可以生成更有針對性更高效的執行程式碼。

揭祕關鍵技術之三: 改造 Flink 資源排程系統

為了讓 Flink 在 Alibaba 的大規模生產環境中生根發芽,實時計算團隊如期遇到了各種挑戰,首當其衝的就是如何讓 Flink 與其他叢集管理系統進行整合。上面說到了Flink 原生叢集管理模式尚未完善,也無法原生地使用其他其他相對成熟的叢集管理系統。基於此,一系列棘手的問題接連浮現:多租戶之間資源如何協調?如何動態的申請和釋放資源?如何指定不同資源型別?

通過大量的調研與分析,最終選擇的方案是改造 Flink 資源排程系統,讓 Flink 可以原生地跑在 Yarn 叢集之上;並且重構 Master 架構,以此為契機,阿里巴巴和社群聯手推出了全新的 Flip-6 架構,讓 Flink 資源管理變成可插拔的架構,為 Flink 的可持續發展打下了堅實的基礎。如今 Flink 可以無縫執行在 YARN、Mesos 和 K8s 之上,正是這個架構重要性的有力說明。

揭祕關鍵技術之四:高可靠性、高穩定性
為了保證 Flink 在生產環境中的高可用,阿里巴巴著重改善了 Flink 的 FailOver 機制。首先是 Master 的 FailOver,Flink 原生的 Master FailOver 會重啟所有的 Job,改善後 Master 任何 FailOver 都不會影響 Job 的正常執行;其次引入了 Region-based 的 Task FailOver,儘量減少任何 Task 的 FailOver 對使用者造成的影響。有了這些改進的保駕護航,阿里巴巴的大量業務方開始把實時計算遷移到 Flink 上執行。

阿里雲實時計算,錘鍊後必將大放異彩
阿里雲實時計算在阿里巴巴內部是一個不斷被挑戰,不斷強化的過程。阿里巴巴是商業市場的縮影,淘寶、阿里影業等都已應用了阿里雲實時計算。支撐了淘寶對選品實時性的高要求,為阿里影業提供了滿足未來2-3年隨著影院增加,資料增長的報表功能解決方案。

在外部解決了貴州茅臺資料採集實時性、穩定性差、各渠道下的流量、交易及售後物流、服務、退款退貨等環節分析困難、異常預警資訊監控困難等難題。

阿里雲實時計算今年4月份正式商業化之後,截止目前,使用使用者已經超過2000家。在已有的使用者中,實時計算主要應用於實時網際網路資料分析、實時資料大屏、實時金融風控、電商實時推薦等諸多領域。阿里集團內淘寶、天貓、天弘基金、菜鳥、工業大腦等諸多業務均大量應用了實時計算技術,在集團外,也包括眾安保險、全民TV、新華智雲、貴州茅臺等諸多公司的應用案例。

2005年,弗裡德曼在《地球是平的》一書中,曾興奮地描述了技術讓世界變平的過程,預言全球化的大趨勢不可逆轉。儘管當今世界,全球化的過程面臨一波三折,但全球化的浪潮,終究是不可逆的,特別是在這個網際網路時代。今天,阿里雲實時計算用自身的實力不斷證明了自己,成為全球領先的實時計算引擎。

瞭解更多關於實時計算詳情請戳:https://data.aliyun.com/product/sc?spm=5176.10695662.1131226.1.5aff307fVKhYmN&tlog=out_aiticai_feature_20181120