学习 Vert.x 的一些疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
season8
V2EX    程序员

学习 Vert.x 的一些疑惑

  •  
      season8 2022-04-27 19:02:50 +08:00 4865 次点击
    这是一个创建于 1294 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近了解到 vert.x ,它主打 高性能,低占用,生态丰富 ,宣称可全面替代 Spring 。 作为以面 Spring-CRUD-Coder, 我啪的一声就站起来了:“恐怖如斯!!!”

    然后我学习了一下 vert.x 的官方文档和 demo 。由于初学,也没有实际应用,关于其低占用,高内存的优势没啥发言权。就说说实际写的感受和疑惑吧:

    1. 感觉自己在写 Node , 可能是 java 写多了,总感觉 node 可能性不如 java ,代码多了感觉很乱。
    2. Spring 有 bean 的管理,解耦,vert.x 自然是没有这些的,如果用到复杂的项目中,会不会整体结构很差?或者它就是适合做微服务?
    3. 国内使用 vert.x 的好像挺少的,gay-hub 上相关开源项目也不多,如何从 Spring 生态快速切换 vert.x 呢?
    第 1 条附言    2022-04-28 14:56:44 +08:00
    恕我鲁莽,在把 vert.x 和 Sping 生态对比的时候,我下意识就产生了 “这是要对标 Spring” 的概念。
    感谢 @dreamlike 指出
    24 条回复    2022-04-28 17:40:35 +08:00
    az467
        1
    az467  
       2022-04-27 19:10:06 +08:00   5
    1. 是的,你没感觉错,Vert.x 最初叫 Node.x 。
    2/3. 所以,干脆用 Quarkus 算了。
    Oktfolio
        2
    Oktfolio  
       2022-04-27 22:06:43 +08:00   1
    加个 guice
    Leviathann
        3
    Leviathann  
       2022-04-27 22:31:15 +08:00   1
    vertx 是底层库 toolkit ,不是框架级的东西,在此之上有 quarkus
    micean
        4
    micean  
       2022-04-27 22:34:29 +08:00 via Android   1
    vertx 对于普通的 web 业务在性能上可能有一毛钱优势,玩 vertx 的关键在于理解他的 verticle 是怎么跑在两种线程池上又如何做到线程安全的,否则恐怕会把并发业务跑在单线程上(当年自己踩的坑)
    yazinnnn
        5
    yazinnnn  
       2022-04-27 22:47:24 +08:00   1
    vertx 通过 verticle 和 service proxy 解耦,quarkus 是这么实现的,spring 的生态几乎无法迁移到 vertx ,想迁移就迁到 quarkus 吧
    byte10
        6
    byte10  
       2022-04-27 22:49:21 +08:00   1
    vert.x 有几个特点,天生分布式,还有异步高性能,actor 模型,一般不会出现多线程安全问题 。这玩意适合写 IO 高性能中间件类的,比如 mqtt ,网关啊等,反正不太适合做业务类的。反正我很喜欢,等协程出来,vert.x 应该会得到大量的应用,否则异步编程劝退一大波小白。
    BBCCBB
        7
    BBCCBB  
       2022-04-27 22:49:25 +08:00   1
    加个 guice,
    理解下 netty 的 io+线程模型或者 nodejs 的 io 模型.
    sparky
        8
    sparky  
       2022-04-27 23:08:47 +08:00 via Android   1
    servicecombo 了解一下
    cubecube
        9
    cubecube  
       2022-04-28 00:07:22 +08:00
    @az467 Quarkus +1
    statumer
        10
    statumer  
       2022-04-28 00:34:05 +08:00 via iPhone   1
    vertx 是 Java 异步网络编程生态的代名词,但是 Java 没协程,所以编程体验其实还不如 js 。
    Cbdy
        11
    Cbdy  
       2022-04-28 00:36:22 +08:00 via Android   1
    Spring 可以和 Vert.x 一起用,不冲突
    WispZhan
        12
    WispZhan  
       2022-04-28 07:54:02 +08:00 via Android
    @Cbdy +1
    pigspy
        13
    pigspy  
       2022-04-28 08:43:27 +08:00
    @Cbdy 是的
    season8
        14
    season8  
    OP
       2022-04-28 09:17:26 +08:00
    @az467 感谢指路
    season8
        15
    season8  
    OP
       2022-04-28 09:19:13 +08:00
    @Oktfolio 学到了!
    season8
        16
    season8  
    OP
       2022-04-28 09:29:33 +08:00
    @micean verticle 这个刚接触是有点不好理解。
    @Leviathann 原来如此
    @yazinnnn 感谢指路,学的时候不可避免想到应用场景,就想改一个服务体验一下。
    season8
        17
    season8  
    OP
       2022-04-28 09:36:23 +08:00
    @Cbdy 一起使用的话, vert.x 和 spring 分工 会不会很杂? 主要是使用 vert.x 的 actor 模型吗?
    yazinnnn
        18
    yazinnnn  
       2022-04-28 11:37:45 +08:00   1
    spring 95%的场景都是 mvc,你直接用 vertx 的 future 的话连结果都拿不出来,想在同步模型中使用 vertx future 结果,要么转换成 reactor/mutiny/CompletionStage,然后 block/await,要么直接用 coroutine,runBlocking{ future.await }

    无论哪种都比较麻烦
    season8
        19
    season8  
    OP
       2022-04-28 11:46:52 +08:00
    @yazinnnn 让我想起了从 Nodejs 回调中取结果到同步响应的折磨了
    dreamlike
        20
    dreamlike  
       2022-04-28 12:37:01 +08:00 via Android
    "它主打 高性能,低占用,生态丰富 ,宣称可全面替代 Spring" 一直没这么说过,这两个是完全的不同的东西,spring 是大而全的框架生态,vertx 只是一个 io 工具包,提供了基于 netty 生态中的缺少的各种 client 。真正和 spring 对比的是 quarkus 。
    vertx 写 web 还是推荐使用 kotlin+协程去转异步风格到同步风格,java 语法对异步原生支持不太好,除非 loom release 而且把 continuation api 放出来,不然保持性能的前提下 java 转同步风格很困难
    关于你觉得写的起来和 node 一样 其实 node vertx gin axum 这种的组织结构都是这样的
    如果你想的话还是要遵循 vertical 这种部署模式以享受 actor 模型带来的天然分布式和线程封闭的优点,如果觉得有点困难也可以主动忽略掉这种特性
    iseki
        21
    iseki  
       2022-04-28 14:00:01 +08:00
    感觉这东西的竞争对手并不是 Spring这不是一种东西啊
    season8
        22
    season8  
    OP
       2022-04-28 14:51:20 +08:00
    @dreamlike 确实没有这么说过,是我在看到它的生态后下意识脑补出来的,实在不应该。
    haah
        23
    haah  
       2022-04-28 16:53:42 +08:00
    “高性能,低占用,生态丰富”,这与编程语言有关系?
    LeegoYih
        24
    LeegoYih  
       2022-04-28 17:40:35 +08:00
    vert.x 和 Kotlin 一起用还挺香的,写过一个用户积分同步的服务,但是真的不适合复杂业务开发。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     957 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:41 PVG 04:41 LAX 12:41 JFK 15:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86