首先我们要知道为什么会导致503,当请求发送到gateway网关的时候 网关会去微服务注册中心列表里面去找到注册信息也就是服务器名,此时我们知道远程调用需要用到以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
还有会导致这个问题原因的就是各位粗心了
uri: lb://xxx-xxx
路由地址要跟注册中心的服务器名保持一致!
如果还不行那又是一个小细节:
- id: third_party_route
uri: lb://xxx-xxxA
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/x/thirdparty/(?<segment>.*),/$\{segment}
- id: product_route
uri: lb://xxx-xxxB
predicates:
- Path=/api/product/**
filters:
- RewritePath=/x/(?<segment>.*),/$\{segment}
看图如果此时你的微服务xxA掉线那么你的xxB是无法陆游成功的,所以我们需要把xxB放到xxA的前面就OK了