loveqq-mvc 再进化,又一款分布式网关框架可用
loveqq-mvc 是 loveqq-framework 框架的一个模块,旨在提供统一的 web server 抽象,统一响应式/命令式编程风格。
loveqq-mvc 中一直都有路由的概念,但是由于一直仅基于 RequestMapping 注解开发,所以路由的概念比较模糊,几乎绑定到了控制器+方法的实现上。
从而导致请求分发器(AbstractDispatcher)中耦合了大量的和 java 方法相关的处理逻辑。
因此,最新的里程碑版本,将路由的概念明确抽象出来,而路由最终如何应用则交由路由本身处理。从而请求分发器的职责更清晰,路由的扩展性更强。
最新版本将路由抽象为 Route 接口,而原有的基于控制器+方法的路由则作为一种实现而存在(HandlerMethodRoute)。
本次更新的网关路由(GatewayRoute),就是基于 Route 接口的扩展实现。
没错,仅仅扩展一下就可以实现分布式网关的功能,并且用户还可以自行扩展自己的路由实现,为更多路由场景提供了无限可能。
由于网关路由对性能要求较高,因此仅有同时支持响应式/命令式的 loveqq-boot-starter-netty 启动器支持。
下面介绍一下网关路由的配置方式:
yaml 配置风格:
k:
server:
port: 8080
virtualThread: false
gateway:
routes:
- uri: lb://demo
# 下面注释的是全配置形式,示例是两种简易形式
predicates: Path=/api/demo/** # 最简配置形式
# - id: Path
# args:
# path: /api/demo/**
filters: StripPrefix=stripPrefix=1 # 多参数简易配置形式
# - id: StripPrefix
# args:
# stripPrefix: 1
两种编码配置风格:
/**
* 以 RouteDefinition 的方式配置
*
* @return 路由定义
*/
@Bean
public RouteDefinition routeDefinition() {
return RouteDefinition.builder()
.uri("http://127.0.0.1:8080")
.predicate(RouteDefinition.Predicates.builder().id("Path").args("path", "/api/demo/**").build())
.filter(RouteDefinition.Filters.builder().id("StripPrefix").args("stripPrefix", "1").build())
.order(1)
.build();
}
/**
* 以 GatewayRoute 的方式配置,不推荐
*
* @return 路由定义
*/
@Bean
public GatewayRoute gatewayRoute(PathGatewayPredicate pathGatewayPredicate,
StripPrefixGatewayFilter stripPrefixGatewayFilter) {
pathGatewayPredicate.setConfig(new PathGatewayPredicate.Config("/api/demo/**"), null);
stripPrefixGatewayFilter.setConfig(new StripPrefixGatewayFilter.Config(1), null);
GatewayRoute route = new GatewayRoute();
route.setUri(URI.create("http://127.0.0.1:7070"));
route.setPredicates(Arrays.asList(pathGatewayPredicate));
route.setFilters(Arrays.asList(stripPrefixGatewayFilter));
route.setOrder(1);
return route;
}
网关路由代码示例已上传 loveqq-framework-example,感兴趣的童鞋可以看看。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
7-Zip 25.01 发布
7Zip是一款拥有极高压缩比的开源压缩软件。其大部分代码遵循GNU LGPL许可证。部分代码遵循 BSD 3-clause 许可证。此外,部分代码受 unRAR 许可证限制。 7-Zip 25.01 现已发布,具体更新内容包括: 处理符号链接的代码已更改,以便在从存档中提取文件时提供更高的安全性。 命令行开关 -snld20 可用于在创建符号链接时绕过默认的安全检查。 下载 Download 7-Zip 25.01 (2025-08-03) for Windows x64 (64-bit): Link Type Windows Size Download .exe 64-bit x64 1.6 MB Download 7-Zip 25.01 for another Windows platforms (32-bit x86 or ARM64): Link Type Windows Size Download .exe 32-bit x86 1.3 MB Download .exe 64-bit ARM64 1.5 MB 更多详情可查看:https://7-zip.org/
-
下一篇
BootstrapBlazor v9.9.1 发布,Bootstrap 样式的 Blazor UI 组件库
BootstrapBlazor v9.9.1 已经发布,Bootstrap 样式的 Blazor UI 组件库。 Release 2025-8-5 V9.9.1 Break changes Bugs fix(PdfViewer): 修复 Url 参数为空时渲染不正确问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/6522 fix(Collapse): 修复 Icon 与 Text 无法同时显示问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/6536 fix(BootstrapBlazorDataAnnotationsValidator): 增加 IDispose 接口防止内存泄露 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/6543 fix(INetworkMonitorService): 修复 safari ...
相关文章
文章评论
共有0条评论来说两句吧...