A-A+
Chatgpt-Springboot readiness的后续实践
先说结论吧:
- 大部分情况下,当需要了解某个知识点的时候,可以由chatgpt的回答入手和拓展。
- 看起来知识点是成体系的,但是细节上仍旧需要通过官方文档和动手试验来确定可靠性。
- 对于经常更新的技术来说,chatgpt的信息相对滞后。
下面就开始动手确认一下吧。
增加maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
版本号:2.2.5.RELEASE
在application.yaml中增加如下配置:
management:
endpoint:
health:
show-details: always
group:
readiness:
include: db
health:
defaults:
enabled: false
db:
enabled: true
启动应用后,GET请求地址:
http://localhost:8080/actuator/health/
页面输出:
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"result": 1,
"validationQuery": "/* ping */ SELECT 1"
}
},
"my": {
"status": "UP"
}
},
"groups": [
"readiness"
]
}
基本上符合Chatgpt给出的答案:
- 设置 management.endpoint.health.show-details 属性为 always 来启用 readiness 端点。
- group用来分组,include用来控制该分组中包含哪些检查器。
- 通过自定义编码实现datasource,使用默认的db检查器也可以监控。
但是有一些并没有提示:
- 使用health.defaults.enable来开启或关闭默认检查器。
- readiness只是分组,并不是自带的原生接口。
通过试验后,有一些问题需要注意:
- 当db意外停止后,如果没有设置数据库超时时间,整个接口就会挂起没响应。
整体上来说,2.2.x这个版本,组件并不太完善,所以之后我又测试了2.6.x,体验就完全不一样了。
版本号:2.6.4
在application.yaml中增加如下配置:
management:
endpoint:
health:
show-details: always
#永远打开k8s的健康检查,否则只有在k8s容器中会开启liveness和readiness
probes:
enabled: true
#readiness包含db检查器,不配置就不检查db
group:
readiness:
include: db
#开启哪些检查器
health:
defaults:
enabled: false
db:
enabled: true
diskspace:
enabled: true
和之前主要有两个不同点:
- 增加了probes属性,专门用来适配k8s。
- db检查器很丝滑,不会产生挂起没响应的问题。
最后,几点建议:
- 想要了解知识点的时候,可以通过chatgpt大概了解一下。
- 带着聊天过程中产生的疑问去查阅官方文档或其它资料。
- 动手实践一下,去伪存真。
重复以上过程,将chatgpt作为学习的助手,在给出的答案上进行决策,效率会有很大的提升。
