今年看到讨论 Vert.x 的比较多。所以来聊聊 Vert.x

2020-05-21 11:55:59 +08:00
 yizmaoaa

正好由于我找不到工作,已经转行做外卖小哥,所以有时间来聊一聊

1:关于 SpringWebFlux 与 Vert.x 究竟要选那一个?

对于这两个之间要选那一个其实很简单,如果你要性能要吞吐量那么我建议 Vert.x

对于普通并发量不高,业务比较复杂的情况我建议你用 SpringBoot 。因为 WebFlux 目前在 techempower 上的性能测试并不出众,引入了复杂度但是吞吐量并没有显著的提升。这是得不偿失的。

2:使用 Vert.x 话要使用那个版本?

如果是为以后的技术选型做考虑目前不着急的话,建议等待 4.0 发布后直接上。因为变动还是比较大的。

而且相比于 3.8/3.9 API 变化是一部分,还有就是 4.0 会新添加很多让代码量减少的东西。

如果现在的项目要上的话,有能力的也可以使用 4.0 的里程碑版。因为有认识的人已经将这个版本使用在生产环境了

为稳重考虑的话也建议使用 3.8.5 以上的版本,如果使用 Kt 的话也挺舒服的。

3:担心 Vert.x 靠不靠谱的问题?

相比于 Spring 来说,Vert.x 在这个方面肯定是不如 Spring 的。

Vert.x 的主要开发人员是红帽的,开发人员基本 Base 在法国

Vert.x 项目有 3 个是直接归属于 Eclipse 基金会旗下的。仓库组织就在 eclipse-vertx 这个组织下

其他的一些文档,以及各种 Client 等等都在 vertx-x3 下。属于社区项目

Vert.x 的社区活跃度也还可以,Github 、Gitter 、Twitter 、国内 QQ 群。而且国内有不少贡献过 Vert.x 的

所以这方面可以放心,至少你出了问题是有人管的。

不过 Vert.x 在国内使用的公司不多。关于 Vert.x 的资料等等也是比较少的。还有就是招聘问题,可能比较难找到对 Vert.x 很熟悉的。

4:关于 Vert.x 的异步代码问题

在 Vert.x 里面处理异步代码目前有 4 个解决方案,CallBack 、Future/Promise 、Rxjava 、Kotlin 的协程

在 4.0 以前,代码默认都是 CallBack 的,自己针对每个 API 去封装 Future 代码量也会变多。所以 Rxjava 与 Kotlin 是一个不错的选择。

4.0 后所有的异步 API 都原生支持返回 Future,所以如果用 Java 那么 Future 就是第一选择了。

5:关于多语言

Vert.x 的多语言其实是依赖自身的一个 CodeGen 库生成的,这点在 Graalvm 后会有所改变。例如衍生的项目 ES4X

6:关于 Vertx 的生态

其实在异步生态里面,Vert.x 算目前 Java 里最好的了,所有第三方的 Client,Vert.x 都自身根据协议开发了自己的 Client,但是需要注意的是,由于人手啊等等问题,Vert.x 所提供的库都是很基础的。例如操作数据库的基本和原生 JDBC 写法差不多。。

所以为了好用,你不得不自己去在这些基础库上进一步的开发。

不过前两天看到 Hibernate 的仓库也写了一个基于 Vert.x 的异步库。相信后面开发会越来越方便的

7:如何对 Vert.x 贡献

这个其实和其他项目一样,等 4.0 发布之后可以参与翻译官方的文档啊之类的。

对于目前仓库的一些 ISSUES,你也可以在问题区参与讨论后 Fork 仓库进行代码提交,当然测试用例是必须的。

另外对于 Eclipse-Vert.x 下的项目,因为属于 Eclipse 基金会,所以你提交代码后需要签署一下 Eclipse 的一个协议。对于 Vert.x-X3 下的项目则不用。。

就先想到这里了.........

第一次在 V2 发技术帖,大佬们轻喷。

