java - Spring Cloud Gateway 和容错

标签 java spring-cloud fault-tolerance

我正在阅读有关 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/

相关文章:

spring - 创建名为 'org.springframework.cloud.netflix.eureka.server.EurekaServerInitializerConfiguration' 的 bean 时出错

aws-lambda - 将 aws lambda 与 java 和 Spring Cloud Functions 用于其他语言是一个好主意吗?

java - Ignite - 完全同步配置

quartz-scheduler - quartz 作业详细请求恢复

multicore - 是否有支持锁步处理器的标准?

Java 8 - 带有对象和原始包装器的流

java - 在 C++ 程序中使用 Java 小程序

java - lombok 调用默认构建器的子类函数

Java : Define an enum in a framework (workaround for abstract enum)

java - Spring Cloud - Zuul 代理正在生成 No 'Access-Control-Allow-Origin' ajax 响应