胡喜:從 BASIC 到 basic ,螞蟻金服技術要解決兩個基本的計算問題

導讀:5 月 6 日,螞蟻金服副 CTO 胡喜在 2019 年 QCon 上做了《螞蟻金服十五年技術架構演進之路》的演講。藉此機會,也和大家深入討論了一下螞蟻金服對金融科技未來的判斷,並首次對外曝光了螞蟻金服技術人才培訓體系以及 BASIC College 項目。

主要觀點

1. 螞蟻金服過去十五年,通過技術重塑了支付和微貸業務。Blockchain (區塊鏈)、ArtificialIntelligence(人工智能)、Security(安全)、 IoT(物聯網)和 Cloud computing(雲計算),這五大 BASIC 技術仍會是金融科技的基石。BASIC 裡最基礎的能力是計算能力,只有不斷提升計算能力,才能適應未來應用場景的千變萬化。

2. 金融交易技術的核心是金融分佈式中間件,關鍵是分佈式數據庫的能力。對數據不丟失,業務不停機是金融級高可用的極致追求,同時,更要具備主動發現風險和自我恢復的能力。

3. 金融級分佈式系統,最終將走向雲原生化。現有的中間件能力將通過 service mesh 形式下沉至基礎設施。安全可信的執行環境是金融級系統的底線,安全容器將成為金融行業的強需求。

4. 金融級數據智能未來的趨勢是 Big Data Base,我們需要開放式的計算架構,從統一存儲規範,可插拔的引擎組件,融合計算引擎,到統一的智能 SQL,數據處理與人工智能系統將會進一步融合,最終形成開放智能計算架構的最佳實踐。

5. 多樣化的計算,如流、圖、機器學習經常並存於業務場景中,螞蟻金服聯合 Berkeley 大學推進的新一代計算引擎 Ray,著力於打造一個多模,融合的金融級計算引擎,幫助業務以簡單的函數式編程實現多樣化的分佈式計算功能。

6. 螞蟻金服最新開源的 SQLFlow,抽象出端到端從數據到模型的研發過程,配合底層的引擎及自動優化,我們希望讓人工智能應用像 SQL 一樣簡單。

以下是螞蟻金服副CTO胡喜的分享內容全文

螞蟻金服過去十五年,通過技術重塑了支付服務小微貸款服務。我們認為 Blockchain (區塊鏈)、Artificial intelligence(人工智能)、Security(安全)、 IoT(物聯網)和 Cloud computing(雲計算),這五大 BASIC 技術仍會是金融科創新發展的基石。

但是,在 BASIC 技術中最基礎的能力是計算能力,只有不斷提升計算能力,才能適應未來應用場景的千變萬化。對螞蟻來說,要解決兩個最關鍵的計算問題,一個是在線交易支付的問題,另外就是解決金融級數據智能的問題,狹義來講就是 OLTP 和 OLAP 的問題。

金融級雲原生,讓交易支付更簡單

講到金融在線交易,肯定要講到“雙十一”。因為“雙十一”是整個中國 IT 屆技術驅動力的盛世,螞蟻在“雙十一”的發展過程當中,可以看到金融支付幾乎每年都是三倍的增長,到今天,整個系統具備百萬級每秒的伸縮支付能力。

背後到底怎麼做的?有些技術能力就跟跳水項目的規定動作一樣,一定要具備這些能力。比如怎麼做分佈式、微服務,消息隊列的問題。具體到螞蟻,更重要的是解決分佈式事務的問題,怎麼做高可用,怎麼做一致性,數據不能有任何丟失,不能有任何偏差,到最後怎麼能夠完成金融級的分佈式中間件,到現在為止,我們可以看到一點,在高可用,一致性方面我們已經做到在任何情況下的數據最終一致,保證每一筆支付扣款的資金安全。並且我們去年對整體內部的中間件進行了開源,SOFAStack 是我們這麼多年沉澱在金融級的最佳實踐,我們期待這些實踐能夠幫助到更多人,從最近開源的數據來看,有 23000 的 Star,100 多個同學來參與貢獻,歡迎大家更多地去試用。

剛剛講中間件是能夠在跟數據庫無關前提的情況下,能夠把整個金融交易做好,這是我們基本的要求,但金融交易技術中最關鍵的是分佈式數據庫能力。2009 年,螞蟻啟動自主研發數據庫 OceanBase,這是一個非常偏向於高可用,一致性分佈式的數據庫,通過 Paxos 算法解決內部一致性的問題,到今天為止,螞蟻整個數據庫全部跑在 OceanBase 之上。

