從310到螞蟻森林,螞蟻金服在線圖計算的創新與實踐

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

今年 4 月,螞蟻金服董事長兼 CEO 井賢棟在參與第二屆一帶一路國際合做高峯論壇時表示,經過九年的實踐,螞蟻金服改善了中小企業的融資渠道並造成了 310 模式,即 3 分鐘在線申請、1 秒鐘審覈放款、0 人工干預。與此相對的是,僅僅在兩年前,有相關人士表示,他們出臺的 310 模式倒是 3 周申請,1 月審覈,0 概率獲貸。數據庫

那麼,螞蟻金服是如何經過不斷探索應用金融新技術,爲中小企業提供融資便利,其中的 1 秒鐘審覈放款,又是如何作到的呢?在這裏,咱們來談談其中很是關鍵的一項核心技術,在線圖計算技術。編程

在線圖計算就是將流式計算與圖計算結合起來,能作到進行實時的圖計算的技術。螞蟻金服在這個方向上通過多年研發,在關鍵技術上作出了突破性的建立,並造成了面向金融場景的解決方案。緩存

螞蟻在線圖計算的應用場景

螞蟻研發在線圖計算技術,是由於金融場景須要這樣的技術來解決問題。網絡

好比,在金融風控中的實時反套現場景。套現,指的是採用違法或者虛假的手段交換而獲取現金利益的行爲,通常多用於信用卡和公積金等場景。架構

花唄是一個消費信貸類產品,用戶能夠基於花唄的額度消費,並按期還款。花唄反套現是花唄總體風控中很是關鍵的一個環節,如何實時的、準確的識別套現行爲則是花唄反套現的關鍵。併發

如圖所示,套現的買家經過花唄進行一筆交易的支付,並經過一系列複雜的資金流動,最終經過轉帳回款進行資金的套現。負載均衡

經過數據建模,將總體的資金流動抽象成資金關係網絡,基於資金關係網絡之上進行子圖的識別和分析,從而有效的識別套現行爲。運維

經過實時反套現的例子,咱們能夠獲得在線圖計算的三個基本需求:分佈式

首先,構建金融級的資金網絡。基於在線的用戶資金行爲,實時構建高可靠的金融級資金網絡;

其次,基於實時子圖的分析決策。基於實時構建的高可靠的金融級資金網絡之上,能夠基於子圖進行實時的分析和計算,並最終提供在線的決策;

最後,是動態的子圖網絡構建。在子圖的分析過程當中,須要根據用戶的資金網絡行爲,動態的進行子圖的構建和擴展。

再說說你們比較熟悉的螞蟻森林場景。

螞蟻森林中有多種形式的好友互動,如支付寶好友之間能夠互相收取能量,以及好友、親人之間能夠一塊兒合種一棵樹。

在螞蟻森林中有人與人的關係,以及人與樹的關係等。它不只須要支持實時的關係數據構建,還須要支持高性能低延遲的關係數據查詢和一致性的關係數據修改等需求。

經過螞蟻森林的例子,咱們也能夠獲得在線圖計算其餘三個需求。

首先,須要支持百萬級的併發支持。螞蟻森林當前有5億+的用戶,須要支持百萬級的 QPS 的需求而且知足毫秒級的響應支持;

其次,是萬億級關係數據存儲的需求。因爲螞蟻森林的數據規模龐大,包括用戶關係、種樹關係、合種關係等,關係很是多和複雜,所以須要提供萬億級的圖存儲能力。

最後,是一致性的需求。好比在好友之間進行綠色能力的偷取過程當中,因爲併發量很是大,須要保證明時更新過程當中的強一致性的需求。

經過前面實時反套現和螞蟻森林的例子,咱們對金融級的在線圖計算的需求作一下簡單的總結。

咱們將需求分紅兩部分,第一部分是功能需求:

首先,須要提供海量的圖數據存儲的能力;

其次,在海量的圖數據存儲之上提供低延遲 I/O 訪問能力;

最後,經過低延遲的 I/O 獲取子圖關係以後進行流計算和圖計算等多種模態的融合計算。

第二部分是穩定性需求,因爲金融場景的特性,因此穩定性顯得尤其重要。這裏主要列舉兩點:

首先,須要支持金融級的容災和高可靠性,如三地五中心的故障恢復等。

其次,還須要支持低成本和彈性的擴縮容。

