深入理解gateway动态路由
前言
背景
公司有个项目,有这样一个业务需求;需要根据某些业务点的具体的业务量,来新增微服务,而且只有这些特定的业务,会走这新增的微服务。gateway是一直在运行的,不可能增加一个新的服务,就更改配置重启服务,所以用到的动态路由方式。
大体的设计思路是这样的:gateway层添加新增、编辑、删除动态路由接口;另外一个门户服务,在新增或更新微服务后,就调用gateway层提供的接口,完成动态路由更新的功能。
问题及想法:
- 随之而来的是持久化问题,在调用gateway新增路由接口时,就会持久化路由到redis,但是动态路由是存在于内存中,一旦重启gateway服务,增加的动态路由就会消失;所以在gateway服务上添加了一个启动就会读取redis并生成动态路由的配置类;这样就可以保证就算是重启服务,路由也不会丢失。
- 另外一个问题是,当路由的过滤器进行修改,之前持久化redis中的却不会更新,所以决定在门户做一个重载接口,当修改过滤器或者路由配置时,可以触发重载接口,重载接口的作用是将持久化到redis的路由重新加载且放到gateway的内存中。
理解
什么动态路由
路由
gateway最主要的作用是,提供统一的入口,路由,鉴权,限流,熔断;这里的路由就是请求的转发,根据设定好的某些条件,比如断言,进行转发。
动态
动态的目的是让程序更加可以在运行的过程中兼容更多的业务场景。
源码
UML关系图
包名:org.springframework.cloud.gateway.route
项目的配置
以上是 深入理解gateway动态路由 的全部内容, 来源链接: utcz.com/a/33884.html