我常常會說什麼才是核心技術?有些人說,核心技術只要投入人就可以做好,其實不是這麼回事,核心技術不僅僅是有人有資源,還需要時間的積累,是需要天時地利人和,還需要公司、整個業務的支持,才能發展到今天,做技術還是需要一點技術情懷,螞蟻就是一直這樣堅持下去,十年左右的時間堅持開發自己的數據庫,從零開始寫第一行代碼,到現在為止,OceanBase 數據庫集群最大處理峰值是 4200 萬次 / 秒,單集群最大的節點超過 1000 臺,最大存儲容量超過 2PB,單表最大的行數是超過 3200 億行,並且在少數副本故障的情況下,能夠做到 RPO=0,RTO<30 秒,這個是我們對於數據庫層面上所做一些努力。

此外,對於金融級系統來說,怎麼保證數據不丟失,業務不停機。所以螞蟻做了三地五中心多活的架構,在去年 9 月的杭州雲棲大會上,我們現場用剪刀,把杭州機房的一臺正在運行的服務器的網線剪斷,整個業務沒有受到任何影響,完全恢復的時間是 25 秒。

但是除了出了問題能夠快速及時恢復,還不夠,我們都是做軟件的,我們知道軟件沒有銀彈,螞蟻的系統天天在變更,螞蟻去年變更數量接近 30 萬次,未來 1—2 年之內會增長到一百萬次的變更,也就是說每天接近三千多次的更新,而變更是所有軟件出現問題最大一個點,不變更有可能不會出問題,變更就會出問題。怎麼保證系統在變更之後還能保證之前的高可用和容災能力,這就需要技術風險的自我恢復能力。

在這方面,螞蟻內部做了一套技術風險體系叫 TRaaS,它在高可用和資金安全風險方法能力的基礎上,可以做到五分鐘發現、五分鐘恢復,這個是基礎。另外一點則是主動的發現故障的能力,因為有時候出了問題才知道這個地方是問題了,不出問題覺得這個架構是非常完美的。所以,螞蟻通過紅藍對抗,每天都在不斷主動發現故障,這個就是技術風險的防範體系,也叫螞蟻的免疫系統。

即便總是問自己現在的系統架構是否是一個完美的架構,我們發現還有很多地方沒有做好,因為從應用研發的角度來看,它們還是需要考慮太多的東西,比如容災,一致性,sharding 很多金融級要考慮的問題,我們期望於業務不需要考慮金融級能力相關的事情,就可以享受到金融級應用相關的能力。所以從去年開始,螞蟻開始把相應的系統做 Mesh 化改造,之所以今天我們能提 Mesh 的概念,是因為為我們之前做了很多前置的準備,分佈式中間件、數據庫、容災,技術風險等等,只有這些準備好以後,才能通過 Mesh 化把金融級的能力沉澱到基礎設施,這樣業務才能更簡單。

未來,金融級分佈式系統,最終將走向雲原生化,現有的中間件能力將通過 Service Mesh 形式下沉至基礎設施,安全可信的執行環境是金融級系統的底線,安全容器將成為金融行業的強需求。

從這個判斷出發,螞蟻組建了專門的安全容器技術團隊,並且邀請了 Kata 安全容器技術創始人等一些頂級貢獻者加入螞蟻,一起來打造面向下一代的金融級安全容器技術。現在,託管於 OpenStack 基金會的 Kata Containers 項目,已經成為 OpenStack 基金會旗下的首個頂級開源基礎設施項目項目。螞蟻會持續關注並積極參與最前沿的安全容器技術,會先在內部場景驗證這個技術,然後開放出來更好地服務整個社區。接下來,開發者可以享受到阿里集團、螞蟻金服對 Kata 技術的改進和貢獻,並將各項改進和優化貢獻給 Kata 社區。

在這條金融級雲原生的演進之路上,會發生端到端的變革。在可信計算方面,要從硬件到軟件,都是可信的,不僅運行環境是可信的,數據也需要是加密的,這就需要對原有的操作系統做很多優化;另一方面,Mesh化也需要系統層做很多的優化。今天我們在系統層方面看到,很多系統層面的技術成熟後都在向硬件沉澱,而在應用層的很多中間件邏輯,也在逐漸向系統層沉澱,而很多系統級的工作又有通過bypass kernel來提高特定場景下的性能的趨勢,這些軟件技術不斷髮展的結果,最終支持著高效可信的金融級雲原生架構,讓應用層的事情做起來前所未有的簡單。但在這簡單的背後,醞釀的是對今天的計算體系架構的重大的變動。

