導語:隨著互聯網技術發展,新技術不斷涌現,這制造了一個意想不到的新問題:打造服務時可能經常多種不同領域技術深度結合,但由于種種原因這些技術通常難以結合的那么好。螞蟻集團基于開源的分布式計算框架Ray構建融合引擎,在不同場景去解決這個問題,取得了一定成果,現在就讓我們來看看他們是怎么做的?
利用Ray構建融合引擎
隨著互聯網的發展,人們傾向于使用新的計算范式來應對不同的場景,新的技術也隨之涌現,如OLAP引擎、圖計算、流計算、深度學習等。這意味著在解決一個問題時,可能需要兩項甚至多項技術進行深度的結合。
Ray的使用也很簡單,在目前比較流行的分布式框架,都有三個比較基礎的分布式原語,分布式任務、對象和服務。而常用的面向過程的編程語言中,也剛好有三個基本概念,函數、變量和類。這三個編程語基本概念剛好可以和分布式框架的原語對應起來。在Ray系統中,可以通過簡單的改動,實現它們之間的轉換。
但是,在將不同技術結合到一起的時候,會遇到多方面的挑戰,包括:
● 復雜系統的協調。當多個核心計算引擎組合到一起的時候,系統的復雜性大大上升,也加大了工程師對復雜系統的協調難度;
● 性能優化。在進行性能調優工作時,工程師需要面對多種分屬不同領域的計算引擎,導致系統難以突破性能瓶頸;
● 開發效率。工程師需要熟悉多個引擎如何協同工作,出現問題也難以定位和排查,導致開發效率低下。
這正是螞蟻集團開發融合計算引擎的原因,其目標是將多種不同范式的引擎融合在一起,更好的提供服務,融合計算基于分布式計算框架Ray開發而成,具備以下特性:
● 簡單且通用的API。
● 同時支持多個編程語言。
● 彈性且可自定義的任務調度。
● 分布式狀態管理。
● 易用的錯誤處理和故障恢復。
● 低成本的DevOps。
Ray是由伯克利大學RiseLab實驗室發起,螞蟻金服共同參與的一個開源分布式計算框架,它提出的初衷在于讓分布式系統的開發和應用能夠更加簡單。Ray作為計算框架具有敏捷的調度機制,也可以根據計算對資源使用的需求實現異構調度。
Ray的使用也很簡單,在目前比較流行的分布式框架,都有三個比較基礎的分布式原語,分布式任務、對象和服務。而常用的面向過程的編程語言中,也剛好有三個基本概念,函數、變量和類。這三個編程語基本概念剛好可以和分布式框架的原語對應起來。在Ray系統中,可以通過簡單的改動,實現它們之間的轉換。

左邊是一個簡單的例子,在這個函數前面需要加入一個“@remote”修飾符,就可以把一個函數轉換成為分布式任務。任務通過“.remote”調用執行,返回值是一個變量,又可以參與到其他計算中。
右邊是另一個例子,通過加“@remote”修飾符的方式可以把一個類轉變成服務。類中的方法可以通過“.remote”調用變成一個分布式任務,和函數的使用非常相似。通過這種方式可以實現從單機程序到分布式任務的轉變,把本地的任務調度到遠程的機器上進行執行。
關于Ray更多的介紹參見:《提效降本:螞蟻金服如何用融合計算改造在線機器學習》

在螞蟻的金融智能技術架構中,融合計算運行于Kubernetes集群之上,Ray作為分布式計算的基礎設施,支持包括動態圖計算、在線機器學習等應用框架,驅動上層實時風控、知識圖譜等應用。

螞蟻深度參與了Ray開源項目的開發,在Ray社區貢獻位于前二位。截止到2020年10月,前25位貢獻者當中有8位螞蟻工程師,22%的代碼由螞蟻集團貢獻。螞蟻為Ray貢獻了包括Java API、容錯性GCS等功能特性,并為Ray在大規模落地實踐提供了寶貴經驗。
Ray在螞蟻集團的規模化應用實踐
螞蟻在18年Ray項目的早期就參與到了項目的開發,長期和Ray開源社區保持密切合作,并深度參與了Ray內核的開發。在螞蟻內部,我們基于Ray構建了實時圖計算、在線計算、在線機器學習等計算平臺,以及多個直接運行在Ray之上的分布式業務系統。這些系統在微貸、風控、智能營銷、金融智能、金融核心等核心業務領域得到了廣泛的應用,平穩順利地支持了多次雙十一大促。
下面,我們將簡要介紹Ray在螞蟻集團的規模化應用實踐。
首先是在線機器學習系統。
傳統的在線機器學習系統是一系列子系統組成的任務管道,原始的實時數據需要流經過濾、采樣、特征工程、訓練和部署等系統,才能發揮作用。這就給我們帶來了數據一致性、系統穩定性、多平臺等挑戰。
螞蟻基于Ray開發出端到端的在線機器學習架構,如下圖。

