SOFAStack的前世今生
十二年前,為了解決支付寶第一代架構(gòu)在迅猛發(fā)展的業(yè)務(wù)面前捉襟見肘的困境,螞蟻金服技術(shù)團隊開啟了一次前所未有的嘗試。創(chuàng)新都是被逼出來的,今天高速發(fā)展的SOFAStack同樣如此。
十二年時間,幾代螞蟻技術(shù)人參與攻堅,SOFA走出了一條跟傳統(tǒng)金融行業(yè)不同的分布式架構(gòu)之路。這條路,既要基于不可靠的硬件系統(tǒng)實現(xiàn)金融級的性能和可靠性,又要應(yīng)對支付寶這樣的超大規(guī)模互聯(lián)網(wǎng)金融應(yīng)用,很不容易,但螞蟻技術(shù)團隊做到了。今天,就讓我們聊聊SOFAStack的前世今生。
SOFA緣起
2006年,支付寶面臨的最大問題是業(yè)務(wù)變得越發(fā)復(fù)雜,工程師數(shù)量也越來越多,原來的單體系統(tǒng)逐漸無法裝載更多更復(fù)雜的業(yè)務(wù)邏輯,也不能讓大量工程師一起并行工作。當時的支付寶希望,系統(tǒng)可以做到成百上千個項目并行進行,并且每個工程師可以不受干擾地工作,當業(yè)務(wù)邏輯增加的時候,系統(tǒng)的復(fù)雜度不至于指數(shù)級上升。技術(shù)團隊要做對未來的技術(shù)架構(gòu)做一個選擇。
支付寶團隊做了一個決定,要走一條過去沒有人走過的路,啟動了支付寶技術(shù)系統(tǒng)的服務(wù)化之路,也是支付寶第二代架構(gòu)的由來。2007年開始,支付寶啟動了對交易系統(tǒng)、商戶系統(tǒng)、會員系統(tǒng)、支付清算系統(tǒng)的改造。
當時擔任支付寶首席架構(gòu)師的程立,給要做的這套分布式架構(gòu)起了一個“SOFA”的名字,其背后有兩個含義:一是按照當時的技術(shù)趨勢,要做面向服務(wù)的架構(gòu),即Service Oriented Architecture,但加入了金融業(yè)務(wù),所以是Service Oriented Fabric Architecture;二是希望能夠像沙發(fā)一樣,讓工程師可以非常爽地工作。
第一代的SOFA其實就解決兩個問題:一是當要把系統(tǒng)變成分布式的時候,怎么有一個像“膠水”一樣的連接器機制,可以把分布式系統(tǒng)連接成一個整體;二是希望每一個服務(wù)本身是組件化的,所以當時第一代SOFA里采用了OSGi(一套Java模塊化規(guī)范,允許應(yīng)用程序使用精煉、可重用和可協(xié)作的組件構(gòu)建),這樣每個工程師可以專注于各自的組件,最后又能夠把這些組件拼裝在一起成為“服務(wù)”,再把“服務(wù)”拼裝在一起成為整個大系統(tǒng)。這一整套框架,就是第一代SOFA框架。
2008年1月,SOFA項目上線,成為螞蟻金服延用12年之久并持續(xù)打磨至今且對外開源的一套技術(shù)架構(gòu)。
SOFA技術(shù)演進
SOFA的版本迭代跟螞蟻金服的架構(gòu)發(fā)展是密切相關(guān)的,作為一個演進了十多年的框架,它也一定程度上代表了螞蟻金服的技術(shù)體系演變。
從第一代到眼下的第五代,SOFA的演進過程其實是支付寶從最早的大型業(yè)務(wù)與IT交織在一起的單體系統(tǒng),一邊拆金融業(yè)務(wù)系統(tǒng)(即后來的業(yè)務(wù)中臺)、一邊拆底層IT系統(tǒng)(即后來的數(shù)據(jù)中臺、計算中臺)的過程,在拆分的過程中還要解決新出現(xiàn)的可擴展性、一致性問題等各種問題,同時不斷應(yīng)付每年都能擊穿系統(tǒng)極限的雙十一,還要把數(shù)據(jù)從原有系統(tǒng)一點一點“倒騰”到新系統(tǒng)里、同時管理新增的海量數(shù)據(jù)。
螞蟻金服金融產(chǎn)品技術(shù)部總經(jīng)理楊冰透露,“SOFA中間件在螞蟻內(nèi)部經(jīng)歷了十年的發(fā)展和五代架構(gòu)的演進,被廣泛應(yīng)用在包括支付、借貸、信用、基金、保險等全金融場景,支撐著螞蟻平穩(wěn)度過歷次雙十一、雙十二、新春紅包等大考,創(chuàng)造了25.6萬筆每秒的交易紀錄,并還在不斷刷新這個紀錄。”
早期的SOFA在項目推進的過程中既有研發(fā)平臺又有研發(fā)上層的業(yè)務(wù)系統(tǒng),相當于把很多風(fēng)險都導(dǎo)在一個項目里面一起做,SOFA第一代項目就是靠團隊齊心協(xié)力,每天都會遇到新問題、每天都要去解決各種問題,但大家背后有必勝信念而且非常擁抱變化,敢于在項目的中后期把前期架構(gòu)決定全部推翻掉,再用一套新的架構(gòu)替代
楊冰提到,隨著每年的交易量的不斷上升,逼著技術(shù)團隊必須從單體架構(gòu)轉(zhuǎn)到服務(wù)化架構(gòu),然后演進到單元化架構(gòu)、彈性架構(gòu)。SOFA 大部分的功能升級都是伴隨著整個公司的技術(shù)架構(gòu)目標上的更大挑戰(zhàn)進行的。
楊冰完整經(jīng)歷了SOFA1到SOFA2的開發(fā)過程,從SOFA1整體完成落地,到SOFA2引入了服務(wù)的架構(gòu)。到了SOFA3螞蟻團隊把Tomcat JBoss層替換為自研的應(yīng)用服務(wù)器,解決了內(nèi)部系統(tǒng)做類隔離、模塊隔離以及合并部署的問題。
而現(xiàn)在,SOFA已經(jīng)逐漸從解決分布式服務(wù)和分布式交易的問題,變成一個真正解決金融級系統(tǒng)構(gòu)建的基礎(chǔ)架構(gòu)問題。這也是SOFA改名的原因,從原來的Service Oriented Fabric Architecture改為Scalable Open Financial Architecture:
- Scalable代表著這個框架可以真正解決金融級系統(tǒng)的異地多活的容災(zāi)和擴展問題,而且SOFA的可擴展能力不僅是處理更多的交易,還可容納更多的業(yè)務(wù),能夠讓幾千位工程師甚至未來上萬個工程師一起協(xié)同工作;
- Open的意思是希望這個框架可以讓業(yè)務(wù)應(yīng)用非常容易使用,又能與經(jīng)典架構(gòu)系統(tǒng)有機融合,SOFA框架未來不但可以編排螞蟻金服工程師自己寫的業(yè)務(wù)邏輯,而且可以編排合作伙伴的業(yè)務(wù)邏輯,成為一個完整的編排框架;
- Financial則意味著SOFA必須是具備金融級屬性,能真正實現(xiàn)金融級的一致性、可用性和穩(wěn)定性。
走向開源
開發(fā)者看開源,看到的可能是情懷。商業(yè)公司看開源,看到的可能是共贏。
對于螞蟻金服來說,開源可以擴大技術(shù)服務(wù)場景,為支付、金融等更多的客戶提供服務(wù),提升合作伙伴的效率。雖然,螞蟻金服已經(jīng)有很多的業(yè)務(wù)場景,也在很多場景下取得了超大規(guī)模的實踐經(jīng)驗,但是,依然存在沒有覆蓋到的金融服務(wù)場景。
因此,選擇將技術(shù)開源出來,可以供更多的客戶應(yīng)用到其自身的場景下,這些場景有效地補充了螞蟻金服的技術(shù)應(yīng)用面,也為更完善的技術(shù)框架奠定了基礎(chǔ)。所以,螞蟻選擇將SOFA中間件框架逐步開源,在貢獻給社區(qū)的同時,也期望社區(qū)、合作伙伴、客戶一起參與共建,形成行業(yè)標準和最佳實踐。
對金融服務(wù)而言,監(jiān)管和自主可控的要求更多,開源是一種可以使客戶和上下游產(chǎn)業(yè)共同參與和發(fā)展的可行模式。SOFA走向開源并不是技術(shù)部門去說服公司決策層開源,而是業(yè)務(wù)發(fā)展的自然選擇,也是一種合理的發(fā)展方向。
開源并不是簡單地將代碼上傳到GitHub上,前期面臨很多繁重的工作,也正因如此,SOFA直到發(fā)展到第四代才做好了開源的準備。
楊冰表示,從 SOFA3 到 SOFA4 的發(fā)展過程當中,輕量化的動作其實就是在為開源做準備,一些公用能力都希望能開源出來。螞蟻技術(shù)團隊開源SOFA不會把它的代碼分為完全兩套東西,然后兩個分別演進,這不是開源的正確做法。除此以外,開源對整個團隊的消耗非常大,螞蟻也希望用同一套代碼來實現(xiàn)內(nèi)部的兼容和外部的開源,在開源的代碼中留一些比較好的擴展點,這對SOFA本身代碼架構(gòu)的可擴展性也是一大挑戰(zhàn)。
“但這是值得的,在為開源代碼做改進時,也是為公司自己的業(yè)務(wù)做改進,這是雙贏且可持續(xù)發(fā)展的。”楊冰補充道。
擁抱Service Mesh
Service Mesh是近兩年來比較火的技術(shù)概念,進入SOFA 5時代,SOFA也全面擁抱了金融級云原生,其中Service Mesh已經(jīng)在內(nèi)部大規(guī)模落地,并接受雙十一實戰(zhàn)檢驗。
螞蟻金服在中間件方面的探索比較深遠,規(guī)模也相當大。在楊冰看來,隨著基礎(chǔ)技術(shù)平臺逐步走向云化,ServiceMesh將會是連接現(xiàn)在這個時代和云原生時代的橋梁,也是把基礎(chǔ)設(shè)施沉淀到螞蟻金服整個技術(shù)平臺當中非常關(guān)鍵的一環(huán)。隨著容器技術(shù)的興起,可以將以往的中間件組建拆分得更細、更靈動,并且資源利用率和運維效率也將得到進一步的改善。
螞蟻金融級云原生架構(gòu)已在內(nèi)部大規(guī)模落地,Service Mesh是金融級云原生的重要基礎(chǔ)設(shè)施之一。在2019年雙十一大促中,Service Mesh架構(gòu)已經(jīng)100%覆蓋螞蟻金服核心支付鏈路,幾十萬容器,峰值千萬QPS,平均RT 0.2ms,是業(yè)界最大的 Service Mesh 集群,成為金融級云原生基礎(chǔ)設(shè)施。通過Service Mesh架構(gòu)的資源分時復(fù)用技術(shù),大規(guī)模統(tǒng)一資源調(diào)度,在同時支撐天貓雙11和經(jīng)濟體用戶增長兩個大促的同時,實現(xiàn)了零IT成本增加。SOFAStack 雙模微服務(wù)平臺也在近日正式發(fā)布,提供了既支持 SOFA 框架又支持 Service Mesh 架構(gòu)的微服務(wù)管理和治理能力。
SOFAStack,走向未來
回顧SOFAStack十多年來走過的那些艱辛困苦、高光時刻,背后默默耕耘的既有螞蟻金服技術(shù)團隊最初的架構(gòu)師們、CTO們,也有一代代的基層工程師們。今天的SOFAStack,已經(jīng)站在了技術(shù)的最前沿,用最先進的技術(shù)解決金融行業(yè)最艱難的問題,但故事,還在繼續(xù)。
未來的SOFA將持續(xù)擁抱開源,與社區(qū)、合作伙伴、客戶一起共建,并將經(jīng)過內(nèi)部實踐的開源改進回饋給開源社區(qū)。目前SOFA已經(jīng)在網(wǎng)商銀行、中國人保健康、南京銀行等金融機構(gòu)中落地,未來也將持續(xù)輸出給外部合作伙伴。SOFA已于9月份上線阿里云,通過全面整合金融科技與服務(wù)能力,持續(xù)為金融行業(yè)提供技術(shù)底座支撐。
未來,SOFA還繼續(xù)探索和實踐金融級云原生,擁抱ServiceMesh、Serverless,以開源共建的方式促進云原生技術(shù)的落地與迭代,并將螞蟻的技術(shù)經(jīng)驗賦能給金融業(yè)界,真正讓SOFA這一金融級分布式架構(gòu),能夠幫助到萬千的金融領(lǐng)域技術(shù)從業(yè)者們。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的SOFAStack的前世今生的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个多业务、多状态、多操作的交易链路?闲
- 下一篇: IP应用加速技术详解:如何提升动静混合站