1.引用spring cloud gateway+nacos配置中心
2.微服务+分布式(本节与分布式问题无关)项目
3.路由规则:网关端口:8085;第三方端口:8081,8086
第三方单独访问路径localhost:8081/test/getUserTest?id=2
希望路由到:localhost:consumer-service/test/getUserTest?id=2 (这里我写了两个消费者服务,服务名一致 ) 然后再通过openfeign去访问服务提供者localhost:provider-service/user/getUser?id=2((这里我写了3个服务提供者服务,服务名一致)
(8085是网关层的端口,8081,8086是消费者端口,8082,8083,8084是服务提供者端口)
问题当我访问gateway的时候会出现如下界面
![](https://i-blog.csdnimg.cn/blog_migrate/115b6f21411227d7b3578eadf0020f0d.png)
我通过postman访问也是一样的结果 这里就不贴图了
报错503,能肯定的是服务器的问题
当我通过端口,跳过网关路由直接访问其中一个消费者的时候,访问一切正常
![](https://i-blog.csdnimg.cn/blog_migrate/cf302e28a37d76eb82bc54ef39641932.png)
我在网上寻找方法 大都是说注册在nacos上面的消费者服务名和配置中gateway的服务名不一致导致的(当然这种情况也是存在的),那么查看配置文件中的配置的服务名和注册中心的名字进行对比
![](https://i-blog.csdnimg.cn/blog_migrate/b8d3ea6fc90b50de15d0d86db1a0797e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/12916c91f7db9fb29d272cc826a9b471.png)
通过上面两张图片可以发现 我在配置文件中配置的消费者服务名称和注册中心的名称一致,所以并不是写错服务名称的原因。
后面想到是不是因为我的消费者服务有多个的原因,有没有可能是我没有添加负载均衡的依赖的原因呢?
然后我就在pom文件中添加了负载均衡的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>3.1.5</version>
</dependency>
然后重新启动 访问网关层 结果如下能够正常访问到数据了
![](https://i-blog.csdnimg.cn/blog_migrate/3cdb391f11d6093e358664d1fa1632e1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c78b9c1f81e9f5e4b90db65ee014a6de.png)
结果中的port是服务提供者的端口,consumerPort是消费者服务的端口 可以发现 进入网关后负载均衡的调用了消费者服务,然后又通过openfeign负载均衡的访问了提供者服务,至此问题得到解决