Java Spring云网关与容错

Java Spring云网关与容错,java,spring-cloud,fault-tolerance,Java,Spring Cloud,Fault Tolerance,我在读关于spring云架构和技术(如eureka、hystrix断路器)的书,这些技术用于防止应用程序因某些微服务故障而停机。总而言之,SpringCloud建议使用SpringCloudGateway作为所有微服务的入口点。所以我在问自己,如何提供SpringCloudGateway本身的容错性?正如我现在看到的,如果这个入口点失败,那么像eureka和hystrix断路器这样的所有技术都将不可用,因为它们是在spring cloud gateway级别实现的。现在,当SpringCloud

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

老实说,我认为这与Spring Cloud Gateway没有直接关系。问题更多的是“如何部署高可用性Java应用程序?”(SCG是一个Spring应用程序)

答案取决于您使用的平台

  • 大多数IAAS平台都提供自己的基础架构负载平衡器,如AWS中的ALB/ELB

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

DNS可能不是最佳选择,因为您已经描述了TTL和客户端缓存。而且,DNS实际上没有办法对上游服务进行健康检查。因此,使用DNS需要客户端负载平衡,当客户端需要智能,并且在请求失败时使缓存无效/重试时