java读取路由列表信息_详解Spring Cloud Gateway 数据库存储路由信息的扩展方案

动态路由背景​ 无论你在使用zuul还是spring cloud gateway 的时候,官方文档提供的方案总是基于配置文件配置的方式例如:# zuul 的配置形式routes:pig-auth:path: /auth/**serviceid: pig-authstripprefix: true# gateway 的配置形式routes:- id: pigx-authuri: lb://pigx-...
摘要由CSDN通过智能技术生成

动态路由背景

​ 无论你在使用zuul还是spring cloud gateway 的时候,官方文档提供的方案总是基于配置文件配置的方式

例如:

# zuul 的配置形式

routes:

pig-auth:

path: /auth/**

serviceid: pig-auth

stripprefix: true

# gateway 的配置形式

routes:

- id: pigx-auth

uri: lb://pigx-auth

predicates:

- path=/auth/**

filters:

- validatecodegatewayfilter

配置更改需要重启服务,不能满足实际生产过程中的动态刷新、实时变更的业务需求。

​ 基于以上分析 pig已经提供了基于zuul版本的动态路由功能,附git 地址传送门,效果如下图可以实时配置修改刷新。

40699b0bb34ef4749ac637205c65e426.png

spring cloud gateway 路由加载源码

dispatcherhandler 接管用户请求

routepredicatehandlermapping 路由匹配

根据routelocator获取 routedefinitionlocator

返回多个routedefinitionlocator.getroutedefinitions()的路由定义信息

filteringwebhandler执行路由定义中的filter 最后路由到具体的业务服务中

d25de43170bb7512ee32eb1219fcf114.png

spring cloud gateway 默认动态路由实现

gatewaycontrollerendpoint 基于actuate端点的默认实现,支持jvm 级别的动态路由,不能序列化存储

bf736ef07bc768e3048b2c75389f274c.png

// 上图动态路由的信息保存的默认实现是基于内存的实现

public class inmemoryroutedefinitionrepository implements routedefinitionrepository {

private final map routes = synchronizedmap(new linkedhashmap());

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值