開放計算架構:螞蟻金服是如何用一套架構容納全部計算的?

螞蟻金服在過去十五年重塑支付改變生活,爲全球超過十二億人提供服務,這些背後離不開技術的支撐。在 2019 杭州雲棲大會上,螞蟻金服將十五年來的技術沉澱,以及面向將來的金融技術創新和參會者分享。咱們將其中的優秀演講整理成文並將陸續發佈在「 螞蟻金服科技」公衆號上,本文爲其中一篇。

十幾年來,螞蟻金服一直在解決用技術重塑金融服務的問題,在解決這個問題的過程當中涉及到兩個方向的技術領域,第一就是解決怎麼把錢從一個賬戶移到另外一個賬戶,這個過程當中出現海量、安全、可用性問題怎麼解決,咱們的答案就是多地容災、高可用的分佈式架構;第二,新的數字金融時代到來,如何更多更好的利用數據驅動業務發展,也就是數據智能技術。本文將會分享螞蟻在數據智能方面的一些進展,以及咱們的思考。算法

首先,咱們看一下金融數據智能有哪些需求,和傳統的大數據有什麼不同的地方:sql

  • 實時性要求高,實時數據以兩倍以上的速度增加,在線決策愈來愈多,再也不是把數據離線作決策再部署到線上;
  • 計算場景複雜多樣,之前多是一個簡單的聚合,逐漸進化到用規則作決策,基於圖、基於機器學習等決策,整個計算的形式愈來愈多樣化;
  • 數據鏈路長,研發調試效率低,當你要作全鏈路數據研發的時候,從頭至尾會經歷十幾個系統,對總體的數據研發提出了很大的挑戰;
  • 計算及存儲高可用,包括跨城市的容災,高可靠的計算服務;
  • 數據安全、監管合規、風險防控,須要作嚴格的數據安全和隱私保護,特別在監管層面要合規。

過去十幾年,計算技術不斷演進,從大規模數據倉庫批計算,到實時計算和流計算,再到交互式分析,一方面能解決一部分問題,另外一方面給咱們帶來了新的挑戰。好比,多種計算模式帶來屢次研發的效率問題,多套系統帶來多樣存儲需求的成本問題,以及不一樣容災和數據安全要求帶來的複雜度問題等。數據庫

爲了解決計算多樣性帶來的問題,咱們須要一個更爲開放的計算架構。編程

螞蟻金服開放計算架構

作一套系統解決一切問題是技術人員很天然的想法,但難點是怎麼定義這個系統的邊界。咱們認爲,計算和業務自己是緊密鏈接的,業務的需求變化頗有可能須要探索愈來愈多的計算模式。因此咱們的實踐是這樣的開放計算架構,它在不一樣層面上作了統一,以兼容不一樣的計算模式。緩存

首先是統一存儲層,將各個存儲系統打通進行數據共享,這樣一來就能夠根據計算需求作定製化的優化,內部數據自動迴流。安全

第二是統一數據安全規範,在統一存儲上實現統一元數據管理及接入,而且數據血緣互通,統一鑑權及數據訪問權限體系,統一數據安全等級和隱私保護體系。網絡

第三是統一編程模型,基於標準SQL和擴展,作業務研發的時候面對的是下層抽象出來的數據,真正作面向數據的編程,不須要關注用交互式分析仍是其它計算模式,也不須要關注數據是如何存儲的。這樣作數據研發以及寫業務邏輯的時候能夠提高效率。這方面咱們作了不少的探索,目標就是當你在作SQL研發的時候能夠下降兩個數量級,原來可能要寫幾萬行代碼,如今只寫幾百行。數據結構

通過這些統一咱們造成了如上的架構,這個架構能夠根據新的技術進一步擴展。架構

開放計算架構下的AI引擎

AI計算是開放架構下重要的能力,咱們須要打造更加靈活智能的AI引擎。框架

目前絕大多數公司的人工智能系統,會遵循這樣一個架構:有一個數據倉庫或集羣進行數據清洗和預處理,而後取出一個表,和數據標註一塊兒在一個模型平臺上進行訓練,訓練出來的模型最後再部署到線上去進行預測。這整個流程通過了多個系統,因此這個數據事實上可能會有多份存儲,加上模型的傳輸也會花費比較多的時間,你很難作到真正的實時性,這裏面用戶也每每須要研發多個平臺和組件才能知足需求。

開放架構下能夠插入AI引擎,咱們在SQL層和深度學習引擎都作了一些工做。SQLFLow至關於用SQL描述你對應用的需求,底層會直接針對SQL產生出機器學習的任務來訓練模型。

ElasticDL咱們剛剛在9月11日宣佈開源,它是基於TensorFlow的一個彈性調度的AI引擎。當你資源緊張或者發生錯誤時,仍然能夠進行高效的AI訓練。同時它讓AI的訓練變得更加簡單,能夠在命令行直接訓練Keras模型。經過這些工具,咱們但願讓AI的訓練和整個使用過程更加的簡潔。

關於SQLFlow和ElasticDL想了解更多能夠能夠查看他們的開源主頁 sqlflow.org 和 elasticdl.org

在開放性的架構下,事實上也不須要作引擎的改變,通常的模式是,當有一個新的引擎或工具能夠直接拿過來使用,使用完了以爲須要優化,就在上面迭代提高。

開放計算架構下的金融級圖計算

