我想编写运行状况检查我们的服务消耗的所有下游服务。我们可以很容易地编写 GET 方法,它不会影响任何东西。但是当 POST/PUT 方法更改现有值时如何执行此操作?
最佳答案
根据您所在域的要求,您可能对运行状况检查有不同的期望。可能性是:
- 服务正在运行。您仅调用该服务的一种方法来仅检查返回代码。您只想确保整个服务没有崩溃等。这是最常见的健康检查形式。
- 特定功能。这就是您的想法 - 调用服务并评估返回参数。
- 全面测试。使用与授权部署之前相同的测试覆盖率调用该服务。
- 内部服务。该服务提供了一个特殊的运行状况检查端点,可以提供服务运行状况的详细 View 。
在大多数分布式系统中,仅在服务级别执行运行状况检查(选项 1),在这种情况下,选择哪个端点并不重要,有时返回是什么也并不重要(例如,可能是错误,只要不是超时)。
测试范围越深,执行所需的时间就越长,执行频率也就越低。
最彻底的健康检查是完整的单元测试(例如发布/更改和删除不同的数据集)。但是,如果这对性能影响不理想,您可以依赖以下几种方法之一:
- 使用非法参数进行发布/放置。只是为了检查服务是否返回预期的错误代码(例如与超时相比)。
- 在您的服务中实现测试模式,例如尽管传递特殊参数或使用可以运行内部测试的特殊端点。
- 让服务实现业务目的,以便完整的服务不仅具有 POST/PUT 方法,而且还具有 GET。然后您只需使用 GET 来确定服务运行状况。
关于java - 下游服务健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127889/