SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,上下文隔离,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFA 中间件的能力。
Spring Boot 是一个非常优秀的开源框架,可以非常方便地就构建出一个基于 Spring 的应用程序,但是在使用过程中,还是会遇到一些问题:
为了解决以上的问题,又因为 SOFA 中间件中的各个组件本身就需要集成 Spring Boot,所以蚂蚁金服基于 Spring Boot 开发并开源了 SOFABoot,来解决以上的问题,也方便使用者在 Spring Boot 中方便地去使用 SOFA 中间件。
满足原生云应用的十二个因素,具备快速开发,持续交付和部署,弹性扩展,故障隔离、自动恢复等特点。
SOFA Boot 已在社区开源,并兼容开源生态,可与 Spring Boot、Spring 工程无缝集成,降低用户的迁移成本。
提供多种度量维度实时监测应用程序的性能,能帮助更好的了解当前应用程序或者服务在线上的各种性能状态。
提供平台无关、厂商无关的 API,使得开发人员能够方便的添加(或更换)追踪系统的实现,跟踪分布式系统内各组件的调用情况等。
为了解决 Spring Boot 在实施大规模微服务架构时候的问题,SOFABoot 提供了以下的能力:
针对 Spring Boot 缺少 Readiness Check 能力的情况,SOFABoot 增加了 Spring Boot 现有的健康检查的能力,提供了 Readiness Check 的能力。利用 Readiness Check 的能力,SOFA 中间件中的各个组件只有在 Readiness Check 通过之后,才将流量引入到应用的实例中,比如 RPC,只有在 Readiness Check 通过之后,才会向服务注册中心注册,后面来自上游应用的流量才会进入。
除了中间件可以利用 Readiness Check 的事件来控制流量的进入之外,PAAS 系统也可以通过访问 http://localhost:8080/health/readiness 来获取应用的 Readiness Check 的状况,用来控制例如负载均衡设备等等流量的进入。
为了解决 Spring Boot 下的类依赖冲突的问题,SOFABoot 基于 SOFAArk 提供了 Spring Boot 上的类隔离的能力,在一个 SOFABoot 的系统中,只要引入 SOFAArk 相关的依赖,就可以将 SOFA 中间件相关的类和应用相关的类的 ClassLoader 进行隔离,防止出现类冲突。当然,用户也可以基于 SOFAArk,将其他的中间件、第三方的依赖和应用的类进行隔离。
为了统一大规模微服务场景下的中间件日志的打印,SOFABoot 提供了日志空间隔离的能力给 SOFA 中间件,SOFA 中间件中的各个组件采用日志空间隔离的能力之后,自动就会将本身的日志和应用的普通日志隔离开来,并且打印的日志的路径也是相对固定,非常方便进行统一地监控。
基于 Spring Boot 的自动配置能力,SOFABoot 提供了 SOFA 中间件统一易用的编程接口以及 Spring Boot 的 Starter,方便在 Spring Boot 环境下使用 SOFA 中间件,SOFA 中间件中的各个组件都是独立可插拔的,节约开发时间,和后期维护的成本。
SOFABoot 从 2.4.0 版本开始支持基于 Spring 上下文隔离的模块化开发能力,每个 SOFABoot 模块使用独立的 Spring 上下文,避免不同 SOFABoot 模块间的 BeanId 冲突,有效降低企业级多模块开发时团队间的沟通成本。
快速开发分布式应用
SOFA Boot 提供模块化和面向服务编程的轻量化开发框架,并集成了全套蚂蚁金服中间件,简单易用,可以帮助用户快速搭建高效,可靠的分布式应用,扩展性非常强且非常容易扩展。
SOFA Boot 提供各种默认模板,简化项目配置,同时蚂蚁中间件在 SOFA Boot 中“依赖即服务”,引入依赖不需要额外配置,即可以使用中间件功能,大大的减少了开发成本,且本地开发测试集成方便。

