Gateway结合nacos无效
版本如下:
com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0
org.springframework.cloud:spring-cloud-starter-gateway:3.1.1
配置如下:
yml
server:
port: 7000
spring:
application:
name: springCloudGateway
cloud:
nacos:
discovery:
server-addr: xxx.xxx.xxx.xx:8848
username: xxx
password: xxx
gateway:
routes:
- id: product_route
uri: lb://nacos-consumer
predicates:
- Path=/consumer/**
filters:
- StripPrefix=1
我测试过了,使用http://localhost:xxx的方式就可以访问
lb:和http:的区别就在于,一个是固定的访问地址,一个是使用负载均衡去访问,所以问题出来负载均衡这里
在网上找到解决方案说是添加一个loadBalancer依赖就好了
xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.1</version>
</dependency>
问题解决!但为什么我添加一个负载均衡依赖就好了?
我科学上网了一下找到了这个为什么会这样,如下:
在Spring Cloud Gateway 2.x及以上版本中,官方文档已经明确表示不再支持Ribbon作为默认的负载均衡器实现。因此,从这个版本开始,Spring Cloud Gateway不再提供自带的负载均衡器组件。
不过,Spring Cloud Gateway可以与Spring Cloud LoadBalancer集成来实现负载均衡的功能。Spring Cloud LoadBalancer是一个独立的模块,它提供了一个基于服务实例列表的负载均衡器实现,可以与Spring Cloud Gateway和其他Spring Cloud组件一起使用。
也就是说如果你想要在Spring Cloud Gateway中使用lb://service-name这种形式的URI来访问Nacos注册中心的服务,那么需要在依赖中引入Spring Cloud LoadBalancer的相关依赖。