如何处理 zuul 中的 hystrix 回退?

How to handle hystrix fallback in zuul?

我是微服务初学者,请帮我解决这个问题,

我正在使用 spring boot、zuul、hystrix 和 eureka 开发简单的微服务项目。一个服务调用来自另一个服务的数据。但是当服务宕机时,response是500,所以需要重新发送请求才能得到预期的结果。

但最终用户不应该看到。如果之前的请求被 failed/short 绕过,那么有没有办法用 zuul 再次为失败的服务发送一个 http 请求。

提前致谢。

首先对于不可用的服务,http 代码 503 可能更合适。

然后 Zuul 是一个 api 网关而不是服务网格。我认为你在这里混淆了这两个概念。

api 网关的目标是接受来自网络外部的流量并在内部分发...因此抽象了他的复杂性(它实际上是一个分布式 facade/router)。 示例:zuul, spring cloud gateway

服务网格充当微服务之间的代理,并带来通信方面,如自动重试、断路器、跟踪、日志记录。

示例Istio, Linkerd

但是你可以不用服务网格来实现这个问题。您的调用者微服务可以通过嵌入一个强大的库,如 resilience4j 来实现超时、重试和断路器来保护自己。(hystrix 实际上已经到了生命的尽头)

该库将为您提供一个 api 允许您通过一个特殊的代理来包装与外部(其他微服务)的通信,该代理将为您处理重试 or/and 断路器。 你应该看看:https://github.com/resilience4j/resilience4