螞蟻在線圖計算總體架構

在介紹完螞蟻金服在線圖計算相關的場景和需求以後,咱們來一塊兒瞭解下螞蟻金服在線圖計算的核心關鍵技術及過程當中的思考。

首先,咱們來一塊兒看下螞蟻在線圖計算的總體架構圖。

在最上層,螞蟻在線圖計算提供一套統一的圖開發平臺。基於統一的圖開發平臺,用戶能夠基於關係元數據和統一的 DSL 進行做業的開發。目前統一的 DSL 主要經過 SQL 和 Gremlin 融合的方式進行編程開發。同時基於用戶的 DSL,會實時的構建分佈式的 DAG 進行運行。

構建完成後,分佈式的任務會實時的對線上的日誌數據和事件數據進行實時的處理。這裏主要包含兩條鏈路,一條鏈路會基於實時處理完成的日誌數據和事件行爲會寫入到高性能的圖數據庫,並基於數據實時的構建高性能的圖緩存,提供快速高效的子圖抽取。

另一條鏈路則會基於實時處理的數據,來動態的決策是否須要一個圖的 Traversal 和計算,並在計算的過程當中,從高性能緩存快速的抽取子圖進行計算,最後將計算的結果輸出提供在線使用。

經過前面的架構圖,能夠看到,螞蟻的金融級在線圖計算主要有三個技術方向:

首先,是流圖融合的計算能力。須要在一套系統中,支持融合的計算能力,可以經過流計算和圖計算的融合來實如今線圖計算的全鏈路;

其次,是高壓縮比圖緩存。經過高壓縮來實現圖數據能夠完整的存在在內存中,從而實現快速、高效的子圖抽取;

最後,是金融級的海量圖數據庫。經過金融級的海量圖數據庫來實現海量的關係數據存儲和金融場景下的高可靠。

下面,咱們來分佈分佈介紹一下這三個方向的核心技術點。

在線圖計算之流圖融合計算

第一個關鍵技術是:流圖融合計算。

以花唄反套現的場景爲例,並非每一筆交易或回款行爲都須要進行套現行爲的識別,須要先進行必定的規則的處理。好比,基於實時的統計交易的筆數或者回款的金額,在知足必定的條件後纔開始進行子圖的迭代計算。最後,基於圖的迭代計算的結果,在進行數據鏈路的處理後再提供給在線使用。所以,一個場景在完整的計算鏈路中,須要流計算和圖計算兩種模態的融合計算。

在傳統的計算方式中,則會經過流計算和圖計算進行組合的方式來實現全鏈路,好比經過 Flink、GraphX、Neo4j 等多個系統進行串聯。 可是經過傳統的方案,用戶須要學習多套系統,而且須要維護多套系統進行銜接。並且因爲多套系統銜接,所以會產生額外的數據存儲和延遲。所以,在螞蟻金服,咱們打破計算模態的邊界,將流計算和圖計算進行融合,提供流圖融合的計算系統。用戶能夠經過一套 API、一套計算系統來實現完成流圖融合的鏈路,因爲是一套系統,同時能減小用戶的運維成本。

動態DAG

一樣以花唄反套現場景爲例,在實現了流圖融合的計算能力以後,因爲是否進行圖計算,以及採用什麼樣的圖計算算法都是由數據進行動態決策,沒法預先設定。所以,傳統的靜態 DAG 沒法知足當前的需求,這裏,咱們經過將數據流和控制流相結合,並提供動態 DAG 的能力,從而實現按需計算,彈性的擴縮容。

在提供了融合計算和動態計算的能力以後,如何讓用戶進行快速便捷的開發顯得尤其重要。

這裏咱們經過 SQL Plus(Gremlin)的方式進行融合計算的開發,用戶能夠經過 SQL 來構建總體的 Pipeline 的流程,同時,引入 GraphView 的概念,基於 SQL 能夠離線和實時的構建 Graph View。基於 GraphView 之上,能夠經過 SQL+Gremlin 實現基於數據驅動的在線圖計算能力。

同時,因爲 SQL 大部分開發者都比較熟悉,能夠減低用戶的學習、開發、調試的門檻,易學易用。目前螞蟻金服也在關注最新的圖查詢語言國際標準 GQL,將來也會融入於此。

