今天螞蟻金服正式開源分佈式中間件(Scalable Open Financial Architecture,以下簡稱 SOFA 中間件)!
什麼
什麼是SOFA中間件?
SOFA 中間件是螞蟻金服自主研發的金融級分佈式中間件,包含了構建金融級雲原生架構所需的各個組件,
包括微服務研發框架
RPC 框架
服務註冊中心
分佈式定時任務
限流/熔斷框架
動態配置推送
分佈式鏈路追蹤
Metrics監控度量
分佈式高可用消息隊列
分佈式事務框架
分佈式數據庫代理層等組件
是一套分佈式架構的完整的解決方案,也是在金融場景裡錘鍊出來的最佳實踐。螞蟻金服通過這麼多年積累出來的專為金融而生!
可替換性
開源社區有非常多優秀的技術和豐富的生態,為了更好的能融入和對接現有技術體系,尊重並遵守一些社區標準,SOFA 在設計過程中就充分考慮了兼容性和架構分層,充分兼容適配社區標準,實現組件化、可擴展、可替換。
所有的 SOFA 中間件中的組件組合起來可以發揮更大的能力,但是每一個組件都是可以被替換的,比如用戶可以選擇用 Dubbo 來替換 SOFARPC,或者跟 SOFARPC 對接互通;可以選擇 Zookeeper 來作為服務註冊發現,也可以選擇 SOFA 的服務註冊中心來做服務發現;分佈式鏈路追蹤組件遵守 OpenTracing 的規範,可以直接和 Zipkin 進行對接等等;Metrics組件會遵循 Metrics2.0 標準,適配 Prometheus 體系等等。
本次 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 中使用。
SOFARPC
是一個高效,可靠,可擴展的 RPC 的框架, 是螞蟻金服服務化架構的基石。SOFARPC 最早源於阿里內部的 HSF,經過了螞蟻金服內部多年的發展,在協議,網絡,路由,可擴展性等層面都進行了大量的改造和優化的工作,適配了更多金融級的場景。
SOFARPC 在螞蟻金服內部是被所有在線應用的使用的服務調用框架,截止 2017 年雙十一,SOFARPC 已經被螞蟻 2000 多個系統所使用,生產環境發佈的服務數量超過了 23000 個。
SOFARPC 提供了多協議的支持,包括在螞蟻金服內部被廣泛採用,並且高度優化的 Bolt 協議,以及 REST,Dubbo,gRPC 等等主流的協議;也針對內部網關,測試等等場景提供了泛化調用能力;為了解決超大規模流量的預熱的問題,提供了服務預熱的能力;用戶也可以根據 SOFARPC 的擴展機制擴展自己需要的能力。
在後續的版本中,SOFARPC 將會加上分佈式鏈路追蹤,Metrics,更多的服務註冊中心的支持,CRC 校驗等等能力。
其他
除了以上的兩個 SOFA 中間件中的組件,在接下來,我們將會陸續開源 SOFA 中間件中的其他的組件,目前這些組件正在進行一定程度地重構中,為開源做準備,敬請大家期待~
閱讀更多 java進階架構師 的文章