Spring-Cloud-Gateway集成Nacos如何做负载均衡?
spring-cloud-alibaba的低版本
如果所用的SpringCloud和Nacos的版本信息如下:
<spring-cloud.version>Hoxton.SR10</spring-cloud.version> <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
网关的依赖如下:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
继续往下执行: 这里就把请求匹配到了路由表中的某条路由记录,然后把请求的url做了重写。
以上可以看出来,底层还是用ribbon做的负载均衡。
从nacos的依赖中也能看出来:
spring-cloud-alibaba的高版本
Springcloud2020开始弃用了Ribbon,因此Alibaba在2021版本nacos中删除了Ribbon的jar包,改用SpringCloudLoadbalancer 来实现负载均衡,因此如果SpringCloud的版本和SpringCloudAlibaba的版本是如下
<spring-cloud.version>2021.0.5</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
gateway是需要单独引入负载均衡组件的:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
gateway的配置:
同样打断点跟一下: