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的时候会出现如下界面

我通过postman访问也是一样的结果 这里就不贴图了

报错503,能肯定的是服务器的问题

当我通过端口,跳过网关路由直接访问其中一个消费者的时候,访问一切正常

我在网上寻找方法 大都是说注册在nacos上面的消费者服务名和配置中gateway的服务名不一致导致的(当然这种情况也是存在的),那么查看配置文件中的配置的服务名和注册中心的名字进行对比

通过上面两张图片可以发现 我在配置文件中配置的消费者服务名称和注册中心的名称一致,所以并不是写错服务名称的原因。

后面想到是不是因为我的消费者服务有多个的原因,有没有可能是我没有添加负载均衡的依赖的原因呢?

然后我就在pom文件中添加了负载均衡的依赖

org.springframework.cloud

spring-cloud-loadbalancer

3.1.5

然后重新启动 访问网关层 结果如下能够正常访问到数据了

结果中的port是服务提供者的端口,consumerPort是消费者服务的端口 可以发现 进入网关后负载均衡的调用了消费者服务,然后又通过openfeign负载均衡的访问了提供者服务,至此问题得到解决

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: