胡喜:螞蟻金服十五年技術架構演進之路

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

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

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

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

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

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

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

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

但是除了出了問題能夠快速及時恢復,還不夠,我們都是做軟件的,我們知道軟件沒有銀彈,螞蟻的系統天天在變更,螞蟻去年變更數量接近30萬次,未來1—2年之內會增長到一百萬次的變更,也就是說每天接近三千多次的更新,而變更是所有軟件出現問題最大一個點,不變更有可能不會出問題,變更就會出問題。怎麼保證系統在變更之後還能保證之前的高可用和容災能力,這就需要技術風險的自我恢復能力。在這方面,螞蟻內部做了一套技術風險體系叫TRaaS,它在高可用和資金安全風險方法能力的基礎上,可以做到五分鐘發現、五分鐘恢復,這個是基礎。另外一點則是主動的發現故障的能力,因爲有時候出了問題才知道這個地方是問題了,不出問題覺得這個架構是非常完美的。所以,螞蟻通過紅藍對抗,每天都在不斷主動發現故障,這個就是技術風險的防範體系,也叫螞蟻的免疫系統。

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

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

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

這條路還有很長,因爲要做到可信,是從硬件開始到軟件,都是可信的,運行環境是可信的,甚至最後的數據是加密的。你需要對原有的操作系統層面做很多優化,這個優化不僅僅是爲了安全可信,mesh化之後也需要系統層做非常多的優化,而今天的系統層我們看到虛擬化成熟之後在往硬件去沉澱,而在應用層的很多中間件邏輯,在逐漸往系統層沉澱,bypaas kernel是一個趨勢,最終會走向雲原生,這是軟件技術不斷成熟發展的結果,最終會讓讓很多事情做起來非常簡單;但這個背後最關鍵的是技術能力是什麼?是需要對今天的計算機體系架構做一個大的變動。

總結來看,金融級交易支付的理想架構是分佈式中間件,分佈式數據庫、技術風險風控能力,安全可信的容器基礎設施、Service Mesh,保證金融級業務開發非常簡單,業務只需要關注自己的事,其他事交給基礎設施,最終走向金融級雲原生。

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

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

對於螞蟻技術來說,金融級的數據智能怎麼去做? 我們首先回顧一下對於大數據支撐業務發展的基本要求。首先是要解決PB級數據量的計算問題,所以有了MapReduce或RDD的方式, 對於螞蟻來說是用的內部研發的maxcomputer,開源的有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課程等;同時,課程還會涉及到螞蟻歷史上的重要技術方向決策。另外,我們除了有內部的講師團,還邀請外部的專家、學者進行技術的分享與交流。我們認爲,只有整個技術氛圍是開放的纔可能真正把技術這件事做到極致。

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

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

延展閱讀:

獨家!音速神童創始人趙鵬、王旭加入螞蟻金服,劍指Kata Containers

支付寶背後的OceanBase:國產自研分佈式數據庫這十年

重磅!螞蟻金服開源機器學習工具SQLFlow,技術架構獨家解讀


在即將於 5 月 25~28 日舉行的 QCon 廣州 2019,將有更多來自螞蟻金服的專家帶來分享。戳這裏,瞭解更多詳情!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章