如何动态修改uri_基于Nacos实现Spring Cloud Gateway实现动态路由

本文档详细介绍了如何使用Nacos作为配置中心,实现Spring Cloud Gateway的动态路由功能。通过集成Nacos,可以在不重启网关的情况下动态地增加、修改和删除路由配置。文中提及了关键组件如Spring Cloud Gateway、Nacos客户端以及动态路由实现的Service,同时也展示了Nacos配置的定义和查看路由信息的方法。
摘要由CSDN通过智能技术生成

484568b1cf53f6ef82bf4404c6cadf8c.png

推荐阅读:

47天时间,洒热血复习,我成功“挤进”了字节跳动(附Java面试题+学习笔记+算法刷题)​zhuanlan.zhihu.com
d06878bcd2d9aaa16c7a3fd6aff87dc3.png
面试“阿里云”居然一面就惨被吊打?幸终得内推机会,4面喜提华为offer​zhuanlan.zhihu.com
66395b6e56577cf027a481fb913ffe74.png

简介

该文档主要介绍以Nacos为配置中心,实现Spring Cloud GateWay 实现动态路由的功能。Spring Cloud Gateway启动时候,就将路由配置和规则加载到内存里,无法做到不重启网关就可以动态的对应路由的配置和规则进行增加,修改和删除。通过nacos的配置下发的功能可以实现在不重启网关的情况下,实现动态路由。

集成

Spring Cloud GateWay集成

spring-cloud-starter-gateway:路由转发、请求过滤(权限校验、限流以及监控等)

spring-boot-starter-webflux:反应式Web框架

spring-boot-starter-actuator:监控系统健康

 <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-gateway</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-webflux</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-actuator</artifactId>

        </dependency>

Nacos集成

nacos-client:nacos客户端,现在用比较新的版本0.9.0

<dependency>

            <groupId>com.alibaba.nacos</groupId>

            <artifactId>nacos-client</artifactId>

            <version>0.9.0</version>

        </dependency>

动态路由

DynamicRouteServiceImpl:提供动态路由的基础方法,可通过获取bean操作该类的方法。该类提供新增路由、更新路由、删除路由,然后实现发布的功能。

@Service

public class DynamicRouteServiceImpl implements ApplicationEventPublisherAware {

    @Autowired

    private RouteDefinitionWriter routeDefinitionWriter;

    private ApplicationEventPublisher publisher;

    /**

     * 增加路由

     * @param definition

     * @return

     */

    public String add(RouteDefinition definition) {

        routeDefinitionWriter.save(Mono.just(definition)).subscribe();

        this.publisher.publishEvent(new RefreshRoutesEvent(this));

        return "success";

    }

    /**

     * 更新路由

     * @param definition

     * @return

     */

    pu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值