SOFAStack的前世此生

十二年前,爲了解決支付寶第一代架構在迅猛發展的業務面前捉襟見肘的困境,螞蟻金服技術團隊開啓了一次史無前例的嘗試。創新都是被逼出來的,今天高速發展的SOFAStack一樣如此。服務器

1.png

十二年時間,幾代螞蟻技術人蔘與攻堅,SOFA走出了一條跟傳統金融行業不一樣的分佈式架構之路。這條路,既要基於不可靠的硬件系統實現金融級的性能和可靠性,又要應對支付寶這樣的超大規模互聯網金融應用,很不容易,但螞蟻技術團隊作到了。今天,就讓咱們聊聊SOFAStack的前世此生。架構

SOFA緣起

2006年,支付寶面臨的最大問題是業務變得愈加複雜,工程師數量也愈來愈多,原來的單體系統逐漸沒法裝載更多更復雜的業務邏輯,也不能讓大量工程師一塊兒並行工做。當時的支付寶但願,系統能夠作到成百上千個項目並行進行,而且每一個工程師能夠不受干擾地工做,當業務邏輯增長的時候,系統的複雜度不至於指數級上升。技術團隊要作對將來的技術架構作一個選擇。框架

支付寶團隊作了一個決定,要走一條過去沒有人走過的路,啓動了支付寶技術系統的服務化之路,也是支付寶第二代架構的由來。2007年開始,支付寶啓動了對交易系統、商戶系統、會員系統、支付清算系統的改造。less

當時擔任支付寶首席架構師的程立,給要作的這套分佈式架構起了一個「SOFA」的名字,其背後有兩個含義:一是按照當時的技術趨勢,要作面向服務的架構,即Service Oriented Architecture,但加入了金融業務,因此是Service Oriented Fabric Architecture;二是但願可以像沙發同樣,讓工程師能夠很是爽地工做。運維

第一代的SOFA其實就解決兩個問題:一是當要把系統變成分佈式的時候,怎麼有一個像「膠水」同樣的鏈接器機制,能夠把分佈式系統鏈接成一個總體;二是但願每個服務自己是組件化的,因此當時第一代SOFA裏採用了OSGi(一套Java模塊化規範,容許應用程序使用精煉、可重用和可協做的組件構建),這樣每一個工程師能夠專一於各自的組件,最後又可以把這些組件拼裝在一塊兒成爲「服務」,再把「服務」拼裝在一塊兒成爲整個大系統。這一整套框架,就是第一代SOFA框架。分佈式

2008年1月,SOFA項目上線,成爲螞蟻金服延用12年之久並持續打磨至今且對外開源的一套技術架構。模塊化

SOFA技術演進

SOFA的版本迭代跟螞蟻金服的架構發展是密切相關的,做爲一個演進了十多年的框架,它也必定程度上表明瞭螞蟻金服的技術體系演變。微服務

從第一代到眼下的第五代,SOFA的演進過程實際上是支付寶從最先的大型業務與IT交織在一塊兒的單體系統,一邊拆金融業務系統(即後來的業務中臺)、一邊拆底層IT系統(即後來的數據中臺、計算中臺)的過程,在拆分的過程當中還要解決新出現的可擴展性、一致性問題等各類問題,同時不斷應付每一年都能擊穿系統極限的雙十一,還要把數據從原有系統一點一點「倒騰」到新系統裏、同時管理新增的海量數據。組件化

螞蟻金服金融產品技術部總經理楊冰透露,「SOFA中間件在螞蟻內部經歷了十年的發展和五代架構的演進,被普遍應用在包括支付、借貸、信用、基金、保險等全金融場景,支撐着螞蟻平穩度過歷次雙11、雙12、新春紅包等大考,創造了25.6萬筆每秒的交易紀錄,並還在不斷刷新這個紀錄。」性能

早期的SOFA在項目推動的過程當中既有研發平臺又有研發上層的業務系統,至關於把不少風險都導在一個項目裏面一塊兒作,SOFA第一代項目就是靠團隊齊心合力,天天都會遇到新問題、天天都要去解決各類問題,但你們背後有必勝信念並且很是擁抱變化,勇於在項目的中後期把前期架構決定所有推翻掉,再用一套新的架構替代

楊冰提到,隨着每一年的交易量的不斷上升,逼着技術團隊必須從單體架構轉到服務化架構,而後演進到單元化架構、彈性架構。SOFA 大部分的功能升級都是伴隨着整個公司的技術架構目標上的更大挑戰進行的。

楊冰完整經歷了SOFA1到SOFA2的開發過程,從SOFA1總體完成落地,到SOFA2引入了服務的架構。到了SOFA3螞蟻團隊把Tomcat JBoss層替換爲自研的應用服務器,解決了內部系統作類隔離、模塊隔離以及合併部署的問題。

而如今,SOFA已經逐漸從解決分佈式服務和分佈式交易的問題,變成一個真正解決金融級系統構建的基礎架構問題。這也是SOFA更名的緣由,從原來的Service Oriented Fabric Architecture改成Scalable Open Financial Architecture:

  • Scalable表明着這個框架能夠真正解決金融級系統的異地多活的容災和擴展問題,並且SOFA的可擴展能力不只是處理更多的交易,還可容納更多的業務,可以讓幾千位工程師甚至將來上萬個工程師一塊兒協同工做;
  • Open的意思是但願這個框架可讓業務應用很是容易使用,又能與經典架構系統有機融合,SOFA框架將來不但能夠編排螞蟻金服工程師本身寫的業務邏輯,並且能夠編排合做夥伴的業務邏輯,成爲一個完整的編排框架;
  • Financial則意味着SOFA必須是具有金融級屬性,能真正實現金融級的一致性、可用性和穩定性。

