阿里重磅開源Blink:爲什麼我們等了這麼久?

今年,實時流計算技術開始步入主流,各大廠都在不遺餘力地試用新的流計算框架,實時流計算引擎和API諸如Spark Streaming、Kafka Streaming、Beam和Flink持續火爆。阿里巴巴自 2015 年開始改進 Flink,並創建了內部分支Blink,目前服務於阿里集團內部搜索、推薦、廣告和螞蟻等大量核心實時業務。12月20日,由阿里巴巴承辦的Flink Forward China峯會在北京國家會議中心召開,來自阿里、華爲、騰訊、美團點評、滴滴、字節跳動等公司的技術專家與參會者分享了各公司基於Flink的應用和實踐經驗。在大會的主題演講上,阿里巴巴集團副總裁周靖人宣佈,阿里巴巴內部Flink版本Blink將於2019年1月正式開源!阿里希望通過Blink開源進一步加深與Flink社區的聯動,並推動國內更多中小型企業使用Flink。

會上,AI前線對阿里巴巴計算平臺事業部研究員蔣曉偉(花名量仔)進行了獨家專訪,他與我們分享了關於下一代實時流計算引擎的看法,並針對Blink的重要新特性、開源後Blink與Flink之間的關係、Blink後續規劃等問題進行了解答。

阿里巴巴與Flink

隨着人工智能時代的降臨和數據量的爆發,在典型的大數據業務場景下,數據業務最通用的做法是:選用批處理的技術處理全量數據,採用流式計算處理實時增量數據。在許多業務場景之下,用戶的業務邏輯在批處理和流處理之中往往是相同的。但是,用戶用於批處理和流處理的兩套計算引擎是不同的。

因此,用戶通常需要寫兩套代碼。毫無疑問,這帶來了一些額外的負擔和成本。阿里巴巴的商品數據處理就經常需要面對增量和全量兩套不同的業務流程問題,所以阿里巴巴就在想:能不能有一套統一的大數據引擎技術,用戶只需要根據自己的業務邏輯開發一套代碼。這樣在各種不同的場景下,不管是全量數據還是增量數據,亦或者實時處理,一套方案即可全部支持,這就是阿里巴巴選擇 Flink 的背景和初衷。

彼時的 Flink 不管是規模還是穩定性尚未經歷實踐,成熟度有待商榷。阿里巴巴實時計算團隊決定在阿里內部建立一個 Flink 分支 Blink,並對 Flink 進行大量的修改和完善,讓其適應阿里巴巴這種超大規模的業務場景。簡單地說,Blink 就是阿里巴巴開發的基於開源 Flink 的阿里巴巴內部版本。

阿里巴巴基於Flink搭建的平臺於 2016 年正式上線,並從阿里巴巴的搜索和推薦這兩大場景開始實現。目前阿里巴巴所有的業務,包括阿里巴巴所有子公司都採用了基於 Flink 搭建的實時計算平臺。

image

目前,這套基於 Flink 搭建的實時計算平臺不僅服務於阿里巴巴集團內部,而且通過阿里雲的雲產品 API 向整個開發者生態提供基於 Flink 的雲產品支持。

以下內容整理自AI前線對蔣曉偉的採訪。

開源的時機

AI前線:爲什麼選擇現在將Blink開源?這其中有哪些考量?什麼樣的時機纔是開源最合適的時機?

蔣曉偉:在我看來,有幾個因素:第一個因素是,這幾年我們一直試圖把阿里對Flink的改進推回社區,但社區有自己的步伐,很多時候可能無法把我們的變更及時推回去。對於社區來說,需要達成共識,才能更好地保證開源項目的質量,但同時就會導致推入的速度慢一些。經過這幾年積累,我們這邊和社區之間的差距已經變得比較大了。Blink有一些很好的新功能,比如批處理功能,在社區版本是沒有的。在過去這段時間裏,我們不斷聽到有人問,Blink什麼時候能開源、是不是能開源這樣的呼聲。我們有兩種方法,一種就是慢慢地推回去再給用戶用。但我們認爲這樣等下去對社區不是最好的。我們還是希望儘快把我們的代碼拿出來,儘量讓大家都能用起來。所以最近這半年,我們一直都在準備把代碼整理好去進行開源。

