SOFABoot 为 Spring Boot 的健康检查能力增加了 Readiness Check 的能力。如果你需要使用 SOFA 中间件,那么建议使用 SOFABoot 的健康检查能力的扩展,来更优雅的上线应用实例

引入健康检查扩展

要引入 SOFABoot 的健康检查能力的扩展,只需要引入以下的 Starter 即可:

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>healthcheck-sofa-boot-starter</artifactId>
  4. </dependency>

如果不引入 SOFABoot 的健康检查扩展,用户依然可以直接依赖 HealthIndicator 接口进行原生的 Spring Boot Actuator 的 Liveness Check。

查看健康检查结果

加入健康检查扩展之后,我们可以直接在浏览器中输入 http://localhost:8080/health/readiness 来查看 Readiness Check 的结果。如果要查看 Liveness Check 的结果,可以直接查看 Spring Boot 的健康检查的 URL http://localhost:8080/health

除了通过 URL 来查看健康检查的结果之外,在 SOFABoot 中,还可以通过查看具体的日志来确定健康检查的结果,日志的目录位于 health-check 目录下,日志的内容大概如下:

  1. 2018-04-06 23:29:50,240 INFO main - Readiness check result: success

目前 SOFA 中间件已经通过 SOFABoot 的 Readiness Check 的能力来控制了上游流量的进入,但是一个应用的流量可能并不是全部都是从中间件进入的,比较常见的还有从负载均衡器进入的,为了控制从负载均衡器进入的流量,建议使用者通过 PAAS 来访问 Readiness Check 的结果,根据结果来控制是否要在负载均衡器中上线对应的节点。

扩展 Readiness Check 能力

在 Readiness Check 的各个阶段,SOFABoot 都提供了扩展的能力,应用可以根据自己的需要进行扩展,目前可供扩展的点如下:

回调接口 说明
org.springframework.context.ApplicationListener 如果想要在 Readiness Check 之前做一些事情,那么监听这个 Listener 的 SofaBootBeforeHealthCheckEvent 事件。
org.springframework.boot.actuate.health.HealthIndicator 如果想要在 SOFABoot 的 Readiness Check 里面增加一个检查项,那么可以直接扩展 Spring Boot 的这个接口。
com.alipay.sofa.healthcheck.startup.SofaBootAfterReadinessCheckCallback 如果想要在 Readiness Check 之后做一些事情,那么可以扩展 SOFABoot 的这个接口。

Readiness Check 配置项

应用在引入 SOFABoot 的健康检查扩展之后,可以在 Spring Boot 的配置文件 application.properties 中添加相关配置项来定制 Readiness Check 的相关行为。

Readiness Check 配置项 说明 默认值
com.alipay.sofa.healthcheck.skip.all 是否跳过整个 Readiness Check 阶段 false
com.alipay.sofa.healthcheck.skip.component 是否跳过 SOFA 中间件的 Readiness Check false
com.alipay.sofa.healthcheck.skip.indicator 是否跳过 HealthIndicator 的 Readiness Check false