【8】基于注册中心Nacos的动态路由案例及加载执行流程源码分析
文章目录
-
- 前言
- 实现案例
-
-
- 引入Nacos
-
- 网关添加配置
-
- 测试
-
- 执行流程
-
-
- 动态加载路由
-
- 执行过滤器
-
前言
在之前的案例中,我们的路由都是写在配置文件中的,在微服务架构中,后台有很多个,如果每一个都需要配置,那么肯定是不现实的,所以Spring Cloud Gateway提供了基于注册中心服务发现机制的动态路由。
Spring Cloud Gateway支持与Eureka、Nacos、Consul等整合开发,根据service ld自动从注册中心获取服务地址并转发请求,这样做的好处不仅可以通过单个端点来访问应用的所有服务,而且在添加或移除服务实例时不用修改Gateway的路由配置。
实现案例
1. 引入Nacos
参照这个文档Nacos系列(3)-SpringCloud集成Nacos,网关及后台服务都注册到Nacos中。

如果spring cloud 采用2020 版本,需要引入loadbalancer 依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
否则会报错:
Parameter 0 of method loadBalancerWebClientBuilderBeanPostProcessor in org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration required a bean of type 'org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction' in your configuration.