基於以上三個特性,用戶能夠快速的構建流圖的一體化做業。

接着,用戶在上線一個算法策略的同時,則須要對策略進行驗證,這裏用戶須要針對流式的數據進行有效的仿真,來斷定當前的算法是否有效。

基於當前的在線圖計算架構,咱們能夠經過模型的有效抽象,將歷史的圖數據和請求進行有效的回放來實現仿真和在線的一體化架構能力。

與此同時,因爲仿真的特性,會對歷史版本的數據快照進行訪問,從而會引發圖數據存儲的加速膨脹。 因爲這裏採用流式回放的方式進行仿真,咱們能夠經過基於驅動的數據 GC 策略,從而避免數據的過量膨脹。 同時,基於多級緩存的策略,從而實現提高圖仿真的吞吐能力。

以上就是融合計算方向的四個關鍵技術,經過以上的四個特性,用戶能夠高效、方便的進行任務的構建和計算。

接下來,會討論如何快速的進行子圖構建。

在線圖計算之高性能圖緩存

這裏重點介紹一下螞蟻的高性能圖緩存,基於完美 Hash 函數和專業的壓縮能力,將數據緩存在內存中進行在線服務,從而實現子圖場景下的低延遲和高吞吐。

針對高性能的圖緩存,內存的佔用顯得尤其重要。這裏重點看下螞蟻圖緩存和業界系統的壓縮比對比圖。這裏採用的是基於 Twitter 的 User-Follow 的開放數據集。

能夠看到,因爲圖的關聯特性,因此業界開源的系統在原始圖的基礎上,都有必定程度的放大,而業界作得比較好的 TigerGraph 作到了相對於原始大小的 40% 左右的內存使用。而螞蟻的圖緩存能夠實現 20% 的原始內存大小。比目前業界最佳,還要節省一半的內存使用。

經過高壓縮比,咱們將圖數據完整的存放在內存中,下面咱們能夠對比一會兒圖抽取的 RT 性能。

一樣是基於 Twitter 的 UserFollow 的數據,能夠看到在 1 度、2 度、3 度的場景下,特別是 1 度的場景,總體的時間延遲僅是 Tiger Graph 的 20% 左右。

經過高性能圖緩存,針對子圖的高性能查詢,才能實如今線的實時鏈路計算。

在線圖計算之金融級圖數據庫GeaBase

下面咱們來看下,如何實現金融場景下的高可靠和一致性的能力需求,這裏重點介紹下螞蟻的金融級圖數據庫 GeaBase。

GeaBase 內部經過實現 Mirco Shards 的方式來實現數據分片。並基於 Mirco Shard 的數據分片實現 Cost-Base 的數據遷移和自動的負載均衡。同時,藉助於螞蟻的基礎架構體系,實現了三地五中心的城市級容災策略。

經過對比,咱們能夠看到,在單機、單副本和機房級故障時,GeaBase 的災備能力均優於 HBase。與此同時,在城市級容災的場景下,GeaBase 能夠實現數據的恢復和不丟失。

與此同時,GeaBase 還實現了一致性的能力,來知足金融場景的數據強一致性的需求。GeaBase 經過實現 Raft 協議來實現數據的一致性。而且可讓業務根據自身業務需求自由選擇,是最終一致性仍是強一致性。

螞蟻的在線圖計算目前普遍應用於螞蟻的多條業務線,支持了風控、社交和營銷等 100 多個業務場景。當前在螞蟻內部有 2000 多臺機器的集羣規模 7*24 小時運行。

與此同時,螞蟻逐漸把這些能力輸出給外部金融級客戶,如常熟農商銀行和泰隆銀行。好比在常熟農商銀行,螞蟻金服與行方聯合共研了蟻燕知識圖譜項目,基於螞蟻研發的在線圖計算技術,在大數據量環境下,經過海量關聯分析,提早進行擔保關係預判,實現擔保圈風險的秒級預判和風險提醒,有效管控風險的同時,切實提升了信貸審批效率。螞蟻金服不只本身實現了 310,還經過合做輸出給客戶,爲實現普惠金融而努力。

將來,螞蟻金服會繼續打磨在線圖計算的技術能力,並向更多的合做夥伴開放,一塊兒將在線圖計算推廣到更多的場景中去。

阿里雲雙11億元補貼提早領,進入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2...


本文做者:繆克盧漢

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索