健康检查(Spring Cloud SOFA Health)

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 容器上下文中即可生效。