当前位置: 当前位置:首页 > 时尚 > SpringBoot动态路由利器--router4j 正文

SpringBoot动态路由利器--router4j

2024-05-04 04:07:39 来源:口口声声网 作者:时尚 点击:998次

SpringBoot动态路由利器--router4j

前言

后端开发时如果同一个应用起了多个实例,动态会遇到以下问题:

  1. 无法将指定url请求强制转到个人电脑:这样会导致难以打断点调试。由利器如果是动态设置了应用的所有请求都到我的电脑,那么我在调试时其他接口无法使用。由利器
  2. 无法将指定的动态feign的url请求强制转到个人电脑
  3. 如果有人打了断点调试,很可能影响测试环境:因为网关的由利器请求和feign请求还是会经常请求到打了断点的那个电脑。

本文介绍的动态router4j可以解决这个问题,是由利器我个人写的中间件。它可以设置将指定的动态url的请求路由到指定的机器。

官网网址

router4j官网

(以后会首先在官网更新,由利器然后不定时同步到CSDN博客:http://t.csdn.cn/rGyAA)

一、动态简介

1.1 概述

router4j是由利器一个动态路由的平台,用于提高Java后端开发和调试效率。动态

使用router4j,由利器可以将某个url请求路由到指定的动态机器上,只需在可视化页面上将path绑定到应用实例的ip和端口上即可。

router4j也支持将所有请求强制转到指定机器,所以也可以用于线上不停机更新应用。

1.2 特性

  • 简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  • 无侵入:引入依赖即可,无需修改代码
  • 性能损耗小:路径的规则存放在Redis,速度很快,几乎没有性能损耗
  • 支持路径的路由:可以指定某个url路由到指定机器
  • 支持默认路由:如果url没有设置规则,则转发到设置的默认路由的实例
  • 支持强制路由:所有url强制路由到指定实例(无论是否设置了规则)
  • 支持网关:支持网关的请求转发
  • 支持feign:支持feign的请求转发
  • 支持实例运行状态查看:支持查看实例的运行状态

1.3 支持的框架

  • 网关
    • gateway(已支持)
    • zuul(待支持)
  • SpringCloud
    • loadbalancer(已支持)(SpringCloud2020及之后的版本)
    • ribbon(待支持)

1.4 框架结构

在可视化页面的配置会保存到Redis,请求进来时,会根据Redis中的配置路由到指定的实例。

1.5 下载

github:https://github.com/knife-blade/router4j

gitee:https://gitee.com/knifeedge/router4j

maven:(待上传)

二、快速入门

  • router4j-server:router4j的控制台(后端)
  • router4j-vue:router4j的控制台(前端)
  • router4j-example:示例程序

2.1 启动控制台

1.启动后端

启动router4j-server

2.启动前端

启动router4j-vue

2.2 添加依赖

1.网关添加依赖

router4j-example/gateway

com.knife.router4jrouter4j-client-gateway-boot-starter    0.0.1-SNAPSHOT

2.应用添加依赖(用于feign)

router4j-example/business/order/order-core

com.knife.router4jrouter4j-client-feign-boot-starter  0.0.1-SNAPSHOT

2.3 配置

网关和应用都要添加如下配置:

router4j:  redis:    host: localhost    password: 222333    port: 6379    # database: 0    # ssl: false    # timeout: 3s  rule:    enable: true    # pathPatternPrefix: "router4j:rule:pathPattern"    # defaultInstancePrefix: "router4j:rule:defaultInstance"  # instruction:  #   cacheKey: "router4j:instruction"

2.4 开始使用

启动router4j服务:Redis、router4j-server、router4j-vue

启动示例服务(router4j-example路径):Nacos、geteway、业务应用(business路径)(2个order,2个storage,1个account)。

业务场景:创建订单,减库存、减账户余额。请求order的controller,order分别用feign调用storage和account。

需求:将网关请求order的/order/create转到192.168.150.1:9011这个实例,将storage的feign转到192.168.150.1:9021这个实例。

1.配置网关路径的路由

访问:http://localhost:10001/

在“规则管理”中配置路径与实例的绑定:

2.配置feign路径的路由

3.请求接口测试

postman访问(请求10次):http://localhost:6001/order/order/create/?userId=1&productId=1&count=10&money=100

结果:

order:(全部都请求到了指定的实例192.168.150.1:9012)

storage:(全部都请求到了指定的实例192.168.150.1:9021)

三、使用详解

3.1 规则管理

底层是基于Spring自身的AntPathMatcher来实现的,其规则见:此文

3.1.1 新建规则

支持下拉框选择和手动输入

3.1.2 查找规则

支持下拉框选择和手动输入

3.1.3 删除规则

支持单个删除(绿色箭头所指)和批量删除(红色箭头所指)。

3.2 实例管理

3.2.1 默认路由

所有实例列表

设置为默认路由

如果url没有设置规则,则转发到设置的默认路由的实例。

支持单个设置(绿色箭头)与批量设置(红色箭头)。

3.2.2 强制路由

所有url强制路由到指定实例(无论是否设置了规则)。

支持单个设置(绿色箭头)与批量设置(红色箭头)。

四、未来计划

  1. 发布0.0.1版本
  2. 支持某个路径配置的开启关闭
  3. 支持通过eureka获取实例信息
  4. 支持zuul网关
  5. 支持Ribbon(SpringCloud2020之前)
  6. 支持在配置中设置不启用router4j
  7. 写一个正式的router4j官网网站
  8. 加入权限管理,可以用于线上不停机更新应用。
作者:百科
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