SpringCloud Gateway学习(二)--动态路由

SpringCloud Gateway学习(二)--动态路由

        之前在这篇文章使用Nacos结合SpringCloud Gateway 完成 Spring Cloud 服务路由中使用过gateway 来作为网关写了个小例子测试下,后来想了下,在生产环境不能够这样用,需要配置的太多了,而且也不现实。

         只能另想办法,最好是写在数据库里或是别的地方。这样可以灵活地添加、删除、修改,更新,刷新。然后就可以使用, 不用重启服务。

分析下gateway配置路由主要有两种方式,一种是用yml配置文件,一种是写代码里,这两种方式都是不支持动态配置的,

首先看下代码写个配置里边用到了RouteLocatorBuilder 在这个包下

然后找到了相关的这几个包分别看了下

保存删除route 在进去看下里边如何写的

它是保存了RouteDefinition

里边大概有一些属性还有filter和PredicateDefinition 这些跟配置文件或是代码里的比较相似

只要我们建立这个类存进数据库 就可以保存配置了。

下面就来看看gateway是如何加载这些配置信息的。

通过这几个实现类,再结合上面的config包下AutoConfiguration里面的Primary信息,就知道加载配置信息的顺序。

PropertiesRouteDefinitionLocator-->|配置文件加载初始化| CompositeRouteDefinitionLocator
RouteDefinitionRepository-->|存储器中加载初始化| CompositeRouteDefinitionLocator
DiscoveryClientRouteDefinitionLocator-->|注册中心加载初始化| CompositeRouteDefinitionLocator

从代码可以看到如果没有RouteDefinitionRepository的实例,则默认用InMemoryRouteDefinitionRepository。而做动态路由的关键就在这里。即通过自定义的RouteDefinitionRepository类,来提供路由配置信息。

另外 还提供了GatewayRedisAutoConfiguration。 我们也可以通过redis 结合mysql进行实现,通过定时拉取配置信息,或是通过nacos获取信息。

下篇文章写下动态路由例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值