.NET eShop应用为何添加'self'健康检查?移除'live'标签影响如何?
.NET eShop健康检查相关问题解答
关于名为'self'的健康检查
- 无参的
AddHealthChecks()仅会注册健康检查的基础框架服务,但不会添加任何实际的检查逻辑——此时健康检查端点虽然能返回200,但只是证明框架本身在运行,并没有验证应用自身的基础可用性。 - eShop里的'self'健康检查是一个自定义的轻量检查项,通常用来验证应用的核心基础功能:比如依赖注入容器是否正常初始化、核心配置是否加载完成、应用的基础服务是否能正常响应。它是一个"应用自身是否存活"的最小验证,确保应用不是空跑的框架,而是具备基础运行能力的。
- 两者完全不同:无参调用是搭建了空的健康检查框架,'self'检查则是给框架加上了第一个实际的验证逻辑。
关于'live'标签的作用
- 'live'标签是用来给健康检查分组的,最常见的场景是配合容器编排工具(比如Kubernetes)的存活探针使用。
- 存活探针的核心作用是判断应用本身是否还在正常运行,只需要关注应用自身状态,不需要考虑依赖的外部服务(比如数据库、缓存)是否可用。此时就可以通过指定只运行带'live'标签的检查(也就是'self'检查),避免因为外部服务故障导致应用被误重启。
- 如果移除'live'标签,存活探针可能会默认运行所有健康检查,一旦某个依赖服务故障,健康检查失败,容器编排工具就会认为应用挂了而重启它,但实际上应用本身是正常的——这会导致不必要的重启,影响应用稳定性。
内容的提问来源于stack exchange,提问作者Leni Lenkov
相关产品推荐
相关产品推荐