選擇在這個時間點開源有幾個好處:第一個好處是我們所開源的這些代碼在阿里內部經過像雙一十、雙十二這樣巨大流量的檢驗,讓我們對它的質量有更大的信心,這是非常大的好處;第二個好處,Flink Forward大會是第一次在中國舉辦,在這樣一個場合開源表明了阿里對Flink社區堅定的支持,這是一個比較好的場合。主要是基於這些考慮。

選Blink還是Flink?這不會是一個問題

AI前線:開源的Blink版本會和阿里巴巴內部使用的Blink保持一致嗎?

蔣曉偉:即將開源的是阿里巴巴雙十二的上線版本,還會有一些小的改進。

AI前線:Blink開源後,兩個開源項目之間的關係會是怎樣的?未來Flink和Blink也會由不同的團隊各自維護嗎?

蔣曉偉:開源的意思是,我們願意把Blink的代碼貢獻出來,但這兩個項目是一個項目。有一件事情需要澄清一下,我們將公開Blink的所有代碼,讓大家都可以看到,但與此同時,我們會跟社區一起努力,通過討論決定Blink以什麼樣的方式進入Flink是最合適的。因爲Flink是一個社區的項目,我們需要經過社區的同意才能以分支的形式進入Flink,或者作爲變更Merge到項目中。我想強調一下,我們作爲社區的一員需要跟社區討論才能決定這件事情。

Blink永遠不會成爲另外一個項目,如果後續進入Apache一定是成爲Flink的一部分,我們沒有任何興趣另立旗幟,我們永遠是Flink的一部分,也會堅定地支持Flink。我們非常願意把Blink的代碼貢獻給所有人,所以明年1月份我們會先將Blink的代碼公開,但這期間我們也會和社區討論,以什麼樣的形式進入Flink是最合適的、怎麼貢獻是社區最希望的方式。

我們希望,在Blink開源之後,和社區一起努力,把Blink好的地方逐步推回Flink,成爲Flink的一部分,希望最終Flink和Blink變成一個東西,阿里巴巴和整個社區一起來維護。而不是把它分成兩個東西,給用戶選擇的困難,這不是我們想要的。

因此未來用戶也不會面臨已經部署了Flink、是否要把Flink遷移到Blink的問題,企業選型時也不需要在Flink和Blink之間抉擇,Blink和Flink會是同一個項目。Blink開源只有一個目的,就是希望Flink做得更好。

Blink改進了什麼?

AI前線:能不能重點介紹一下即將開源的Blink版本有哪些比較重要的新技術特性?與Flink最新發布版本相比,阿里的Blink做了哪些方面的優化和改進?

蔣曉偉:阿里巴巴實時計算團隊不僅對 Flink 在性能和穩定性上做出了很多改進和優化,同時在覈心架構和功能上也進行了大量創新和改進。過去兩年多,有很多更新已經推回給社區了,包括Flink 新的分佈式架構等。

目前我們的Blink版本跟社區版本還有幾點差異,第一個是穩定性方面,我們做了一些優化,在某些場景會比社區版本更加穩定,特別是在大規模場景。另外還有一個比較大的不一樣是我們全新的Flink SQL技術棧,它在功能上,特別是在批處理的功能上比社區版本強大很多。它支持現在標準SQL幾乎所有的語法和語義。另外,在性能上,無論是在流式SQL還是批SQL,我們的版本在性能上都有很大的優勢。特別是在批SQL的性能方面,當前Blink版本是社區版本性能的10倍以上,跟Spark相比,在TPCDS這樣的場景Blink的性能也能達到3倍以上。如果用戶對批處理或者對SQL有着比較強的需求,我們這個版本會用戶可以得到很多好處。

