java - 下游服务健康检查

标签 java api spring-boot microservices health-monitoring

我想编写运行状况检查我们的服务消耗的所有下游服务。我们可以很容易地编写 GET 方法,它不会影响任何东西。但是当 POST/PUT 方法更改现有值时如何执行此操作?

最佳答案

根据您所在域的要求,您可能对运行状况检查有不同的期望。可能性是:

  1. 服务正在运行。您仅调用该服务的一种方法来仅检查返回代码。您只想确保整个服务没有崩溃等。这是最常见的健康检查形式。
  2. 特定功能。这就是您的想法 - 调用服务并评估返回参数。
  3. 全面测试。使用与授权部署之前相同的测试覆盖率调用该服务。
  4. 内部服务。该服务提供了一个特殊的运行状况检查端点,可以提供服务运行状况的详细 View 。

在大多数分布式系统中,仅在服务级别执行运行状况检查(选项 1),在这种情况下,选择哪个端点并不重要,有时返回是什么也并不重要(例如,可能是错误,只要不是超时)。

测试范围越深,执行所需的时间就越长,执行频率也就越低。

最彻底的健康检查是完整的单元测试(例如发布/更改和删除不同的数据集)。但是,如果这对性能影响不理想,您可以依赖以下几种方法之一:

  1. 使用非法参数进行发布/放置。只是为了检查服务是否返回预期的错误代码(例如与超时相比)。
  2. 在您的服务中实现测试模式,例如尽管传递特殊参数或使用可以运行内部测试的特殊端点。
  3. 让服务实现业务目的,以便完整的服务不仅具有 POST/PUT 方法,而且还具有 GET。然后您只需使用 GET 来确定服务运行状况。

关于java - 下游服务健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127889/

相关文章:

java - 动态添加多个表行

php - 在 Laravel 4 中将 Eloquent 模型返回为 JSON

java - 发出 GET 请求以生成数独

spring-mvc - Spring Boot + Thymeleaf : Bind empty form input to NULL-string

java - 增加一个整数的 int 值?

java - 如何创建调度程序以每晚 12:00 运行我的脚本- Selenium WebDriver

java - 为什么要使用双重检查锁定

android - Fusion Location Provider API 声称,位置更新在室内不起作用

node.js - 为什么我的 clickup 创建任务 api 调用不起作用?

java - Spring Boot 说它需要某个 bean