11114 次点击
所在节点    Java
38 条回复
yizmaoaa
2020-05-21 12:32:08 +08:00
- -没人看啊我擦
dcoder
2020-05-21 12:41:18 +08:00
因为没人用 Vert.x 啊
presoul
2020-05-21 12:41:36 +08:00
外卖小哥 这不是钓鱼吗🐶
sagaxu
2020-05-21 12:43:49 +08:00
Vertx 现在还是非常小众的,我问过好多做过 Java 开发的,大都表示没听说过。

4.0 用于生产环境我是不建议的,尤其是刚开始熟悉的人,出了问题很难界定是用的不对还是框架 bug,还是从 3.9.1 开始吧。

我从 3.4 一直用到 3.9,几乎每个版本必更,一个遇到过两个 bug,一个是 CPU 使用率暴增的,另一个是 redis client 线程安全问题,第一个问题很快修复了,第二个严格按照一个 client 一个 vertcle 使用不会触发。
voidxx
2020-05-21 13:07:46 +08:00
昨天那个帖子第一次听说这东西
lhx2008
2020-05-21 13:11:59 +08:00
生产环境还是没什么人敢上的,如果要性能直接换 Go 还更可控一点。
zpf124
2020-05-21 13:14:24 +08:00
因为懂得真不多,网上各类文档教材也都是做个小 demo,能从请求到数据库再渲染出页面来就算完了。
从没见过几个真正的完整实现了一个基本网站的小项目。
所以只敢看个热闹,不知道该怎么用这玩意做一个和平时随手搭的 spring 项目功能一致完整项目。
PDX
2020-05-21 13:26:56 +08:00
vert.x 真的是个好东西,希望能火起来

spring 那套太笨重了
chendy
2020-05-21 13:35:48 +08:00
都是好东西,可是有这类需求还不如直接换语言
或者啥时候 java 本身也能用同步语法写异步了再说吧…
ZSeptember
2020-05-21 13:48:56 +08:00
没必要用。
生产力重要
passerbytiny
2020-05-21 14:05:15 +08:00
我怀疑楼主本质在打广告,但是我不在意,因为我把整个反应式 web 接口都打进了“以后再说”的冷宫。
janus77
2020-05-21 14:07:52 +08:00
所以做外卖是什么体验?赚的多吗
yizmaoaa
2020-05-21 14:43:00 +08:00
@janus77 不多。几千块钱
yizmaoaa
2020-05-21 14:46:13 +08:00
@presoul 没钓鱼,因为我真是在送外卖。
yizmaoaa
2020-05-21 14:49:17 +08:00
@sagaxu 我在上面也提出了,如果自身实力不允许,还是不要使用 4.0 。我也遇到几个 Bug,提 PR 修复掉了。

共享 Client 出问题,是 4.0 之前的 Client 和 Verticle 是不一定在同一个 Context 时会出现的。
abcbuzhiming
2020-05-21 15:37:50 +08:00
@PDX 我曾经也觉得 spring 太笨重了,想把 spring 换掉,然后我就发现,spring 最大的优势就是它涉及的东西太广了,你要换就要换整个生态圈,vert.x 在这方面还是远远不够
vxinv
2020-05-21 15:38:36 +08:00
我去 大佬 送外卖 能带上我吗
ideacco
2020-05-21 15:44:37 +08:00
某日正愁找不到 bug,结果卤煮送外卖经过,悠悠的说了一句:你上面的 CallBack 没有正确传值…………然后深藏功与名
rockyou12
2020-05-21 15:45:49 +08:00
在使用 vertx 的 mqtt client 与 emq 通信,使用还是好用,但确实看得出生态还是缺位的,连自动重连这种基础功能都没有封装……
yizmaoaa
2020-05-21 15:53:11 +08:00
@rockyou12 确实。。人手不够是一个原因,毕竟官网那么多子项目都是这几个人在搞。以前 Redis 都没有自动重连这种。后面才加上的。估计其他 Client 后面也会提上日程的。。现在就是所有东西最基础的有了。但是都功能上不是很完备

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

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

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

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

© 2021 V2EX