本节开始介绍 SpringCloud Gateway 中动态路由的实现方法,包括:
Nacos 集成动态路由配置,更新配置文件即自动更新路由
MySQL + 二级缓存实现,主要基于 Gateway 的一些特性进行重写,实现路由信息的自动更新
这篇文章主要介绍第一种方式:将配置文件放到 Nacos 进行托管,网关服务通过引入 Nacos 而自动更新路由配置信息。实现较为简单。
下面进入正题。
1. 创建网关服务
创建一个 springboot gateway 网关服务,默认是从 yaml 文件中读取 route 的配置。如果想要从 nacos 中读取配置,就要引入 nacos-config的依赖,并设置配置文件的地址。
首先创建一个空 maven 项目 spring-cloud-gateway-nacos-routes,声明 springboot 和 springcloud 的版本,并引入 nacos。
org.springframework.boot
spring-boot-starter-parent
2.3.1.RELEASE
com.eknown
spring-cloud-gateway-nacos-routes
SpringCloud Gateway Nacos 动态路由示例
1.0-SNAPSHOT
1.8
Hoxton.SR6
org.springframework.boot
spring-boot-starter
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
0.9.0.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
然后创建一个 springboot 项目,命名为:gateway-demo,引入 gateway/nacos-config 等依赖:
com.eknown
spring-cloud-gateway-nacos-routes
1.0-SNAPSHOT
gateway-demo
0.0.1-SNAPSHOT
gateway-demo
Demo project for Spring Boot
org.springframework.cloud
spring-cloud-starter-gateway
cn.hutool
hutool-core
5.3.9
org.springframework.cloud
spring-cloud-alibaba-nacos-config
0.9.0.RELEASE
org.springframework.boot
spring-boot-starter-data-redis-reactive
我们知道 SpringBoot 加载配置文件的顺序是:bootstrap.yml ->