Blink在阿里內部的應用

AI前線:請介紹一下Blink在阿里內部的使用情況。目前Blink在阿里的大數據架構中扮演什麼樣的角色?在阿里內部主要用於哪些業務和應用場景?

蔣曉偉:現在阿里的大數據平臺上,所有的實時計算都已經在使用Blink;同時,除了實時計算以外,在一些流批一體化的場景也會用Blink來做批處理;我們在機器學習場景也有一個探索,叫做Alink,這個項目是對Flink Machine Learning Library的改進,其中實現了大量的算法,都是基於Flink做實時機器學習的算法,Alink在很多場景已經被證明在規模上有很大的優勢。同時,我們在圖計算場景也有一些探索。

AI前線:目前阿里內部有多少部門在使用Blink?

蔣曉偉:前段時間我們剛剛做過統計,阿里的技術部門大約有70%都在使用Blink。Blink一直是在用戶的反饋之中成長起來的,對於內部用戶反饋的數據傾斜、資源使用率、易用性方面的問題,Blink都做了針對性的改進。

現在Blink用的最多的場景主要還是實時計算方面,阿里還有一些業務現在相對比較新,還沒有進入實時計算的領域,等這些業務進入實時計算領域時也會使用Blink。

在批處理方面,阿里內部也有一個自研的批處理引擎叫做MaxCompute,MaxCompute也會擁抱Flink生態,在語法和語義上做和Flink兼容的工作。未來,整個阿里的計算體系和平臺都會融入同一個生態。

後續規劃

AI前線:接下來阿里對於Blink還有哪些規劃?包括技術改進、落地應用、更新維護、社區等幾個方面。

蔣曉偉:從技術上說,今天我們公佈了Flink在批處理上的成果,接下來,我們會對技術持續投入,我們希望每幾個月就能看到技術上有一個比較大的亮點。下一波亮點應該是機器學習場景。要把機器學習支持好,有一系列的工作要做,包括引擎的功能、性能和易用性。這些工作我們已經在內部的討論和進行之中,接下來幾個月,大家應該會看到一些成果。我們也在和社區討論一些事情。除了機器學習之外,我們在圖計算方面也有一些探索,包括對增量迭代更好的支持。做完這些之後,可以認爲Flink作爲大數據的計算引擎已經比較完備了。

同時,我們也重點去做Flink的生態,包括Flink與其他系統之間的關係、易用性等。Flink要真正做好,不僅需要它本身功能強大,還需要把整個生態做得非常強大。這部分我們甚至會跟一些ISV合作,看看是不是能夠在Flink之上提供更好的解決方案,進一步降低用戶的使用門檻。

在社區方面,我們希望能夠把把Blink完全融入Flink社區,一起做Flink社區的運營,讓Flink真正在中國、乃至全世界大規模地使用起來。

在應用方面,實時流計算其實有很多很有潛力的應用場景,但有一些可能大家不是非常熟悉,我們會對這些場景做一些推廣。以實時機器學習爲例,它往往能夠給我們帶來比一般的機器學習更大的效果提升。去年,實時強化學習給我們在搜索上帶來了20%以上的提升。除此之外,在安全領域(比如實時的Fraud Detection)、監控報警方面,還有IoT領域,實時流計算都有非常廣泛的應用場景。這些Flink現在可能已經做了,但是大家還沒有意識到,Flink能夠給大家帶來這樣的商業上的好處。

AI前線:Blink開源之後,後續阿里在這基礎上做的變更和更新會以什麼樣的方式推回社區版本?

蔣曉偉:我們理想的方式是,阿里內部的版本是社區的Flink版本加上一些定製化的插件,不需要對Flink本身做修改,而是對Flink做增加。比如跟阿里內部系統交互的部分跟社區是不適用的,就會保持在內部,我們希望這些修改不動Flink代碼,而是用插件的方式加在Flink上面。最終的方式就是,對於所有公司都有用的修改會在Flink代碼本身做修改,使所有使用Flink的公司都能從中獲利,而對接阿里內部系統的部分就只在阿里內部使用。

