我有 2 个托管服务,必须检查彼此的健康状况。如何在 C# 控制台应用程序(托管服务)中实现健康检查。检查托管服务的健康状况的参数是什么。
1 回答
如果您可以选择通过 HTTP 进行健康检查,我建议您查看 .Net Core 的内置健康检查功能。它在您的应用程序中设置了一个 REST 端点,您还可以在其中实现自定义健康检查行为。
请参阅:https ://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-3.1
从技术上讲,您可以通过另一个托管服务调用公开的健康检查 API。
您可以将运行状况检查端点添加到您的每个托管服务。然后每个服务都可以访问,为什么 HTTP/REST 和服务 A 可以调用服务 B 的健康检查 API,反之亦然。
例如,服务 B 然后向 http://service-a-base-url/health 和服务 A 向 http://service-b-base-url/health 发出 http 请求
如果两个服务都在同一主机上运行,您可以使用端口过滤,以便每个服务运行状况检查端点侦听不同的端口。在这两种情况下,您也可以使用localhost作为主机名,只是使用不同的端口。另请参阅此答案:https ://stackoverflow.com/a/57906886/7730554
注意:如果这是关于监控您的应用程序,我建议考虑通过使用一些监控服务而不是让您自己的应用程序进行健康检查以进行监控的集中监控方法。