V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
unbright
V2EX  ›  Java

正在学习 Vertx,请教一下给位大佬, Verticle 到底是什么?

  •  
  •   unbright · 2020-12-31 09:41:42 +08:00 · 2738 次点击
    这是一个创建于 1427 天前的主题,其中的信息可能已经有所发展或是发生改变。

    接触 vertx 没太久,刚看到 Verticle,但是不懂这个到底是什么,官网上也没怎么细说,就说这是一个编程模型,里面是线程安全的啥的其他东西,但是它到底是什么模型,使用场景是什么这些没看到,搜索了一些相关文章,也还是不知道。 各位大佬能否用通俗的语言描述一下这个东西,感激不尽!

    11 条回复    2020-12-31 12:28:03 +08:00
    tabris17
        1
    tabris17  
       2020-12-31 09:47:51 +08:00
    Verticle 的代码同一时间只会被一个线程执行,不会有并发问题。
    Verticle 之间通过 eventbus 或其他方式通信
    unbright
        2
    unbright  
    OP
       2020-12-31 09:54:36 +08:00
    @tabris17 感谢大佬的回复,你说的这个我也知道,可能是我没描述清楚,比如 spring 中 controller 标识的是可以处理 http 请求,service 标识的处理业务逻辑,那 Verticle 这个模型是用来干嘛的,还是说 vertx 的 Verticle 就是一个啥都可以干的服务吗
    sagaxu
        3
    sagaxu  
       2020-12-31 10:02:08 +08:00 via Android
    verticle 就是一个单线程的服务,所有代码在同一个线程内运行,不需要考虑同步和线程安全
    micean
        4
    micean  
       2020-12-31 10:14:58 +08:00
    @unbright

    Verticle 用来承载业务,可以是 configuration, 可以是 controller,也可以是 service
    Verticle 拥有成员变量 vertx,加载时函数 start 与卸载时函数 stop
    Verticle 之间采用 vertx 的 eventbus 通讯

    比如:
    BaseController extends AbstractVerticle{
    // 扫描子类的方法,加入到路由中
    }

    UserController extends BaseController{

    @GetMapping("/user")
    Handler<RoutingContext> findUser(){
    return rctx -> { ... }
    }

    }
    th00000
        5
    th00000  
       2020-12-31 10:18:48 +08:00
    Vertx 跟 Spring 一系列有本质的区别
    Spring 是框架, 而 Vertx 只是一个简单的基础工具集
    不要两者里面的概念进行类比
    verticle 什么脏活累活都可以干, 他是一个单线程的业务逻辑的载体
    启动了一个 verticle 意味着你有一整套业务逻辑可以跑在一个 CPU 上
    如果你有多核 CPU, 你就可以启动多个 verticle
    不要觉得 Vertx 里面随便加个注解就可以跑 http 服务了
    这是不可能的, 因为 Vertx ** 不是框架 **
    sagaxu
        6
    sagaxu  
       2020-12-31 10:20:22 +08:00 via Android
    @th00000 搭上 quarkus 就跟 springboot 一样了
    tabris17
        7
    tabris17  
       2020-12-31 10:33:04 +08:00
    @unbright Verticle 和 Controller 的关系就相当于操作系统和应用程序的关系
    unbright
        8
    unbright  
    OP
       2020-12-31 11:06:04 +08:00
    ❤多谢各位老大的解答,spring 一套用的多了就维持了这个思想,现在差不多理解了,Verticle 相当于是同类业务的集合,如果是不同的业务可以用不同的 Verticle,有点分布式服务的感觉。
    40EaE5uJO3Xt1VVa
        9
    40EaE5uJO3Xt1VVa  
       2020-12-31 11:18:20 +08:00
    verticle 可以理解成 actor
    lancelock
        10
    lancelock  
       2020-12-31 11:25:30 +08:00
    用 quarkus 吧,底层是 Vertx
    Leviathann
        11
    Leviathann  
       2020-12-31 12:28:03 +08:00 via iPhone
    和 actor model 的 actor 有什么区别呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2711 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.