一、SOFA Boot是什么
说到 SOFABoot,不得不先说下 SOFARPC 框架,SOFARPC 也是大名远扬,最早起源于阿里淘宝 HSF 框架,现在是蚂蚁金服开源的一款高性能、高可扩展性、生产级别的 RPC 框架,在蚂蚁金服,SOFARPC 框架已经使用了十多年了,并且已经历经了五代。
SOFARPC 开源地址,有兴趣可以自行学习。
SOFARPC github地址
光看SOFA Boot这个名字,猜测是SOFA+Spring Boot?接下来看官网的介绍:

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。
在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFA 中间件的能力。

SOFABoot 开源地址:

https://github.com/sofastack/sofa-boot

看完之后可以发现,SOFA Boot并不是SOFA + Spring Boot,SOFABoot 和 SOFARPC 都是蚂蚁金服开源的 SOFA 技术栈的开源项目,SOFARPC 只是其 SOFA 技术栈体系(SOFAStack)中的一个 RPC 框架。
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 目前最新版本已到 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,想兼容最新的 Spring Boot 版本貌似还早。

SOFABoot 还使用了其他主要第三方开源组件:

Spring
Spring Boot
SLF4j
sofa-common-tools
一些扩展依赖:

nuxeo

SOFABoot 支持 Maven 和 Gradle 依赖管理,类似 Spring Boot 的依赖引入方式,如在 Maven 配置文件中增加如下 标签配置的方式:

<parent>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofaboot-dependencies</artifactId>
    <version>3.4.6</version>
</parent>

Spring Boot 的依赖引入是这样的:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
</parent>

可以看出和 Spring Boot 如出一辙!
三、引入 SOFA 组件
遵循 Spring Boot 命名规范,SOFABoot 所有中间件组件命名都是以 -sofa-boot-starter 来标示的。
SOFABoot 目前提供的中间件组件如下:

中间件starter
SOFARPCrpc-sofa-boot-starter
SOFATracertracer-sofa-boot-starter
SOFALookoutlookout-sofa-boot-starter

SOFABoot 目前提供的扩展组件如下:

扩展组件starter
健康检查healthcheck-sofa-boot-starter
模块化隔离isle-sofa-boot-starter
类隔离sofa-ark-springboot-starter
测试扩展test-sofa-boot-starter

比如想引入 SOFARPC 中间件,只需增加下面的 Maven 依赖即可:

<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>rpc-sofa-boot-starter</artifactId>
</dependency>

四、应用场景
话说 SOFABoot 框架有哪些应用场景?
SOFABoot 框架本身就脱胎于蚂蚁金服内部对于 Spring Boot 框架的运用实践的成果,又解决了 Spring Boot 在大规模金融级微服务架构生产场景下遇到的各种问题,又经历了蚂蚁金服这样大规模金融服务的打磨和生产验证,所以 SOFABoot 在大规模金融级微服务架构下的运用是非常合适的。
另外,SOFABoot 框架集成了所有蚂蚁金服金融科技中间件,同时又能与 Spring Boot 框架无缝集成,大大降低了用户的迁移成本。
如果不想自研,又对 Spring Boot + 蚂蚁金服技术栈情有独钟的,完全可以利用 SOFABoot 轻松搭建稳定、可靠、安全、可扩展的分布式应用,以减少开发、测试、集成成本。
参考文档:
https://github.com/sofastack/sofa-boot
https://www.sofastack.tech/projects/sofa-boot/overview/

Logo

秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

更多推荐