螞蟻開源的 SOFABoot,和 Spring Boot 有啥關係?
阿新 • • 發佈:2020-12-27
![](https://img2020.cnblogs.com/other/1218593/202012/1218593-20201227142726439-152629779.png)
## 一、SOFABoot 是什麼鬼?
說到 SOFABoot,不得不先說下 SOFARPC 框架,SOFARPC 也是大名遠揚,最早起源於阿里淘寶 HSF 框架,現在是螞蟻金服開源的一款高效能、高可擴充套件性、生產級別的 RPC 框架,在螞蟻金服,SOFARPC 框架已經使用了十多年了,並且已經歷經了五代。
SOFARPC 開源地址:
> https://github.com/sofastack/sofa-rpc
棧長當初第一次看到 SOFABoot 這個框架的時候,心裡想著,難道是 SOFABoot = SOFA + Spring Boot 的結合?
**不賣關子了,先來看下官方介紹:**
> **SOFABoot** 是螞蟻金服開源的基於 **Spring Boot** 的研發框架,它在 **Spring Boot** 的基礎上,提供了諸如 **Readiness Check,類隔離,日誌空間隔離**等等能力。
>
> 在增強了 **Spring Boot** 的同時,**SOFABoot** 提供了讓使用者可以在 **Spring Boot** 中非常方便地使用 **SOFA** 中介軟體的能力。
SOFABoot 開源地址:
> https://github.com/sofastack/sofa-boot
![](https://img2020.cnblogs.com/other/1218593/202012/1218593-20201227142727408-1167678476.png)
看完介紹,棧長才發現其實並不是,兩者並不能直接劃等號。
SOFABoot 和 SOFARPC 都是螞蟻金服開源的 SOFA 技術棧的開源專案,SOFARPC 只是其 SOFA 技術棧體系(**SOFAStack**)中的一個 RPC 框架。
> SOFAStack™(Scalable Open Financial Architecture Stack)是一套用於快速構建金融級雲原生架構的中介軟體,也是在金融場景裡錘鍊出來的最佳實踐。
SOFABoot 也是 SOFA 技術棧體系中一個框架,但和 SOFARPC 沒有直接關係,SOFABoot 是一個 Spring Boot 加強版,還提供了方便使用 SOFA 中介軟體的能力,SOFARPC 只是其中之一而已。
## 二、功能描述
Spring Boot 雖然是一個非常優秀的主流開源框架,但在螞蟻內部會遇到很多問題,比如說 Spring Boot 在實施大規模微服務架構時候的就會遇到很多問題,所以 SOFABoot 應運而生。
SOFABoot 基於 Spring Boot 的基礎上進行構建,並且是完全相容 Spring Boot 的。
**SOFABoot 在 Spring Boot 上還提供了哪些能力?**
1)擴充套件 Spring Boot 的健康檢查,額外提供了 Readiness Check 的能力,以保證應用例項安全上線;
2)增加基於 Spring 上下文隔離的模組化開發能力,每個 SOFABoot 模組使用獨立的 Spring 上下文,避免不同 SOFABoot 模組間的 BeanId 衝突;
3)增加模組並行載入和 Spring Bean 非同步初始化能力,加速應用啟動;
4)增加日誌空間隔離的能力,中介軟體框架自動發現應用的日誌實現依賴並獨立列印日誌,避免中介軟體和應用日誌實現繫結;
5)增加基於 SOFAArk 框架提供類隔離能力,方便解決各種類衝突問題;
6)增加中介軟體整合管理的能力,統一管控、提供中介軟體統一易用的程式設計介面、每一個 SOFA 中介軟體都是獨立可插拔的元件;
## 三、依賴環境
SOFABoot 和 Spring Boot 版本依賴關係:
| SOFABoot 版本 | Spring Boot 版本 |
| ------------- | ---------------- |
| 2.3.x | 1.4.2.RELEASE |
| 2.4.x | 1.4.2.RELEASE |
| 2.5.x | 1.5.16.RELEASE |
| 3.0.x | 2.0.3.RELEASE |
| 3.1.x | 2.1.0.RELEASE |
| 3.2.x | 2.1.0.RELEASE |
| 3.3.0~3.3.1 | 2.1.11.RELEASE |
| 3.3.2 及以後 | 2.1.13.RELEASE |
SOFABoot 目前最新版本已到 v3.4.6,最低支援 JDK 7,SOFABoot 3.1.0 基於 Spring Boot 2.1.0.RELEASE 已支援 JDK 11,所以其依賴的 JDK 的版本肯定應該也是根據 Spring Boot 走的。
目前的 Spring Boot 版本已經到了 [2.4.x](https://mp.weixin.qq.com/s/Fff2EsSxraefIUJ8HpQXFg),想相容最新的 Spring Boot 版本貌似還早。
SOFABoot 還使用了其他主要第三方開源元件:
- Spring
- Spring Boot
- SLF4j
- sofa-common-tools
一些擴充套件依賴:
- nuxeo
- ......
SOFABoot 支援 Maven 和 Gradle 依賴管理,類似 Spring Boot 的依賴引入方式,如在 Maven 配置檔案中增加