SofaBoot--健康检查
Posted go大鸡腿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SofaBoot--健康检查相关的知识,希望对你有一定的参考价值。
前言
在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来拿到所有实现类,进行健康检查
扩展点
以上是关于SofaBoot--健康检查的主要内容,如果未能解决你的问题,请参考以下文章