Spring Cloud SOFA 基于 Spring Boot 的健康检查扩展了就绪检查(Readiness Check)的能力,该功能用于对 Spring Cloud SOFA 的各个内置组件进行检查,以确认应用是否达到就绪状态。
Spring Cloud SOFA Registry 关联了就绪检查,默认仅在应用就绪检查通过时才会进行服务注册,实现微服务的优雅上线。就绪检查还可用于 PaaS 平台对应用的检查,它可以与 K8s 的 Readiness 探针结合实现 PaaS 层面的优雅上线。
引入健康检查
在项目工程中添加 Spring Cloud SOFA Health 依赖(不要配置版本,版本由 dependencyManagement 控制)。
<dependency>
<groupId>com.alipay.cloud</groupId>
<artifactId>spring-cloud-starter-sofa-health</artifactId>
</dependency>
如果您在项目中引入了关联 SOFA 健康检查的组件,例如 Spring Cloud SOFA Registry,Spring Cloud SOFA DRM 等,它们会带入 Spring Cloud SOFA Health,无需再手动引入。
自定义就绪检查
Spring Cloud SOFA 的健康检查模块提供了一组新的接口,可供应用扩展自定义的就绪检查,以及就绪后的关联动作。
回调接口 | 说明 |
com.alipay.cloud.healthcheck.core.HealthChecker | 如果想要在 Spring Cloud SOFA 的就绪检查里面增加一个检查项,可以直接扩展该接口。相较于 Spring Boot 本身的 HealthIndicator 接口,该接口提供了一些额外的参数配置,比如检查失败重试次数等。 |
com.alipay.cloud.healthcheck.startup.ReadinessCheckCallback | 如果想要在就绪检查之后做一些事情,您可以扩展 SOFABoot 的这个接口。 |
Spring Cloud SOFA 的就绪检查也会将 Spring Boot 的原生健康检查加入到检查项中,也可以通过 Spring Boot 的扩展接口添加检查项。但是由于 Spring Boot 的健康检查更偏重于瞬时状态,不具备重试检查等逻辑,因此如果不是能确定在应用启动完成前就一定就绪的动作,不要使用 Spring Boot 扩展就绪检查项。
回调接口 | 说明 |
org.springframework.boot.actuate.health.HealthIndicator | 如果想要在 Spring Cloud SOFA 的就绪检查里面增加一个检查项,那么可以直接扩展 Spring Boot 的这个接口。 |
org.springframework.boot.actuate.health.ReactiveHealthIndicator | 在 WebFlux 中,如果想要在 Spring Cloud SOFA 的就绪检查里面增加一个检查项,那么可以直接扩展 Spring Boot 的这个接口。 |
上述四个扩展接口均可以通过 Spring Boot 标准的 Ordered、PriorityOrdered 和注解 @Order 实现执行顺序的设置。
以上接口实现后,将其作为 Spring Bean 加载到 Spring 容器上下文中即可生效。