问题描述
我知道您可以使用 istio 在服务没有响应时打开断路器。是否可以重定向到不同的 URL,而不是返回 503
?同样的问题,但是当原始服务返回 500
时,我们可以重定向到另一个 URL 吗?
或者是否可以让 istio 提供离线模式响应?我认为最简单的方法是通过 URL 重定向到 离线模式服务 URL,但对想法持开放态度......
解决方法
我们可以重定向到另一个 URL 吗?
如果我理解正确,您是在问是否可以仅使用 istio 来做到这一点。
虽然 Istio 故障恢复功能提高了网格中服务的可靠性和可用性,但应用程序必须处理故障或错误并采取适当的回退措施。例如,当负载均衡池中的所有实例都失败时,Envoy 会返回 HTTP 503 代码。应用程序必须实现处理 HTTP 503 错误代码所需的任何回退逻辑。
还有dzone.com,Christian Posta blog post:
Istio 提高了网格中服务的可靠性和可用性。但是,应用程序需要处理错误并采取适当的回退措施。例如,当负载均衡池中的所有实例都失败时,Envoy 将返回 HTTP 503。应用程序负责实现处理来自上游服务的 HTTP 503 错误代码所需的任何回退逻辑。
使用服务网格,目前没有用于故障上下文传播的专门库,故障原因更加不透明。这并不意味着我们的应用程序不能进行回退(对于传输和客户端特定的错误)。我认为对于任何应用程序的协议来说,无论是使用特定于库的框架还是不)始终遵守它试图为客户保持的承诺,这一点非常重要。如果它发现它无法完成其预期的操作,它应该想办法优雅地降级。幸运的是,您不需要为此使用特定于应用程序的框架。大多数语言都有内置的错误和异常捕获和处理。应在这些异常路径中实施回退。
遗憾的是,答案是不,你不能。您必须在您的应用程序中实现它。
其他资源: