Spring 云网关和容错

Spring Cloud Gateway and fault tolerance

我正在阅读有关 spring 云架构和技术(如 eureka、hystrix 断路器)的内容,这些技术用于防止您的应用程序因您的某些微服务故障而停机。总而言之,spring 云建议使用 Spring 云网关作为所有微服务的入口点。所以我在质疑自己如何提供 spring 云网关本身的容错?正如我现在看到的,如果这个入口点失败,那么所有这些技术,如 eureka 和 hystrix 断路器将不可用,因为它们是在 spring 云网关级别上实现的。现在,当 spring 云网关关闭时 - 所有客户端将无法访问 spring 云网关后面的所有服务。那么如何处理这种情况呢?

老实说,我认为这与 Spring 云网关没有直接关系。问题比较"How to deploy highly available Java application?"(SCG是一个Spring的应用)。

答案取决于您使用的平台。

  • 大多数 IAAS 平台都提供自己的基础设施负载均衡器,例如 AWS 中的 ALB / ELB。

  • PAAS 平台通常包含开箱即用的 LB,例如Cloud Foundry 或 Kubernetes 可以为您做到这一点。

出于您所描述的原因 - TTL 和客户端缓存,DNS 可能不是最佳选择。此外,DNS 实际上并没有办法对上游服务进行健康检查。所以使用 DNS 需要 client-side 负载平衡,当客户端需要智能并在请求失败时使缓存无效/重试。