【Spring Cloud】協同開發利器之動態路由
作者:代碼峽谷孫臏
原文:https://blog.csdn.net/m0_64360721/article/details/125597943
介紹
不知道大家有沒有在協同開發的過程中遇到這樣的問題
好幾個人同時開發同一個服務上的不同模塊,導致你需要調試的接口總是被路由到別人的服務上,非常影響調試的效率,而且人越多越難受,總是請求不到自己的服務
如果只是自測還好,可以直接調用本地服務來避免這個問題,但是如果是和前端聯調,前端又是統一請求的網關地址,那就有點麻煩了
所以我就想能不能在開發調試的時候,讓某個接口路由到指定的服務呢?
於是我就實現了一個庫來解決這個問題
通過可視化頁面來配置接口路徑對應的服務地址
比如我們先把所有的接口都統一路由到開發環境的服務上,然後將需要調試的模塊接口路由到我們本地的服務上(路徑匹配存在優先級,更精確的優先匹配)
這樣我們既可以讓調試的接口路由到我們自己的服務,也可以讓其他的接口不路由到我們的服務,畢竟有的時候其他接口的日誌可能會把我們的日誌刷掉,對調試造成影響
集成
我把這個庫做成零配置的方式,只需要引入相關依賴即可
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>
Wiki 上可以查看最新的版本
按需求給需要配置的項目添加依賴
集成到網關(可以控制網關的轉發)
集成到服務(可以控制服務間調用)
目前支持的網關是 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 >> 前綴的日誌就說明路由生效了
結束
今天的內容就是這些啦,如果大家現在就有遇到類似的問題或者感興趣的話可以試一下哦,也可以看看其他的庫
開源庫地址:https://github.com/Linyuzai/concept/wiki/Concept-Router
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/L2_oZd9CrwoJDmsqlaB2Ew