如果要在 Spring webflux 和 Vert.x web 选一个,在不仅仅只考虑性能的情况下,选哪一个

2020-05-20 17:32:35 +08:00
 tctc4869

在 Spring webflux 和 Vert.x web 的两种都有基于 netty 的响应式 webmvc 框架选一个,在不仅仅只考虑性能的情况下,(例如灵活可扩展性,多种可能的开发方式选择)等,各位会选择哪一个?

除了 Spring webflux 和 Vert.x web,还有哪些呢?

11795 次点击
所在节点    Java
83 条回复
wangyanrui
2020-05-20 17:38:40 +08:00
Java 狗,选择 Spring webflux,因为文档多! doge
tctc4869
2020-05-20 17:54:05 +08:00
@wangyanrui Spring webFlux 具备动态创建或移除一个 Action 实例的功能么?
我在浏览了一下某个博客的 vert.x web 讲解,在 action 那个例子看了一下,好像 vert.x web 能动态创建 action 实例,虽然我还没用的,如果真是这样的话,那这也是很好的。
hangszhang
2020-05-20 19:07:50 +08:00
@tctc4869 动态创建有什么意义吗?
tctc4869
2020-05-20 19:21:22 +08:00
@hangszhang 动态创建的意义么,一两句话说不清楚,可以看一下这个帖子描述的问题,https://www.v2ex.com/t/671933#reply11
YUyu101
2020-05-20 19:34:21 +08:00
reactor 用不惯,vertx 用 kotlin 还行
Kaiv2
2020-05-20 19:38:10 +08:00
没用过 Spring webflux 这种异步响应式的开发模式,不过选 Spring webflux 遇到问题应该比较好解决,文档博客都比较多。

动态配置 action 的场景没遇到过,个人的实现思路,可以在数据库中建一张 action 配置表,Java 代码动态解析。
dcalsky
2020-05-20 19:40:51 +08:00
为 vertx 投一票 开发起来很爽
optional
2020-05-20 19:43:33 +08:00
还有 quarkus
tctc4869
2020-05-20 19:45:20 +08:00
@Kaiv2 动态 action 配置需要 mvc 框架有两个其中之一的可选关键配置,路由动态配置,动态 action 创建。不知道 java 现在的 mvc 框架除了 spring 拦截器和 jfinal (动态路由配置),还有哪些 mvc 提供这些功能。
路由方向改变,也就是我把请求 /test/add 在后端被检测到后,改成 /genaral/add 。响应 /genaral/add 的内容
另一个就是动态创建 action 实例了。
avalon0624
2020-05-20 19:54:18 +08:00
如果从长远维护来看,建议是 Spring webflux 。Vertx.x 更新得还是比较激进的。
sagaxu
2020-05-20 20:02:43 +08:00
webflux 生态比 vertx 差不少
tctc4869
2020-05-20 20:06:25 +08:00
@sagaxu 差? webflux 不是 Spring 的么,基于 spring 的组件还是有很多
liuxey
2020-05-20 20:11:10 +08:00
@tctc4869 #12 然而 spring 的其他组件比如 data 和连接池系列大都是同步 api,webflux 无用武地,我觉得没必要为了异步而异步
tctc4869
2020-05-20 20:16:48 +08:00
我其实并不是关系有没有异步,我想了解一下,除了异步,spring webflux,还有其他的哪些特性。spring webflux 的特点,不会就只有异步吧?
yazinnnn
2020-05-20 20:31:48 +08:00
请问 vertx 如果使用异步 api 存储数据的话,相较于普通同步存储数据(比如存到 mysql 或者 redis),有什么优势呢? 支持背压?
STRRL
2020-05-20 20:39:22 +08:00
vertx
chendy
2020-05-20 20:47:10 +08:00
@liuxey #13 data 也就 jdbc 需要用 r2dbc 来异步,其他都有原生异步…
hantsy
2020-05-20 20:48:30 +08:00
喜欢 Vertx 就用 Quarkus 吧,它深度集成了 Vertx 。使用 GraalVM Native Image 来 Build Docker Image, Docker 启动时间至少会缩短一个数量级。

之前的用简单的 CURD 带数据库 REST API 测试,启动时间可以达到 0.3 S 内。而相应的 Spring Boot 程序却要大约 10 S 左右。https://medium.com/@hantsy/kickstart-your-first-quarkus-application-cde54f469973

https://github.com/hantsy/quarkus-sample

有其它的很多文章测试,还有 Quarkus 首页的比较,运行时效率也会大大提高。

但是,Quarkus 也有一些限制,由于全部走编译处理,所以 CDI API 并没有完全实现。API 使用必须参考官方文档。另外 ,Building GraalVM Native Image 是个很费时的事情,开发时没有必要编译,可以用 CI 服务做这个工作。

Spring 也在开始着手支持 Graal,目前离产品环境使用尚早,Spring 太多的依赖运行时处理。
voidxx
2020-05-20 20:54:29 +08:00
webflux 到底有什么鸟用?
hantsy
2020-05-20 21:00:03 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/673714

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX