1. 程式人生 > >胡喜:從 BASIC 到 basic ,螞蟻金服技術要解決兩個基本的計算問題

胡喜:從 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 課程等;同時,課程還會涉及到螞蟻歷史上的重要技術方向決策。另外,我們除了有內部的講師團,還邀請外部的專家、學者進行技術的分享與交流。我們認為,只有整個技術氛圍是開放的才可能真正把技術這件事做到極致。

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


原文連結
本文為雲棲社群原創內容,未經