走向開源

開發者看開源,看到的多是情懷。商業公司看開源,看到的多是雙贏。

對於螞蟻金服來講,開源能夠擴大技術服務場景,爲支付、金融等更多的客戶提供服務,提高合做夥伴的效率。雖然,螞蟻金服已經有不少的業務場景,也在不少場景下取得了超大規模的實踐經驗,可是,依然存在沒有覆蓋到的金融服務場景。

所以,選擇將技術開源出來,能夠供更多的客戶應用到其自身的場景下,這些場景有效地補充了螞蟻金服的技術應用面,也爲更完善的技術框架奠基了基礎。因此,螞蟻選擇將SOFA中間件框架逐步開源,在貢獻給社區的同時,也指望社區、合做夥伴、客戶一塊兒參與共建,造成行業標準和最佳實踐。

對金融服務而言,監管和自主可控的要求更多,開源是一種可使客戶和上下游產業共同參與和發展的可行模式。SOFA走向開源並非技術部門去說服公司決策層開源,而是業務發展的天然選擇,也是一種合理的發展方向。

開源並非簡單地將代碼上傳到GitHub上,前期面臨不少繁重的工做,也正因如此,SOFA直到發展到第四代才作好了開源的準備。

楊冰表示,從 SOFA3 到 SOFA4 的發展過程中,輕量化的動做其實就是在爲開源作準備,一些公用能力都但願能開源出來。螞蟻技術團隊開源SOFA不會把它的代碼分爲徹底兩套東西,而後兩個分別演進,這不是開源的正確作法。除此之外,開源對整個團隊的消耗很是大,螞蟻也但願用同一套代碼來實現內部的兼容和外部的開源,在開源的代碼中留一些比較好的擴展點,這對SOFA自己代碼架構的可擴展性也是一大挑戰。

「但這是值得的,在爲開源代碼作改進時,也是爲公司本身的業務作改進,這是共贏且可持續發展的。」楊冰補充道。

擁抱Service Mesh

Service Mesh是近兩年來比較火的技術概念,進入SOFA 5時代,SOFA也全面擁抱了金融級雲原生,其中Service Mesh已經在內部大規模落地,並接受雙十一實戰檢驗。

螞蟻金服在中間件方面的探索比較深遠,規模也至關大。在楊冰看來,隨着基礎技術平臺逐步走向雲化,ServiceMesh將會是鏈接如今這個時代和雲原生時代的橋樑,也是把基礎設施沉澱到螞蟻金服整個技術平臺當中很是關鍵的一環。隨着容器技術的興起,能夠將以往的中間件組建拆分得更細、更靈動,而且資源利用率和運維效率也將獲得進一步的改善。

2.png

螞蟻金融級雲原生架構已在內部大規模落地,Service Mesh是金融級雲原生的重要基礎設施之一。在2019年雙十一大促中,Service Mesh架構已經100%覆蓋螞蟻金服核心支付鏈路,幾十萬容器,峯值千萬QPS,平均RT 0.2ms,是業界最大的 Service Mesh 集羣,成爲金融級雲原生基礎設施。經過Service Mesh架構的資源分時複用技術,大規模統一資源調度,在同時支撐天貓雙11和經濟體用戶增加兩個大促的同時,實現了零IT成本增長。SOFAStack 雙模微服務平臺也在近日正式發佈,提供了既支持 SOFA 框架又支持 Service Mesh 架構的微服務管理和治理能力。

SOFAStack,走向將來

回顧SOFAStack十多年來走過的那些艱辛困苦、高光時刻,背後默默耕耘的既有螞蟻金服技術團隊最初的架構師們、CTO們,也有一代代的基層工程師們。今天的SOFAStack,已經站在了技術的最前沿,用最早進的技術解決金融行業最艱難的問題,但故事,還在繼續。

將來的SOFA將持續擁抱開源,與社區、合做夥伴、客戶一塊兒共建,並將通過內部實踐的開源改進回饋給開源社區。目前SOFA已經在網商銀行、中國人保健康、南京銀行等金融機構中落地,將來也將持續輸出給外部合做夥伴。SOFA已於9月份上線阿里雲,經過全面整合金融科技與服務能力,持續爲金融行業提供技術底座支撐。

3.png

將來,SOFA還繼續探索和實踐金融級雲原生,擁抱ServiceMesh、Serverless,以開源共建的方式促進雲原生技術的落地與迭代,並將螞蟻的技術經驗賦能給金融業界,真正讓SOFA這一金融級分佈式架構,可以幫助到萬千的金融領域技術從業者們。

11月19日 ,咱們將在北京舉辦「螞蟻金服雙11背後的技術:巔峯洞見·聚焦金融新技術」發佈會。想要了解更多SOFAStack的內容,歡迎掃描下方二維碼,關注發佈會直播。

4.jpg

相關文章
相關標籤/搜索