sofaBoot的功能:
1、增强SpringBoot的健康检查能力
针对 Spring Boot 缺少 Readiness Check 能力的情况,SOFABoot 增加了 Spring Boot 现有的健康检查的能力,提供了 Readiness Check 的能力。利用 Readiness Check 的能力,SOFAStack 下各种中间件只有在 Readiness Check 通过之后,才将流量引入到应用的实例中,比如 RPC,只有在 Readiness Check 通过之后,才会向服务注册中心注册,后面来自上游应用的流量才会进入。
除了中间件可以利用 Readiness Check 的事件来控制流量的进入之外,PAAS 系统也可以通过访问 http://localhost:8080/health/readiness
来获取应用的 Readiness Check 的状况,用来控制例如负载均衡设备等等的流量。
2、提供类隔离的能力
为了解决 Spring Boot 下的类依赖冲突的问题,SOFABoot 基于 SOFAArk 提供了 Spring Boot 上的类隔离的能力,在一个 SOFABoot 的系统中,只要引入 SOFAArk 相关的依赖,就可以将 SOFAStack 的中间件相关的类和应用相关的类的 ClassLoader 进行隔离,防止出现类冲突。当然,用户也可以基于 SOFAArk,将其他的中间件、第三方的依赖和应用的类进行隔离。
3、日志空间隔离能力
为了统一大规模微服务场景下的中间件日志的打印,SOFABoot 提供了日志空间隔离的能力给各个 SOFAStack 的中间件,各个 SOFAStack 的中间件采用日志空间隔离的能力之后,自动就会将本身的日志和应用的普通日志隔离开来,并且打印的日志的路径也是相对固定,非常方便进行统一地监控
4、sofaStack中间件集中管理
基于 Spring Boot 的自动配置能力,SOFABoot 提供了 SOFAStack 中间件统一易用的编程接口以及 Spring Boot 的 Starter,方便在 Spring Boot 环境下使用 SOFAStack 中间件,每一个 SOFAStack 中间件都是独立可插拔的组件,节约开发时间,和后期维护的成本。
下满我们创建一个 Spring Boot 的工程,引入 SOFABoot 基础依赖,并且引入 SOFABoot 的健康检查扩展能力,演示如何快速上手 SOFABoot。
1、利用SpringBoot工程生成工具搭建一个项目https://start.spring.io/
选择Java版本:jdk8
选择springBoot版本:2.4.0
导入idea后,编译,使其没有错误。
2、修改pom,引入sofaBoot的依赖
原:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<relativePath/>
</parent>
修改后:
<parent>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofaboot-dependencies</artifactId>
<version>2.3.1</version>
</parent>
3、新增sofaBoot健康检查扩展能力的依赖
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>healthcheck-sofa-boot-starter</artifactId>
</dependency>
4、修改application.properties,包括spring.application.name 用于标示当前应用的名称;logging path 用于指定日志的输出目录。
##当前应用端口
server.port=8081
##当前应用名称(不能删除,作为eureka服务时,名称不能带下划线“_”,可为“-”,否则注册中心访问不到指定服务)
spring.application.name=SOFABoot-BIP-Demo
# logging path
logging.path=./logs
5、编译程序,没错误后,运行SpringBoot的启动类。
6、可以通过在浏览器中输入 http://localhost:8080/sofaboot/versions 来查看当前 SOFABoot 中使用 Maven 插件生成的版本信息汇总,结果类似如下:
[
{
"GroupId": "com.alipay.sofa",
"Doc-Url": "https://github.com/alipay/sofa-boot",
"ArtifactId": "infra-sofa-boot-starter",
"Bulit-Time": "2018-04-18T22:19:09+0800",
"Commit-Time": "2018-04-18T22:07:52+0800",
"Commit-Id": "466f0e039b250ff7b201dc693eec7fa07eb21ad7",
"Version": "2.3.1"
}
]
7、可以通过在浏览器中输入 http://localhost:8080/health/readiness 查看应用 Readiness Check 的状况,类似如下:
{
"status": "UP",
"sofaBootComponentHealthCheckInfo": {
"status": "UP"
},
"springContextHealthCheckInfo": {
"status": "UP"
},
"DiskSpaceHealthIndicator": {
"status": "UP",
"total": 500673744896,
"free": 500506685440,
"threshold": 10485760
}
}
8、添加测试,SpringBoot 官方提供了和 JUnit4 集成的 SpringRunner
, 用于集成测试用例的编写; 在 SOFABoot 中,依然可以使用原生的 SpringRunner
, 但是推荐使用 SOFABoot 自带的 SofaBootRunner
以及 SofaJUnit4Runner
编写集成测试和单元测试;应用需要额外引入如下 Starter:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>test-sofa-boot-starter</artifactId>
</dependency>
如果需要使用 SOFABoot 的类隔离的能力,则必须需要引入上述的依赖,并且使用 SofaBootRunner 和 SofaJUnit4Runner 来测试。