這套架構在一個在線機器學習框架中包括實時數據處理、分布式訓練以及模型部署三大組件,并通過Ray的分布式計算特性,支持跨編程語言的開發、exactly once、自動化訓練和模型更新等。

在該在線學習系統的運行時里,我們可以看到實時數據處理和訓練及部署是高度集成在一起的,外部的實時數據被轉換為微批處理,并實時同步給訓練組件,然后進行部署,這種設計可以最大化系統效率。這套系統同時支持數據流API和SQL兩種調用方式,進一步為業務方降低了使用的學習成本。
另一個落地場景是大規模并行處理。
隨著業務場景和需求的不斷深化擴展,許多在線應用開始承擔分布式計算功能,然而,現有的應用架構缺乏分布式計算系統中的任務調度、集群管理、靈活容錯 FO 等能力,導致在業務規模化過程中,容易出現集群負載不均、單機瓶頸、資源無法動態隔離等問題。
銀行卡支付一直是支付工具中重要的組成部分。銀行卡業務涉及各類金融機構渠道,涉及的機構眾多,各個機構的能力各不相同。如何保障用戶在大促期間的高支付成功率,讓用戶的大促體驗絲般順滑存在極大的挑戰。當銀行卡支付發生異常時,需要盡快做出準確的決策,執行應變操作,以及時減少異常帶來的損失。而傳統的監控報警提供的秒級指標查詢延遲較高,特別是對于決策常用的成功率聯合計算指標,延遲更是超過1分鐘,決策也因此只能做到分鐘級的熔斷能力,同時穩定性也不能滿足大促的SLA要求。

為了解決上述問題,我們基于 Ray 打造了Ray-MPP在線計算系統,具備端到端極低延遲、高可用、具備數據準確性保障(exactly once)等特點。
一方面可以很好的處理在線計算應用中大規模細粒度任務調用的場景,另一方面發揮 Ray 運行時動態擴展的特點,使得系統具備更好的運行時資源動態隔離能力,并在處理任務時具備更強的靈活性。

Ray-MPP 被運用在金融網絡的金融決策鏈路中,為金融決策的指標查詢計算和決策腳本計算提供分布式計算能力。經過實際場景中的檢驗,Ray-MPP 為業務在計算性能、穩定性、研發效能等各方面都帶來了提升。
未來展望
目前,Ray項目發展勢頭良好,并且得到了越來越多的關注。除了螞蟻之外,Uber、Intel、微軟、字節跳動等公司也在積極參與Ray社區。同時,也有越來越多開源項目已經集成進了Ray的生態。
未來,我們將從擴展性、性能、調度、彈性、生態建設等方面繼續提升Ray的能力,把Ray打造成一個穩定、高效、易用、通用的分布式計算底盤,也期待和業界與社區有更多交流探討。
同時,我們也正在面向應屆畢業生招聘2021年實習生,歡迎自薦和推薦。
團隊介紹
我們是螞蟻集團數據技術部,是整個螞蟻集團數據引擎的底盤,為整個集團的各項業務發展保駕護航。我們打造的螞蟻集團計算存儲基礎架構,其技術核心包括金融大數據的開放計算體系,金融級大規模圖計算存儲,金融智能機器學習平臺及系統架構,以及適合金融場景的多模融合計算引擎等方面的研發和攻關。
依托螞蟻集團豐富的數字金融和數字生活場景,我們致力于打造新一代大數據和AI基礎設施。
我們的團隊橫跨美國硅谷和中國北京、上海、杭州和成都。我們追求的工程師文化是開放、簡單、迭代、追求效率、用技術解決問題!
你想要的我們都有!!!
● 平臺好:頂尖的工程師團隊,超大規模數據計算平臺,Stanford、Berkeley等一流高校的合作伙伴, SQLFlow等多個自研和開源項目。
● 成長快:面對不可多見的一流計算場景,挑戰世界級技術難題,主管師兄帶你飛。
● 福利好:提供業內極具競爭力的薪資,各種補貼我們都幫你想到了。
● 活動多:生日會、工程師節日、阿里日、戰役慶功、各種團建……來了你就知道了!
招聘需求
面向對象:2021.11-2022.10期間畢業的應屆畢業生
崗位類型:
● 研發工程師:C/C++, Java, Python, Go
● 算法工程師:機器學習
技術方向:圖計算、分布式計算、分布式存儲、數據庫、人工智能
工作城市:杭州、北京、上海、成都
應聘方式:發簡歷至antcomputing@antgroup.com
需要注明【崗位+編程語言+技術方向】或者找學長學姐幫你內推。
期待大家以最帥/最美的姿勢跑完招聘流程,等待offer降臨!
特別提醒:本網內容轉載自其他媒體,目的在于傳遞更多信息,并不代表本網贊同其觀點。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關內容。本站不承擔此類作品侵權行為的直接責任及連帶責任。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。