在金融領域裏,金融場景大量依賴於圖數據,咱們須要強大的圖計算能力,那麼開放計算架構如何支持圖計算呢?

上圖是螞蟻整個圖計算髮展的歷程,四年之前咱們從作圖數據產品開始,到作離線全圖的迭代計算引擎,而後作流圖融合的引擎,而後是高速的圖緩存,以及到如今把圖相關的全部東西聚合起來,作成一站式的圖平臺。

首先第一個是金融級分佈式圖數據庫GeaBase,解決的問題是,當你有海量的圖數據,數據之間有關係的時候,提供強一致、高容量的存儲。它和現有的一些圖數據庫最大的區別是,不少現有的圖數據庫都是把全部數據收起來作一個計算,這是最簡單的作法,但會致使性能瓶頸,咱們作的是把計算下發到worker以實現分佈式的高性能。同時GeaBase能夠根據用戶的業務需求去選擇須要什麼樣的一致性。

而後是大規模全圖計算,採用了自適應的分區策略來下降資源門檻,由於不少圖計算裏面都是須要把全圖加載到內存裏面,而後進行迭代,這種狀況一些超大圖對內存的需求量很是高,因此咱們作了一些優化但願下降資源的使用率。同時咱們也可以更靈活的支持更多的圖算法,以及可以作很是大規模高效圖關係的挖掘,這個也已經在內部的風控場景落地。

而後還有在線流圖融合,螞蟻研發了業界首個實時多模融合計算框架。原由是咱們發現,在業務中有不少時候有數據進來,同時要進行不少的圖計算,計算完結果之後再輸出,這在業界也是比較前沿的探索課題,咱們作到了在海量大圖上同時可以作不少層的計算。

基於對圖計算的強烈需求,咱們作了一個高性能的圖緩存,裏面的關鍵技術是基於無衝突的Hash函數,以及對於圖數據結構的壓縮。你們能夠看下圖中的效果,咱們最高能夠壓縮到原始數據的五分之一,性能爲業界優秀同類產品的2-5倍。

當有了這麼多系統後,咱們遇到的問題是,在一個場景下須要針對多個引擎作研發,因此咱們開發了一站式平臺AntGraph,爲從開發調試到生產上線整個流程提供便利。咱們把全部的訪問統一到一個Graph SQL下面,關於這個咱們也在進行一些額外的探索,由於到底SQL是否是最適合於Graph語言是有爭議的,但咱們能夠用SQL部分描述性的功能再加上一些擴展,能夠完成咱們想要的功能。

通過前面針對圖計算能力的研發後,咱們擁有多個圖計算引擎,同時爲了優化客戶體驗,在上層也用SQL語言進行統一。這樣咱們的開放計算架構就擁有了強大的圖計算能力。

開放計算架構下的融合計算

通過前面的研發,開放計算架構裏有了大量的計算引擎,雖然在上層進行了統一,但這種狀況每每不是最優的選擇。當咱們對已有的計算模式已經有把握,瞭解的比較清楚的時候,有沒有可能對它們進行更多的優化?不少狀況下用戶須要的是要多種模式融合起來的計算,有時候須要流加上圖,有時候須要流加機器學習加其餘的東西,咱們給出的答案就是融合計算引擎。

融合計算在底層基於Ray,Ray是螞蟻金服聯合 UC Berkeley 大學推動的新一代計算引擎,融合計算經過一套引擎解決複雜場景問題,經過動態計算及狀態共享提升效率,實現研發、運行時、容災一體化。

融合計算已經在螞蟻若干場景中落地,包括:

  • 動態圖推導,流+圖計算,性能上能夠1秒內完成6層迭代查詢,用於實時反套現、欺詐識別;
  • 金融在線決策,流+分佈式查詢+在線服務,性能上數據生產到分佈式查詢一秒內,用於金融網絡監控、機構渠道路由等;
  • 在線機器學習,流+分佈式機器學習,性能上實現秒級數據樣本到模型更新,用於智能營銷、實時推薦、流控等。

融合計算並不會取代其它的引擎,而是做爲補充,用於部分合適的場景。經過上面的分享能夠看到,這套架構能夠容納各類不一樣種類和做用的計算引擎,這也是開放二字的意義,若是將來有一個新的引擎,或者業務對數據有新的需求,徹底能夠插入本身的引擎直接使用。

最後總結一下螞蟻金服對數據智能將來的總體願景,咱們但願將來的存儲是能夠打通的,全部的引擎是能夠插拔、融合的,上層但願有標準的數據訪問模式,全部的這一套組合在一塊兒,咱們把它叫作Big Data Base。咱們認爲,大數據通過過去十多年的發展,必定會進化到下一個階段,對數據的增刪改查會像數據庫同樣簡單。

另一個層面,Big Data Base還意味着能夠在一個體系中很方便的使用包含機器學習、圖計算以及將來各類各樣的計算引擎。這套開放計算架構中的不少組件咱們已經開源,這個大的體系咱們還在研發過程當中,將來會和你們分享更多的細節,但願你們可以一塊兒參與進來,把金融的數據智能領域推到下一個階段。


OceanBase 登頂TPC-C測試榜,實現中國數據庫零的突破,想要了解背後的技術細節?歡迎下載電子書《OceanBase TPC-C測試技術解析》,長按識別如下二維碼,關注「螞蟻金服科技」官方公衆號,並在對話框內回覆「TPCC」,便可免費下載。

相關文章
相關標籤/搜索