下一代實時流計算引擎之爭

AI前線:先在很多人提到實時流計算引擎,都會拿Spark和Flink來做對比,您怎麼看待下一代實時流計算引擎之爭?未來實時流計算引擎最重要的發展方向是什麼?

蔣曉偉:Spark和Flink一開始share了同一個夢想,他們都希望能夠用同一個技術把流處理和批處理統一起來,但他們走了完全不一樣的兩條路,前者是用以批處理的技術爲根本,並嘗試在批處理之上支持流計算;後者則認爲流計算技術是最基本的,在流計算的基礎之上支持批處理。正因爲這種架構上的不同,今後二者在能做的事情上會有一些細微的區別。比如在低延遲場景,Spark基於微批處理的方式需要同步會有額外開銷,因此無法在延遲上做到極致。在大數據處理的低延遲場景,Flink已經有非常大的優勢。經過我們的探索, Flink 在批處理上也有了比較大的突破,這些突破都會反饋回社區。當然,對於用戶來說,多一個選擇永遠是好的,不同的技術可能帶來不同的優勢,用戶可以根據自己業務場景的需求進行選擇。

未來,在大數據方向,機器學習正在逐漸從批處理、離線學習向實時處理、在線學習發展,而圖計算領域同樣的事情也在發生,比如實時反欺詐通常用圖計算來做,而這些欺詐事件都是實時地、持續不斷地發生,圖計算也在變得實時化。

但是Flink除了大數據領域以外,在應用和微服務的場景也有其獨特的優勢。應用和微服務場景對延遲的要求非常苛刻,會達到百毫秒甚至十毫秒級別,這樣的延遲只有Flink的架構才能做到。我認爲應用和微服務其實是非常大的領域,甚至可能比大數據更大,這是非常激動人心的機會。上面這些都是我們希望能夠拓寬的應用領域。

AI前線:在技術方面,Spark和Flink其實是各有千秋,但在生態和背後支持的公司上面,Flink是偏弱的,那麼後續在生態和企業支持這塊,阿里會如何幫助Flink?

蔣曉偉:這次阿里舉辦Flink Forward China就是想推廣Flink生態的重要舉動之一。除了Flink Forward China大會,我們還會不定期舉辦各種線下Meetup,投入大量精力打造中文社區,包括將Flink的英文文檔翻譯成中文、打造Flink中文論壇等。在垂直領域,我們會去尋找一些合作伙伴,將Flink包裝在一些解決方案中提供給用戶使用。

AI前線:關於開源項目的中立性問題。阿里現在在大力地推動Flink開源項目的應用和社區的發展,但業界其他公司(尤其是與阿里在其他業務上可能有競爭的公司)在考慮是否採用Flink的時候可能還是會對社區的中立性存在一些疑慮,對於這一點,阿里是怎麼考慮的?

蔣曉偉:阿里本身會投入非常大的力量推動Flink社區的發展和壯大,但我們也非常希望有更多企業、更多人加入社區,和阿里一起推動社區發展,這次阿里承辦Flink Forward China峯會就是想藉此機會讓更多公司參與進來。光阿里一家是無法把Flink生態做起來的。我希望大家能夠看到我們在做的事情,然後消除這樣的疑慮。我們會用自己的行動表明,我們是真的希望把Flink的社區做大,在這件事情上,我們並不會有私心。

更多Flink、Blink和實時流計算的技術乾貨:

解讀2018:爲什麼今年實時流計算這麼火?

Flink已經足夠強大了嗎?阿里巴巴說:還不夠

爲什麼阿里會選擇 Flink 作爲新一代流式計算引擎?

基於Apache Flink的實時計算引擎Blink在阿里搜索中的應用

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