#健康检查端点设计
健康检查端点的设计需要考虑多个方面,包括检查内容、返回格式和监控。
#健康检查端点设计
HealthEndpoint.java
@RestController
@RequestMapping("/health")
public class HealthController {
@GetMapping("/live")
public ResponseEntity<Map<String, String>> liveness() {
// 存活检查:只返回 OK
return ResponseEntity.ok(Map.of("status", "OK"));
}
@GetMapping("/ready")
public ResponseEntity<HealthResponse> readiness() {
// 就绪检查:检查所有依赖
HealthResponse response = new HealthResponse();
response.setStatus(checkAllDependencies());
response.setComponents(getComponentStatus());
if (response.getStatus().equals("UP")) {
return ResponseEntity.ok(response);
}
return ResponseEntity.status(503).body(response);
}
}#健康检查返回格式
健康检查返回示例
{
"status": "UP",
"components": {
"database": {
"status": "UP",
"latency": "5ms"
},
"cache": {
"status": "UP",
"latency": "2ms"
},
"external": {
"status": "DOWN",
"error": "Connection refused"
}
},
"timestamp": "2024-01-15T10:30:00Z"
}#本章总结
核心要点:
- 健康检查端点要分层设计:存活、就绪分开
- 返回格式要标准化:便于监控和解析
- 就绪检查要检查依赖:数据库、缓存、外部服务