java - Spring Cloud Gateway 和容错
问题描述
我正在阅读有关弹簧云架构和技术(如 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 可以为您做到这一点。
由于您所描述的原因,DNS 可能不是最佳选择 - TTL 和客户端缓存。此外,DNS 并没有办法对上游服务进行健康检查。因此,使用 DNS 需要客户端负载平衡,当客户端需要智能并在请求失败时使缓存/重试无效时。
推荐阅读
- java - 获取 JSON 数据后如何运行下一个方法?
- python - 如何从另一个类中的函数调用一个类?
- ruby-on-rails - 如何在葡萄实体的响应中修复 JSON 字符串
- javascript - 如何使用 web api 实现联系我们表单以进行免费测试
- php - 如何将变量值从一个函数发送到不同页面中的另一个函数
- swift - 无法转换“NSAttributedString.DocumentAttributeKey”类型的值,“DocumentReadingOptionKey”也不起作用
- javascript - 使用 gurnt-connect-proxy 代理到 cloudfront 得到 403 错误
- javascript - 警报未定义且“findUser”变量未定义
- c# - Visual Studio 2019 调试后自动删除 nuget 包
- github - Webhook - 无效的 HTTP 响应:404