假设我拥有微服务A和微服务B。微服务A需要向微服务B发出HTTP请求。在执行该请求之前,微服务A是否应调用微服务B的运行状况检查端点,并且仅在运行状况检查时进行处理恢复健康?
答案 0 :(得分:3)
回答:否
使用断路器模式,您可以在首选语言中找到api,还可以定义回调解决方案。
断路器是一种用于现代软件开发的设计模式。它用于检测故障,并封装了防止故障在维护期间不断发生的逻辑,临时的外部系统故障或意外的系统故障(wiki)。
服务客户端应通过代理调用远程服务,该代理的功能类似于断路器。当连续的故障数超过阈值时,断路器将跳闸,并且在超时期间内,所有调用远程服务的尝试都会立即失败。超时到期后,断路器将允许有限数量的测试请求通过。如果这些请求成功,则断路器将恢复正常运行。否则,如果出现故障,超时时间将再次开始。
答案 1 :(得分:0)
依赖运行状况检查的问题是,在成功的运行状况检查和您对微服务的调用之间,服务可能会降级。无论运行状况检查的结果如何,您的代码都应处理失败。
答案 2 :(得分:0)
我建议您使用resilience4j之类的库,具体取决于您使用的语言。它的CircuitBreaker / Bulkheads / Retries应该可以满足您的要求。 如果有负载均衡器或任何其他基础架构(例如K8),我将不检查它们的运行状况检查(准备情况和动态线路探针)。