前言
在SpringBoot actuator框架已经实现相应的健康检查逻辑,会包括很多中间件的健康检查逻辑,本篇主要讲下健康检查以及sofaboot相关实现
actuator健康检查
-
主要代码 -
DataSourceHealthIndicator 拿数据库健康检查来讲,会判断datasource是否存在,是的话进行查询的操作,返回builder.status((valid) ? Status.UP : Status.DOWN) 数据库健康状态 -
ReactiveHealthEndpointConfiguration reactiveHealthContributors会把ReactiveHealthContributor实现类注入 -
丢到org.springframework.boot.actuate.health.HealthEndpointSupport#registry -
org.springframework.boot.actuate.health.HealthEndpointSupport#getContribution 循环,然后在这个类去getHealth去执行校验健康状态
结合k8s实现滚动发布
一直以来都会出现服务重构的时候,有一段时间是服务不可用的状态。怎么解决呢? 方案 首先k8s deployment 采用滚动发布,有两个节点可以进行切换,然后配置健康检查
springboot 引入actuator框架,配置
management:
endpoints:
web:
exposure:
include : "*"
health:
livenessState:
enabled: true
readinessState:
enabled: true
endpoint:
health:
probes:
enabled: true
group:
readiness:
include: readinessState,db
include参数是可以自己配置的,它会在请求/actuator/health/readiness的时候去检查对应中间件健康情况
SoftBoot 健康检查
通过SofaBootHealthIndicator来进行扩展健康检查,然后监听ContextRefreshedEvent 事件
com.alipay.sofa.healthcheck.ReadinessCheckListener#onContextRefreshedEvent readinessHealthCheck() com.alipay.sofa.healthcheck.HealthCheckerProcessor#readinessHealthCheck 跟actuator一样,也是LinkedHashMap来拿到所有实现类,进行健康检查
扩展点
|