阿里妹導讀:近日,螞蟻金服副CTO 胡喜應邀作了《螞蟻金服十五年技術架構演進之路》的演講,分享螞蟻金服對金融科技將來的判斷,並首次對外公開螞蟻金服技術人才培訓體系以及 BASIC College 項目。
螞蟻金服過去十五年,經過技術重塑了支付服務小微貸款服務。咱們認爲 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,數據處理與人工智能系統將會進一步融合,最終造成開放智能計算架構的最佳實踐。
2009 年,UC Berkeley 大學發表了一篇論文,開啓了雲計算新的浪潮。事實上,這些年不少雲計算相關的業務,技術都是對那篇論文的最佳實踐。最近,UC Berkeley 發了這個系列另一篇,關於雲計算下一步將來的發展是什麼,今天講的金融級雲原生,雲原生架構都是其中的內容。而背後全部的事情則是計算機體系架構在將來的幾年會有比較重大的變化。
今天爲何講這個事情?由於在計算機體系架構進化中,人才是促使進化的關鍵點。
有一個事情對我有很大觸動。我聽別人說:Google 爲了作好 TPU 的性能優化,從全公司可以緊急調集幾十個作編譯器的人才,並且這個還不是所有編譯器人才,據說只是挑選了一些。今天,國內到底哪家公司可以拿出幾十個這樣的人才?我相信是不多的。而今天中國整個軟件業的發展,必定是很是須要計算機體系架構方面的人才,尤爲是編譯器,操做系統,硬件方面的人才,軟件領域每一次重大變化都會帶來一次重構和抽象,這個都會須要具有這樣素質的人才。
因此我以爲人才是很是很是關鍵的,只有找到這些人才,才能把這些事情好,才能作一些大的變化,才能對將來的不肯定性作一些準備。在螞蟻金服內部有着一個叫「BASIC College」的技術培養體系,BASIC 一方面對應着 Blockchain (區塊鏈)、Artificial Intelligence(人工智能)、Security(安全)、 IoT(物聯網)和 Cloud Computing(雲計算)五大領域,另外一方面表明咱們始終專一於金融科技的本質——計算機基礎技術能力的提高。
所以,螞蟻金服的「BASIC College」主要圍繞熱門或前沿的領域,作有針對性的培訓,好比 AI 課程等;同時,課程還會涉及到螞蟻歷史上的重要技術方向決策。另外,咱們除了有內部的講師團,還邀請外部的專家、學者進行技術的分享與交流。咱們認爲,只有整個技術氛圍是開放的纔可能真正把技術這件事作到極致。
螞蟻金服擁有很是大的場景,每一個技術人都有足夠的空間在這個平臺上施展本身的抱負。我所講到的全部技術都是背後這張圖裏面的這羣人作的,他們開發了數據庫,研發了風控系統,設計了計算架構,包括融合計算等等不少東西。其實我是這羣人裏面技術最弱的。
本文來自雲棲社區合做夥伴「阿里技術」,如需轉載請聯繫原做者。