从310到蚂蚁森林,蚂蚁金服在线图计算的创新与实践
螞蟻金服過去十五年,重塑支付改變生活,為全球超過十二億人提供服務,這些背后離不開技術的支撐。在 2019 杭州云棲大會上,螞蟻金服將十五年來的技術沉淀,以及面向未來的金融技術創新和參會者分享。我們將其中的優秀演講整理成文并將陸續發布在“螞蟻金服科技”公眾號上,本文為其中一篇。
今年 4 月,螞蟻金服董事長兼 CEO 井賢棟在參與第二屆一帶一路國際合作高峰論壇時表示,通過九年的實踐,螞蟻金服改善了中小企業的融資渠道并形成了 310 模式,即 3 分鐘在線申請、1 秒鐘審核放款、0 人工干預。與此相對的是,僅僅在兩年前,有相關人士表示,他們出臺的 310 模式卻是 3 周申請,1 月審核,0 幾率獲貸。
那么,螞蟻金服是如何通過不斷探索應用金融新技術,為中小企業提供融資便利,其中的 1 秒鐘審核放款,又是如何做到的呢?在這里,我們來談談其中非常關鍵的一項核心技術,在線圖計算技術。
在線圖計算就是將流式計算與圖計算結合起來,能做到進行實時的圖計算的技術。螞蟻金服在這個方向上經過多年研發,在關鍵技術上做出了突破性的創建,并形成了面向金融場景的解決方案。
螞蟻在線圖計算的應用場景
螞蟻研發在線圖計算技術,是因為金融場景需要這樣的技術來解決問題。
比如,在金融風控中的實時反套現場景。套現,指的是采用違法或者虛假的手段交換而獲取現金利益的行為,一般多用于信用卡和公積金等場景。
花唄是一個消費信貸類產品,用戶可以基于花唄的額度消費,并定期還款?;▎h反套現是花唄整體風控中非常關鍵的一個環節,如何實時的、準確的識別套現行為則是花唄反套現的關鍵。
如圖所示,套現的買家通過花唄進行一筆交易的支付,并通過一系列復雜的資金流動,最終通過轉賬回款進行資金的套現。
通過數據建模,將整體的資金流動抽象成資金關系網絡,基于資金關系網絡之上進行子圖的識別和分析,從而有效的識別套現行為。
通過實時反套現的例子,我們可以得到在線圖計算的三個基本需求:
首先,構建金融級的資金網絡?;谠诰€的用戶資金行為,實時構建高可靠的金融級資金網絡;
其次,基于實時子圖的分析決策。基于實時構建的高可靠的金融級資金網絡之上,可以基于子圖進行實時的分析和計算,并最終提供在線的決策;
最后,是動態的子圖網絡構建。在子圖的分析過程中,需要根據用戶的資金網絡行為,動態的進行子圖的構建和擴展。
再說說大家比較熟悉的螞蟻森林場景。
螞蟻森林中有多種形式的好友互動,如支付寶好友之間可以互相收取能量,以及好友、親人之間可以一起合種一棵樹。
在螞蟻森林中有人與人的關系,以及人與樹的關系等。它不僅需要支持實時的關系數據構建,還需要支持高性能低延遲的關系數據查詢和一致性的關系數據修改等需求。
通過螞蟻森林的例子,我們也可以得到在線圖計算其他三個需求。
首先,需要支持百萬級的并發支持。螞蟻森林當前有5億+的用戶,需要支持百萬級的 QPS 的需求并且滿足毫秒級的響應支持;
其次,是萬億級關系數據存儲的需求。由于螞蟻森林的數據規模龐大,包括用戶關系、種樹關系、合種關系等,關系非常多和復雜,因此需要提供萬億級的圖存儲能力。
最后,是一致性的需求。比如在好友之間進行綠色能力的偷取過程中,由于并發量非常大,需要保證實時更新過程中的強一致性的需求。
通過前面實時反套現和螞蟻森林的例子,我們對金融級的在線圖計算的需求做一下簡單的總結。
我們將需求分成兩部分,第一部分是功能需求:
首先,需要提供海量的圖數據存儲的能力;
其次,在海量的圖數據存儲之上提供低延遲 I/O 訪問能力;
最后,通過低延遲的 I/O 獲取子圖關系之后進行流計算和圖計算等多種模態的融合計算。
第二部分是穩定性需求,由于金融場景的特性,所以穩定性顯得尤為重要。這里主要列舉兩點:
首先,需要支持金融級的容災和高可靠性,如三地五中心的故障恢復等。
其次,還需要支持低成本和彈性的擴縮容。
螞蟻在線圖計算整體架構
在介紹完螞蟻金服在線圖計算相關的場景和需求之后,我們來一起了解下螞蟻金服在線圖計算的核心關鍵技術及過程中的思考。
首先,我們來一起看下螞蟻在線圖計算的整體架構圖。
在最上層,螞蟻在線圖計算提供一套統一的圖開發平臺?;诮y一的圖開發平臺,用戶可以基于關系元數據和統一的 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/2019/home?utm_content=g_1000083110
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的从310到蚂蚁森林,蚂蚁金服在线图计算的创新与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴叔同谈云原生和云计算
- 下一篇: 据说这是双11前互联网人的一天~