sofa boot介绍

介绍

官网上的说明,相比springboot,增加的功能主要有三个:健康检查、模块化(多上下文)、类隔离(ark多classloader)。

  • 扩展 Spring Boot 健康检查的能力:在 Spring Boot 健康检查能力基础上,提供了 Readiness Check 的能力,保证应用实例安全上线。

“服务注册上”并不代表“程序初始化完成”。是否初始化完成,需要业务上自己判断。在spirngboot中有HealthIndicator接口,也能提供类似的检查。但是好像没有现成的通过这接口控制流量的机制。

  • 提供模块化开发的能力:基于 Spring 上下文隔离提供模块化开发能力,每个 SOFABoot 模块使用独立的 Spring 上下文,避免不同 SOFABoot 模块间的 BeanId 冲突。
  • 增加模块并行加载和 Spring Bean 异步初始化能力,加速应用启动;

主要是解决什么场景下的问题?如果是server端,其实对启动时间并不敏感。微服务化后,启动都不会慢

  • 增加日志空间隔离的能力:中间件框架自动发现应用的日志实现依赖并独立打印日志,避免中间件和应用日志实现绑定,通过 sofa-common-tools 实现。

不是很明白解决的问题场景。日志实现不一般通过SL4J进行解耦么。

  • 增加类隔离的能力:基于 SOFAArk 框架提供类隔离能力,方便使用者解决各种类冲突问题。

这也是个常见的场景。

  • 增加中间件集成管理的能力:统一管控、提供中间件统一易用的编程接口、每一个 SOFA 中间件都是独立可插拔的组件。

每个中间件可能完成的功能差别很大,比如打点的和rpc的,接口应该很难统一?

  • 提供完全兼容 Spring Boot的能力:SOFABoot 基于 Spring Boot 的基础上进行构建,并且完全兼容 Spring Boot。

如何在Spring Boot的基础上构建?Spring Boot本身提供了很多可以扩展的地方,比如postProcessor、自定义的各种实现类,是强入侵的么?(应该不是,如果是Spring Boot升级版本就比较麻烦)如果不是对Spring boot的强入侵,那么是不是更像对Spirng Boot的扩展?

依赖管理

健康检查

版本查看

启动加速

模块隔离

概述

JVM服务发布与引用

Spring Bean 异步初始化&并行初始化

SOFABoot 拓展点

类隔离

总结

Q&A

参考

SOFABoot 介绍

Table of Contents