SpringCloud — 协同开发利器之动态路由

介绍

不知道大家有没有在协同开发的过程中遇到这样的问题

好几个人同时开发同一个服务上的不同模块,导致你需要调试的接口总是被路由到别人的服务上,非常影响调试的效率,而且人越多越难受,总是请求不到自己的服务

如果只是自测还好,可以直接调用本地服务来避免这个问题,但是如果是和前端联调,前端又是统一请求的网关地址,那就有点麻烦了

所以我就想能不能在开发调试的时候,让某个接口路由到指定的服务呢?

于是我就实现了一个库来解决这个问题

传送门:https://github.com/Linyuzai/concept/wiki/Concept-Router

SpringCloud — 协同开发利器之动态路由

通过可视化页面来配置接口路径对应的服务地址

比如我们先把所有的接口都统一路由到开发环境的服务上,然后将需要调试的模块接口路由到我们本地的服务上(路径匹配存在优先级,更精确的优先匹配)

这样我们既可以让调试的接口路由到我们自己的服务,也可以让其他的接口不路由到我们的服务,毕竟有的时候其他接口的日志可能会把我们的日志刷掉,对调试造成影响

集成

我把这个库做成零配置的方式,只需要引入相关依赖即可

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 GlobalFilterOrdered {
    //2.0.x的构造器
    public LoadBalancerClientFilter(LoadBalancerClient loadBalancer) {
        this.loadBalancer = loadBalancer;
    }
}

public class LoadBalancerClientFilter implements GlobalFilterOrdered {

   //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/**加入白名单

添加

SpringCloud — 协同开发利器之动态路由

路由有这几个参数

SpringCloud — 协同开发利器之动态路由

快捷修改

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

SpringCloud — 协同开发利器之动态路由

这个是我写前端耗时最久的功能了,你们看看我为了你们的用户体验真是煞费苦心啊(暗示一键三连,不是。。。搞串了)

是否生效

那么怎么判断路由配置是否生效呢

在Gateway转发或Feign调用时输出Router >>前缀的日志就说明路由生效了

来源:blog.csdn.net/m0_64360721/

article/details/125597943


后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

SpringCloud — 协同开发利器之动态路由

加我好友,拉你进群 

原文始发于微信公众号(Java笔记虾):SpringCloud — 协同开发利器之动态路由

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162388.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!