正好由于我找不到工作,已经转行做外卖小哥,所以有时间来聊一聊
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 发技术帖,大佬们轻喷。
1
yizmaoaa OP - -没人看啊我擦
|
2
dcoder 2020-05-21 12:41:18 +08:00
因为没人用 Vert.x 啊
|
3
presoul 2020-05-21 12:41:36 +08:00 via Android
外卖小哥 这不是钓鱼吗🐶
|
4
sagaxu 2020-05-21 12:43:49 +08:00 via Android
Vertx 现在还是非常小众的,我问过好多做过 Java 开发的,大都表示没听说过。
4.0 用于生产环境我是不建议的,尤其是刚开始熟悉的人,出了问题很难界定是用的不对还是框架 bug,还是从 3.9.1 开始吧。 我从 3.4 一直用到 3.9,几乎每个版本必更,一个遇到过两个 bug,一个是 CPU 使用率暴增的,另一个是 redis client 线程安全问题,第一个问题很快修复了,第二个严格按照一个 client 一个 vertcle 使用不会触发。 |
5
voidxx 2020-05-21 13:07:46 +08:00
昨天那个帖子第一次听说这东西
|
6
lhx2008 2020-05-21 13:11:59 +08:00
生产环境还是没什么人敢上的,如果要性能直接换 Go 还更可控一点。
|
7
zpf124 2020-05-21 13:14:24 +08:00
因为懂得真不多,网上各类文档教材也都是做个小 demo,能从请求到数据库再渲染出页面来就算完了。
从没见过几个真正的完整实现了一个基本网站的小项目。 所以只敢看个热闹,不知道该怎么用这玩意做一个和平时随手搭的 spring 项目功能一致完整项目。 |
8
PDX 2020-05-21 13:26:56 +08:00
vert.x 真的是个好东西,希望能火起来
spring 那套太笨重了 |
9
chendy 2020-05-21 13:35:48 +08:00 1
都是好东西,可是有这类需求还不如直接换语言
或者啥时候 java 本身也能用同步语法写异步了再说吧… |
10
ZSeptember 2020-05-21 13:48:56 +08:00
没必要用。
生产力重要 |
11
passerbytiny 2020-05-21 14:05:15 +08:00 via Android
我怀疑楼主本质在打广告,但是我不在意,因为我把整个反应式 web 接口都打进了“以后再说”的冷宫。
|
12
janus77 2020-05-21 14:07:52 +08:00
所以做外卖是什么体验?赚的多吗
|
15
yizmaoaa OP @sagaxu 我在上面也提出了,如果自身实力不允许,还是不要使用 4.0 。我也遇到几个 Bug,提 PR 修复掉了。
共享 Client 出问题,是 4.0 之前的 Client 和 Verticle 是不一定在同一个 Context 时会出现的。 |
16
abcbuzhiming 2020-05-21 15:37:50 +08:00
@PDX 我曾经也觉得 spring 太笨重了,想把 spring 换掉,然后我就发现,spring 最大的优势就是它涉及的东西太广了,你要换就要换整个生态圈,vert.x 在这方面还是远远不够
|
17
vxinv 2020-05-21 15:38:36 +08:00
我去 大佬 送外卖 能带上我吗
|
18
ideacco 2020-05-21 15:44:37 +08:00
某日正愁找不到 bug,结果卤煮送外卖经过,悠悠的说了一句:你上面的 CallBack 没有正确传值…………然后深藏功与名
|
19
rockyou12 2020-05-21 15:45:49 +08:00
在使用 vertx 的 mqtt client 与 emq 通信,使用还是好用,但确实看得出生态还是缺位的,连自动重连这种基础功能都没有封装……
|
20
yizmaoaa OP @rockyou12 确实。。人手不够是一个原因,毕竟官网那么多子项目都是这几个人在搞。以前 Redis 都没有自动重连这种。后面才加上的。估计其他 Client 后面也会提上日程的。。现在就是所有东西最基础的有了。但是都功能上不是很完备
|
21
BBCCBB 2020-05-21 16:06:56 +08:00
等 java 协程是最香的
|
22
sagaxu 2020-05-21 16:16:47 +08:00 via Android
@rockyou12 redis client 自动重连也是 3.9 才有,不过文档里一直都有自动重连的例子。这应该是产品理念的问题,不够接地气。
|
23
cheng6563 2020-05-21 16:18:45 +08:00 via Android
没携程都是写得很蛋疼的
|
24
sagaxu 2020-05-21 17:21:43 +08:00 via Android
@lhx2008 国内用的是不多,但也不至于不可控,毕竟只是 netty 加个皮,netty 还是相当普及的
|
25
NoKey 2020-05-21 17:29:44 +08:00
有技术的外卖小哥 👍
|
26
mango88 2020-05-21 17:41:07 +08:00
3.2 的时候上的车, 后面经历了 future 变成 promise
再后来折腾起 quarkus |
27
lancelock 2020-05-21 17:45:38 +08:00
资料太少了,没有参考,不知道怎么组织代码结构比较好
|
28
wowawesome 2020-05-21 23:10:50 +08:00
送外卖一天你大概能赚多少
|
29
yizmaoaa OP @wowawesome 200 多
|
32
yizmaoaa OP @moneyloveme8866 别开玩笑了,好好写代码。跑外卖赚不到多少钱
|
33
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 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。 中文 全中文文档、中文社区,帮助中文开发者快速上手。 |
34
HolmLoh 2020-05-22 15:43:29 +08:00
刚好最近在尝试,你说的 vertx 的第三方 client 不完善的问题确实非常严重..
rabbitMQ 的 Client 更是一穷二白,ConfirmListener 都没得添加。虽然在 issues 里面已经看到有人提到,但只是处于“在做了”的进度... 路漫漫其修远兮,希望越来越好把 |
35
ZiLong 2020-05-26 22:47:14 +08:00
不如外卖小哥系列。。。
|