我们正在开发大量的微服务。它们都在 Kubernetes 中运行。作为操作,我需要为每个微服务定义探针。因此,我们将为每个微服务创建一个健康检查 API。这个 API 的最佳实践是什么?探针的最佳实践是什么?我们是否只需要检查服务的健康状况还是也需要检查数据库连接(以及更多)?是多余的吗?数据库也在 Kubernetes 中,并且也有自己的探针。我们可以只使用 /version API 作为探针吗?
我正在寻找反馈和文档。谢谢你。
我们正在开发大量的微服务。它们都在 Kubernetes 中运行。作为操作,我需要为每个微服务定义探针。因此,我们将为每个微服务创建一个健康检查 API。这个 API 的最佳实践是什么?探针的最佳实践是什么?我们是否只需要检查服务的健康状况还是也需要检查数据库连接(以及更多)?是多余的吗?数据库也在 Kubernetes 中,并且也有自己的探针。我们可以只使用 /version API 作为探针吗?
我正在寻找反馈和文档。谢谢你。
在运行状况检查中包含数据库和其他下游依赖项的参数如下:
假设您有一个负载均衡器向外界公开一些微服务。如果由于负载过大导致其中一个微服务的数据库宕机,而这并没有包含在微服务的健康检查中,负载均衡器仍然会尝试将流量引导到微服务,进一步增加数据库遇到的问题。
相反,如果健康检查包含下游依赖项,负载均衡器将停止将流量定向到微服务(并希望向用户显示一个很好的错误消息)。这将使数据库有时间从负载增加中恢复(以及操作时间做出反应)。
所以我认为使用基本/version
的不是一个好主意。
一个微服务一般会调用其他微服务/服务来获取数据,存在下游服务宕机的可能。您可以使用“断路器模式”。如果此操作很可能失败,此模式适用于阻止应用程序尝试调用远程服务或访问共享资源。
您将在微服务中的可观察性模式(/健康检查)中找到一个模式。每个服务都需要有一个端点,可以用来检查应用程序的健康状况,例如 /health。1