總結來看,交易支付的理想架構這包括分佈式中間件、分佈式數據庫、技術風險防控體系、安全可信的容器基礎設施、以及Service Mesh。以此來保證金融業務開發非常簡單,業務只需要關注自己的事情,其他都交給金融級雲原生基礎設施來完成。

金融級數據智能架構的最佳實踐是開放智能計算架構

解決了 OLTP 的問題,我們在數字金融發展過程中還有一個非常大的問題要解決,那就是數據智能問題,背後是數據計算和 AI 的問題。

對於螞蟻技術來說,金融級的數據智能怎麼去做?我們首先回顧一下對於大數據支撐業務發展的基本要求。首先是要解決 PB 級數據量的計算問題,所以有了 MapReduce 或 RDD 的方式,對於螞蟻來說是用的內部研發的 MaxCompute,開源的有 Hadoop、Spark 這樣的技術;同時我們也對數據計算時效性開始有需求,開始需要 Streaming 計算,相應的技術有 Flink,Storm 等技術,我相信很多公司用這樣的技術解決類似的問題;對於金融業務來看對圖計算的需求是基本需求,比如怎麼解決反套現的關係網絡問題,怎麼解決內部知識圖譜的問題等等,這些都需要通過圖計算來解決,螞蟻內部一直在使用自研的 GeaBase 來解決圖計算的問題,同時在 Graph 領域開源的技術也有很多,像 Neo4j 或 TigerGraph 等產品。最後業務還有交互式快速查詢的需求,就有了 OLAP/MPP 技術,今天這個架構非常多,我們內部用自研的 ADS 和 Explorer 來解決問題,開源的有 Impala、Drill、Presto 這樣的產品;不同的計算需求還有很多,這裡就不一一列舉,但是我相信大家都在用自己的方式去解決大數據計算的問題。

但是計算的多樣性滿足了業務需求,也帶來了一些的問題。比如,不同計算類型都有不同的研發框架和語言類型,帶來的研發效率問題;多種計算類型帶來多樣存儲需求,往往需要額外的存儲,帶來成本問題;金融需要不同的容災和數據治理的要求,帶來架構落地複雜度問題。

所以我們希望的計算架構是開放的。依靠一套引擎打天下是完全不可能的,必須要更為開放的技術架構。

首先,要有一個統一的存儲層,在這層去統一存儲的規範和標準,建立統一的虛擬表機制,屏蔽底層的存儲的多樣性,保證可以支持各種計算的需求;其次,對於計算引擎層,我們需要能夠支持多種計算引擎,並且讓這些引擎做到可插拔,並且通過 SPI 方式,實現元數據接入,容災,安全合規的標準化問題。再者,期望有一套標準化的 SQL 層,因為 SQL 是現在所有引擎的接口標準,我們也期望提供一個統一的數據訪問層來解決研發界面統一的問題,而且是希望數據科學家,運營人員也能夠使用。最後,是提供一個一站式數據智能研發平臺,來解決數據應用的高效研發和規範問題。這個事情我們做了兩年,去年已經驗證了這個事情已經在多個場景進行落地,大大降低了研發成本,結合資產的治理,以前需要上萬行代碼的數據應用,現在只需要上百行代碼就可以解決了。

開放計算架構解決了計算的複雜度,研發效率,成本的問題,但還不夠。每個場景都會有自己的特點,需要特性化的計算引擎。舉一個花唄反套現的例子,這是一個很簡單、很正常金融的問題,而背後需要做什麼事情?因為要做實時反套現,是要做特徵實時計算的,而特徵計算的時候發現可疑賬號,要往下看與這個賬號有關係的賬號資金處理情況,這個時候又要用到圖計算的能力。對於計算的實現,大家可能會想到我首先要用到實時計算,然後如果需要圖計算再轉移到圖計算引擎;但是這種計算的遷移轉換會帶來延時性問題,不能在秒級解決問題,而且切換的成本代價比較大,所以針對這種類似的場景我們設計了融合計算這樣的框架。

