螞蟻金服啟動分散式中間件開源計劃,用於快速構建金融級雲原生架構

我們很高興地宣布,今天螞蟻金服啟動分散式中間件(Scalable Open Financial Architecture,以下簡稱 SOFA 中間件)的開源計劃!

SOFA 是螞蟻金服自主研發的金融級分散式中間件,包含了構建金融級雲原生架構所需的各個組件,包括微服務研發框架,RPC 框架,服務註冊中心,分散式定時任務,限流/熔斷框架,動態配置推送,分散式鏈路追蹤,Metrics監控度量,分散式高可用消息隊列,分散式事務框架,分散式資料庫代理層等組件,是一套分散式架構的完整的解決方案,也是在金融場景里錘鍊出來的最佳實踐。

螞蟻金服期望通過逐步向社區開源 SOFA 中各個組件,來幫助更多機構和合作夥伴完成金融分散式轉型,幫助大家更加快速構建穩定的金融級雲原生的架構,也期望 SOFA 在螞蟻體系之外的更大場景下去應用,來進一步鍛造改進這套體系,使其更加完善和穩固,並具備更多金融級的屬性。所以我們也非常歡迎社區的夥伴和各行業的夥伴能夠參與共同探討、交流和共建。

Why(為什麼要做)

SOFA 中間件在螞蟻內部經歷了十年的發展和四代架構的演進,被廣泛應用在包括支付,借貸,信用,基金,保險等全金融場景,支撐著螞蟻平穩度過歷次雙十一,雙十二,新春紅包等大考,創造了25.6 w/s 的交易記錄,並還在不斷刷新這個記錄。

從 2015 年開始,螞蟻金服開啟了金融科技對外輸出的戰略,SOFA 也走出了螞蟻,甚至跨越了國界,被更多金融機構與合作夥伴所使用,如天弘基金,信美互信,南京銀行,PayTM、DANA 錢包等。

在與合作夥伴以及客戶的溝通、合作過程中,我們發現了 SOFA 的理念和能力也正是很多金融行業的企業所需要的,大家或多或少正在規劃或者已經在做類似的東西,但缺乏像螞蟻金服這麼大的流量來提供考驗,也缺乏專業團隊的長期投入,更缺乏豐富的金融場景和嚴苛的業務壓力來驅動技術持續發展。

隨著近幾年螞蟻金服在生態構建上不斷完善,以及不斷地有更多的公司加入到螞蟻金服的金融生態中,我們也發現了整個金融生態地複雜性和多樣性,SOFA 中間件也需要在更多地場景下被打磨、被完善、被增強。因此,我們選擇將 SOFA 逐步開源出來,在貢獻給社區的同時,也期待社區、合作夥伴甚至客戶,都能夠一起參與共建,形成行業標準和最佳實踐。

How(怎麼做)

為了讓 SOFA 能夠開源出來,我們投入了大量的重構工作,以可擴展化的方式來層層構建 SOFA 的能力,保證 SOFA 的內部版本和開源的版本採用的是同一個內核。所以 SOFA 的內部版本就是在開源版本之上擴展了內部邏輯和歷史版本的兼容邏輯。開源版本的核心邏輯,內外是一致的,並在螞蟻金服的生產環境中被廣泛使用的,同時會隨著螞蟻自身業務訴求的驅動,不斷的演進。

開源社區有非常多優秀的技術和豐富的生態,為了更好的能融入和對接現有技術體系,尊重並遵守一些社區標準,SOFA 在設計過程中就充分考慮了兼容性和架構分層,充分兼容適配社區標準,實現組件化、可擴展、可替換。

所有的 SOFA 中間件中的組件組合起來可以發揮更大的能力,但是每一個組件都是可以被替換的,比如用戶可以選擇用 Dubbo 來替換 SOFARPC,或者跟 SOFARPC 對接互通;可以選擇 Zookeeper 來作為服務註冊發現,也可以選擇 SOFA 的服務註冊中心來做服務發現;分散式鏈路追蹤組件遵守 OpenTracing 的規範,可以直接和 Zipkin 進行對接等等;Metrics組件會遵循 Metrics2.0 標準,適配 Prometheus 體系等等。

What(要做什麼)

本次 SOFA 中間件開源的內容包含了 SOFABoot SOFARPC 兩個組件。

SOFABoot 是螞蟻金服基於 Spring Boot 構建一個研發框架,整體架構上類似於螞蟻金服之前開源的 Egg 框架,遵守微內核,可插拔的理念,我們以標準 Spring Boot Starter的方式,擴展了很多企業級特性,以解決大規模團隊開發雲原生微服務系統中會遇到的問題,如類隔離,ReadinessCheck,日誌隔離等等能力,後續會開放更多內部實踐過的特性,如 Spring 上下文隔離,合併部署,動態模塊,Tracing、Metrics、Streaming、測試框架等。

同時,螞蟻的很多技術團隊和阿里的技術團隊也開放了很多類庫和組件,我們都會提供原生的集成能力和 Demo,方便大家更好的整合使用。SOFABoot 100% 兼容 Spring Boot,和 Spring Boot 並非是替代的關係,所有 Spring Boot 中的能力也都可以在 SOFABoot 中使用。

SOFABoot 的 Github 的地址是:github.com/alipay/sofa- ,歡迎大家使用反饋、貢獻代碼。

SOFARPC 是一個高效,可靠,可擴展的 RPC 的框架,是螞蟻金服服務化架構的基石。SOFARPC 最早源於阿里內部的 HSF,經過了螞蟻金服內部多年的發展,在協議,網路,路由,可擴展性等層面都進行了大量的改造和優化的工作,適配了更多金融級的場景。

SOFARPC 在螞蟻金服內部是被所有在線應用的使用的服務調用框架,截止 2017 年雙十一,SOFARPC 已經被螞蟻 2000 多個系統所使用,生產環境發布的服務數量超過了 23000 個。

SOFARPC 提供了多協議的支持,包括在螞蟻金服內部被廣泛採用,並且高度優化的 Bolt 協議,以及 REST,Dubbo,gRPC 等等主流的協議;也針對內部網關,測試等等場景提供了泛化調用能力;為了解決超大規模流量的預熱的問題,提供了服務預熱的能力;用戶也可以根據 SOFARPC 的擴展機制擴展自己需要的能力。

在後續的版本中,SOFARPC 將會加上分散式鏈路追蹤,Metrics,更多的服務註冊中心的支持,CRC 校驗等等能力。

SOFARPC 的 Github 的地址是:github.com/alipay/sofa- ,歡迎大家使用反饋、貢獻代碼。

除了以上的兩個 SOFA 中間件中的組件,在接下來,我們將會陸續開源 SOFA 中間件中的其他的組件,目前這些組件正在進行一定程度地重構中,為開源做準備,敬請大家期待~

彩蛋

最後,我們也為對 SOFA 中間件感興趣的小夥伴們準備了一個微信交流群,歡迎感興趣的同學掃描下方二維碼聯繫加群小助手加入我們 SOFA 交流群哦。??


推薦閱讀:

什麼是雲支付?
阿里雲大學創新人才賦能模式,助力貴州大數據基礎人才建設
雲計算的最終目標是什麼?雲計算有哪些模式?
阿里雲到底是個什麼東西,與亞馬遜的雲服務相比較,它處於什麼位置?
2017雙11技術揭秘—千億級流量來襲,如何用硬體加速技術為CPU減負?

TAG:雲計算 | 互聯網 | 分散式系統 |