本节开始介绍 SpringCloud Gateway 中动态路由的实现方法,包括:
- Nacos 集成动态路由配置,更新配置文件即自动更新路由
- MySQL + 二级缓存实现,主要基于 Gateway 的一些特性进行重写,实现路由信息的自动更新
这篇文章主要介绍第一种方式:将配置文件放到 Nacos 进行托管,网关服务通过引入 Nacos 而自动更新路由配置信息。实现较为简单。
本节代码在:https://github.com/laolunsi/spring-boot-examples,参考例 23 即可。
下面进入正题。
1. 创建网关服务
创建一个 springboot gateway 网关服务,默认是从 yaml 文件中读取 route 的配置。如果想要从 nacos 中读取配置,就要引入 nacos-config
的依赖,并设置配置文件的地址。
首先创建一个空 maven 项目 spring-cloud-gateway-nacos-routes
,声明 springboot 和 springcloud 的版本,并引入 nacos。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.eknown</groupId>
<artifactId>spring-cloud-gateway-nacos-routes</artifactId>
<description>SpringCloud Gateway Nacos 动态路由示例</description>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom