在向其他微服务发出请求之前,微服务是否应该致电健康检查?

时间:2019-04-21 16:56:51

标签: microservices health-monitoring

假设我拥有微服务A和微服务B。微服务A需要向微服务B发出HTTP请求。在执行该请求之前,微服务A是否应调用微服务B的运行状况检查端点,并且仅在运行状况检查时进行处理恢复健康?

3 个答案:

答案 0 :(得分:3)

回答:否

使用断路器模式,您可以在首选语言中找到api,还可以定义回调解决方案。

断路器是一种用于现代软件开发的设计模式。它用于检测故障,并封装了防止故障在维护期间不断发生的逻辑,临时的外部系统故障或意外的系统故障(wiki)。

服务客户端应通过代理调用远程服务,该代理的功能类似于断路器。当连续的故障数超过阈值时,断路器将跳闸,并且在超时期间内,所有调用远程服务的尝试都会立即失败。超时到期后,断路器将允许有限数量的测试请求通过。如果这些请求成功,则断路器将恢复正常运行。否则,如果出现故障,超时时间将再次开始。

答案 1 :(得分:0)

依赖运行状况检查的问题是,在成功的运行状况检查和您对微服务的调用之间,服务可能会降级。无论运行状况检查的结果如何,您的代码都应处理失败。

答案 2 :(得分:0)

我建议您使用resilience4j之类的库,具体取决于您使用的语言。它的CircuitBreaker / Bulkheads / Retries应该可以满足您的要求。 如果有负载均衡器或任何其他基础架构(例如K8),我将不检查它们的运行状况检查(准备情况和动态线路探针)。