我正在阅读有关 Spring Cloud 架构和技术(如 eureka、hystrix 断路器)的信息,这些技术用于防止您的应用程序因某些微服务故障而停机。总而言之,Spring Cloud 建议使用 Spring Cloud Gateway 作为所有微服务的入口点。所以我在质疑自己如何提供spring cloud gateway本身的容错能力?正如我现在所看到的,如果这个入口点失败,那么所有这些技术(例如 eureka 和 hystrix 断路器)将不可用,因为它们是在 Spring Cloud Gateway 级别实现的。现在,当 Spring Cloud Gateway 关闭时,所有客户端将无法访问 Spring Cloud Gateway 后面的所有服务。那么遇到这样的情况该如何处理呢?
最佳答案
说实话,我认为这与 Spring Cloud Gateway 没有直接关系。问题更多是“如何部署高可用的Java应用程序?” (SCG 是一个 Spring 应用程序)。
答案取决于您使用的平台。
大多数 IAAS 平台都提供自己的基础设施负载均衡器,例如 AWS 中的 ALB/ELB。
PAAS 平台通常包含开箱即用的 LB,例如Cloud Foundry 或 Kubernetes 可以为您做到这一点。
由于您所描述的原因(TTL 和客户端缓存),DNS 可能不是最佳选择。此外,DNS 确实没有办法对上游服务进行健康检查。因此,使用 DNS 需要客户端负载平衡,此时客户端需要智能并在请求失败时使缓存无效/重试。
关于java - Spring Cloud Gateway 和容错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56334177/