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