今年看到讨论 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 发技术帖,大佬们轻喷。

11112 次点击
所在节点    Java
38 条回复
BBCCBB
2020-05-21 16:06:56 +08:00
等 java 协程是最香的
sagaxu
2020-05-21 16:16:47 +08:00
@rockyou12 redis client 自动重连也是 3.9 才有,不过文档里一直都有自动重连的例子。这应该是产品理念的问题,不够接地气。
cheng6563
2020-05-21 16:18:45 +08:00
没携程都是写得很蛋疼的
sagaxu
2020-05-21 17:21:43 +08:00
@lhx2008 国内用的是不多,但也不至于不可控,毕竟只是 netty 加个皮,netty 还是相当普及的
NoKey
2020-05-21 17:29:44 +08:00
有技术的外卖小哥 👍
mango88
2020-05-21 17:41:07 +08:00
3.2 的时候上的车, 后面经历了 future 变成 promise
再后来折腾起 quarkus
lancelock
2020-05-21 17:45:38 +08:00
资料太少了,没有参考,不知道怎么组织代码结构比较好
wowawesome
2020-05-21 23:10:50 +08:00
送外卖一天你大概能赚多少
yizmaoaa
2020-05-22 04:14:28 +08:00
@wowawesome 200 多
yizmaoaa
2020-05-22 04:15:50 +08:00
@lancelock 代码结构比较自由,这个看个人.....
yizmaoaa
2020-05-22 04:16:04 +08:00
@NoKey 见笑了。。
yizmaoaa
2020-05-22 04:16:37 +08:00
@moneyloveme8866 别开玩笑了,好好写代码。跑外卖赚不到多少钱
cloudopt
2020-05-22 14:49:18 +08:00
推荐 Cloudopt Next: https://github.com/cloudoptlab/cloudopt-next

Cloudopt Next 底层是基于 Vertx 的,做了大量的封装,有效的降低了使用成本以及配备了大量平常会使用的插件,帮助后端开发者快速上手、快速开发。


Cloudopt Next 是基于 Kotlin 、Vertx 的一个面向下一代的极其轻量级的微服务框架,您可以处理 Url 的解析,数据的封装,Json 的输出等等,从根本上减少开发时间、提升开发体验。Cloudopt Next 吸收了 Spring Boot 、JFinal 、Resty 、Vertx 等优秀项目的思想,不仅拥有非常好的开发体验还拥有着极低的学习曲线。

** Cloudopt Next 主要拥有以下特点:**

简单 极简设计,几乎不要任何配置,不依赖 Tomcat 、Jetty 等 Web 容器。

异步 基于 vertx 轻松实现高性能的异步服务。

扩展 支持 vertx 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。

中文 全中文文档、中文社区,帮助中文开发者快速上手。
HolmLoh
2020-05-22 15:43:29 +08:00
刚好最近在尝试,你说的 vertx 的第三方 client 不完善的问题确实非常严重..
rabbitMQ 的 Client 更是一穷二白,ConfirmListener 都没得添加。虽然在 issues 里面已经看到有人提到,但只是处于“在做了”的进度...
路漫漫其修远兮,希望越来越好把
ZiLong
2020-05-26 22:47:14 +08:00
不如外卖小哥系列。。。
yizmaoaa
2020-05-27 09:20:01 +08:00
@ZiLong 想想我找不到工作,去送外卖 你就知道我不如你
byte10
2021-02-21 17:29:53 +08:00
@rockyou12 现在有了吗,最近也搞 mtqq
byte10
2021-03-22 21:25:57 +08:00
@byte10 有的,不知道质量如何

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

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

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

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

© 2021 V2EX