這個框架是一個通用計算框架,底層採用的是一種動態圖的元計算架構,在這個元計算架構上你既可實現 Streaming,也可以很高效地實現圖計算,甚至機器學習也可以做,花唄反套現的圖計算是需要實時更新的,所以基於動態圖的元計算引擎可以很好支持這種場景。為了更好地解決多樣化的計算,如流,圖,機器學習經常並存於業務場景中這個問題,螞蟻金服聯合 UC Berkeley 大學推進的新一代計算引擎 Ray,著力於打造一個多模,融合的金融級計算引擎,幫助業務以簡單的函數式編程實現多樣化的分佈式計算功能。在這樣的融合計算架構下,可以秒級地完成在百億級大圖上下鑽到接近 10 度鄰居,遠遠超出普通的流式計算或者圖計算引擎,擴展了業務的能力邊界。

而融合計算也是開放計算架構中的一種引擎,我們可以通過智能 SQL 網關進行引擎層的動態適配。

當然我們對於 AI 來看,也可把很多機器學習框架,TensorFlow 等融合進來,而為了簡化機器學習的研發,我們對智能 SQL 層進行了擴展,這個就是 SQLFlow,一種面向 AI 研發的簡單的語言。

今天,機器學習工具 SQLFlow 已經正式開源。SQLFlow 抽象出端到端從數據到模型的研發過程,配合底層的引擎及自動優化,螞蟻希望讓人工智能應用像 SQL 一樣簡單。

金融級數據智能未來的趨勢是 Big Data Base,我們需要開放式的計算架構,從統一存儲規範,可插拔的引擎組件,融合計算引擎,到統一的智能 SQL,數據處理與人工智能系統將會進一步融合,最終形成開放智能計算架構的最佳實踐。

BASIC College —— 螞蟻金服人才培養機制

2009 年,UC Berkeley 大學發表了一篇論文,開啟了雲計算新的浪潮。事實上,這些年很多雲計算相關的業務,技術都是對那篇論文的最佳實踐。最近,UC Berkeley 發了這個系列另外一篇,關於雲計算下一步未來的發展是什麼,今天講的金融級雲原生,雲原生架構都是其中的內容。而背後所有的事情則是計算機體系架構在未來的幾年會有比較重大的變化。

今天為什麼講這個事情?因為在計算機體系架構進化中,人才是促使進化的關鍵點。

有一個事情對我有很大觸動。我聽別人說:Google 為了做好 TPU 的性能優化,從全公司能夠緊急調集幾十個做編譯器的人才,而且這個還不是全部編譯器人才,聽說只是挑選了一些。今天,國內到底哪家公司能夠拿出幾十個這樣的人才?我相信是很少的。而今天中國整個軟件業的發展,一定是非常需要計算機體系架構方面的人才,尤其是編譯器,操作系統,硬件方面的人才,軟件領域每一次重大變化都會帶來一次重構和抽象,這個都會需要具備這樣素質的人才。

所以我覺得人才是非常非常關鍵的,只有找到這些人才,才能把這些事情好,才能做一些大的變化,才能對未來的不確定性做一些準備。在螞蟻金服內部有著一個叫“BASIC College”的技術培養體系,BASIC 一方面對應著 Blockchain (區塊鏈)、Artificial Intelligence(人工智能)、Security(安全)、 IoT(物聯網)和 Cloud Computing(雲計算)五大領域,另一方面代表我們始終專注於金融科技的本質——計算機基礎技術能力的提升。因此,螞蟻金服的“BASIC College”主要圍繞熱門或前沿的領域,做有針對性的培訓,比如 AI 課程等;同時,課程還會涉及到螞蟻歷史上的重要技術方向決策。另外,我們除了有內部的講師團,還邀請外部的專家、學者進行技術的分享與交流。我們認為,只有整個技術氛圍是開放的才可能真正把技術這件事做到極致。

螞蟻金服擁有非常大的場景,每個技術人都有足夠的空間在這個平臺上施展自己的抱負。我所講到的所有技術都是背後這張圖裡面的這群人做的,他們開發了數據庫,研發了風控系統,設計了計算架構,包括融合計算等等很多東西。其實我是這群人裡面技術最弱的。

最後做一個廣告,歡迎大家加入螞蟻,謝謝!

敲黑板

老闆發話了,招人

那麼,加入螞蟻金服就差最後一步了!

感興趣的朋友們,請把簡歷發到:wb-wyf424932@antfin.com

郵件標題最好是Qcon+名字+期望工作的城市哦~