3

我们正在开发大量的微服务。它们都在 Kubernetes 中运行。作为操作,我需要为每个微服务定义探针。因此,我们将为每个微服务创建一个健康检查 API。这个 API 的最佳实践是什么?探针的最佳实践是什么?我们是否只需要检查服务的健康状况还是也需要检查数据库连接(以及更多)?是多余的吗?数据库也在 Kubernetes 中,并且也有自己的探针。我们可以只使用 /version API 作为探针吗?

我正在寻找反馈和文档。谢谢你。

4

2 回答 2

4

在运行状况检查中包含数据库和其他下游依赖项的参数如下:

假设您有一个负载均衡器向外界公开一些微服务。如果由于负载过大导致其中一个微服务的数据库宕机,而这并没有包含在微服务的健康检查中,负载均衡器仍然会尝试将流量引导到微服务,进一步增加数据库遇到的问题。

相反,如果健康检查包含下游依赖项,负载均衡器将停止将流量定向到微服务(并希望向用户显示一个很好的错误消息)。这将使数据库有时间从负载增加中恢复(以及操作时间做出反应)。

所以我认为使用基本/version的不是一个好主意。

于 2019-10-22T09:28:23.223 回答
2

一个微服务一般会调用其他微服务/服务来获取数据,存在下游服务宕机的可能。您可以使用“断路器模式”。如果此操作很可能失败,此模式适用于阻止应用程序尝试调用远程服务或访问共享资源。

您将在微服务中的可观察性模式(/健康检查)中找到一个模式。每个服务都需要有一个端点,可以用来检查应用程序的健康状况,例如 /health。1

于 2019-10-22T11:40:35.850 回答