介绍
不知道大家有没有在协同开发的过程中遇到这样的问题
好几个人同时开发同一个服务上的不同模块,导致你需要调试的接口总是被路由到别人的服务上,非常影响调试的效率,而且人越多越难受,总是请求不到自己的服务
如果只是自测还好,可以直接调用本地服务来避免这个问题,但是如果是和前端联调,前端又是统一请求的网关地址,那就有点麻烦了
所以我就想能不能在开发调试的时候,让某个接口路由到指定的服务呢?
于是我就实现了一个库来解决这个问题
❝
传送门:https://github.com/Linyuzai/concept/wiki/Concept-Router
❞

通过可视化页面来配置接口路径对应的服务地址
比如我们先把所有的接口都统一路由到开发环境的服务上,然后将需要调试的模块接口路由到我们本地的服务上(路径匹配存在优先级,更精确的优先匹配)
这样我们既可以让调试的接口路由到我们自己的服务,也可以让其他的接口不路由到我们的服务,毕竟有的时候其他接口的日志可能会把我们的日志刷掉,对调试造成影响
集成
我把这个库做成零配置的方式,只需要引入相关依赖即可
implementation 'com.github.linyuzai:concept-router-spring-boot-starter:1.0.0'
<dependency>
<groupId>com.github.linyuzai</groupId>
<artifactId>concept-router-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
按需求给需要配置的项目添加依赖
-
集成到网关(可以控制网关的转发) -
集成到服务(可以控制服务间调用)
目前支持的网关是Gateway,支持的服务间调用是Feign
主要是这两个组件感觉大家用的比较多,而像Zuul或是Dubbo如果有需求的人比较多的话可能会在之后进行补充
对于不同的Spring Cloud和Spring Boot版本也是有兼容的,所以大家不用担心版本适配问题
但是不能保证在某些版本中能完全兼容,比如像2.0.x和2.2.x的gateway代码
public class LoadBalancerClientFilter implements GlobalFilter, Ordered {
//2.0.x的构造器
public LoadBalancerClientFilter(LoadBalancerClient loadBalancer) {
this.loadBalancer = loadBalancer;
}
}
public class LoadBalancerClientFilter implements GlobalFilter, Ordered {
//2.2.x的构造器
public LoadBalancerClientFilter(LoadBalancerClient loadBalancer,
LoadBalancerProperties properties) {
this.loadBalancer = loadBalancer;
this.properties = properties;
}
}
不同版本间的一些代码差异可能会导致一些问题,因为低版本的LoadBalancerClientFilter真的是一个方法写到头,一点机会都不给只能重写覆盖了,不过其他的场景一般还是留了接口让我能够自定义插入一些逻辑的
目前经过测试的是2.0.x,2.2.x,2.6.x,如果大家在集成之后出现报错或是不生效的情况,可以联系我并提供Spring Cloud和Spring Boot版本就行了
配置
虽说可以零配置,不过也提供了一些配置可用于自定义
concept:
router:
enabled: true #是否启用路由功能
logger:
enabled: true #是否启用路由日志功能
banner:
enabled: true #是否输出Banner
repository:
type: local #路由数据存储类型,内存/本地文件
local:
path: /concept/router #本地文件的存储位置
management:
enabled: true #是否启用可视化页面
如果是线上环境的话大家可以通过concept.router.enabled=false
来关闭功能,或者直接不把依赖打包进去
使用
当我们在项目中集成之后就可以通过{服务地址}/concept-router/index.html
来访问可视化页面了,这里注意如果做了权限的话记得把/concept-router/**
加入白名单
添加

路由有这几个参数

快捷修改
提供了在列表上双击(匹配服务,匹配路径,服务地址)进行快速修改的功能

这个是我写前端耗时最久的功能了,你们看看我为了你们的用户体验真是煞费苦心啊(暗示一键三连,不是。。。搞串了)
是否生效
那么怎么判断路由配置是否生效呢
在Gateway转发或Feign调用时输出Router >>前缀的日志就说明路由生效了
来源:blog.csdn.net/m0_64360721/
article/details/125597943
构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以
交流技术
、职位内推
、行业探讨
为主
广告人士勿入,切勿轻信私聊,防止被骗
原文始发于微信公众号(Java笔记虾):SpringCloud — 协同开发利器之动态路由
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162388.html