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

2020-12-31 09:41:42 +08:00
 unbright

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

2734 次点击
所在节点    Java
11 条回复
tabris17
2020-12-31 09:47:51 +08:00
Verticle 的代码同一时间只会被一个线程执行,不会有并发问题。
Verticle 之间通过 eventbus 或其他方式通信
unbright
2020-12-31 09:54:36 +08:00
@tabris17 感谢大佬的回复,你说的这个我也知道,可能是我没描述清楚,比如 spring 中 controller 标识的是可以处理 http 请求,service 标识的处理业务逻辑,那 Verticle 这个模型是用来干嘛的,还是说 vertx 的 Verticle 就是一个啥都可以干的服务吗
sagaxu
2020-12-31 10:02:08 +08:00
verticle 就是一个单线程的服务,所有代码在同一个线程内运行,不需要考虑同步和线程安全
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
2020-12-31 10:18:48 +08:00
Vertx 跟 Spring 一系列有本质的区别
Spring 是框架, 而 Vertx 只是一个简单的基础工具集
不要两者里面的概念进行类比
verticle 什么脏活累活都可以干, 他是一个单线程的业务逻辑的载体
启动了一个 verticle 意味着你有一整套业务逻辑可以跑在一个 CPU 上
如果你有多核 CPU, 你就可以启动多个 verticle
不要觉得 Vertx 里面随便加个注解就可以跑 http 服务了
这是不可能的, 因为 Vertx ** 不是框架 **
sagaxu
2020-12-31 10:20:22 +08:00
@th00000 搭上 quarkus 就跟 springboot 一样了
tabris17
2020-12-31 10:33:04 +08:00
@unbright Verticle 和 Controller 的关系就相当于操作系统和应用程序的关系
unbright
2020-12-31 11:06:04 +08:00
❤多谢各位老大的解答,spring 一套用的多了就维持了这个思想,现在差不多理解了,Verticle 相当于是同类业务的集合,如果是不同的业务可以用不同的 Verticle,有点分布式服务的感觉。
40EaE5uJO3Xt1VVa
2020-12-31 11:18:20 +08:00
verticle 可以理解成 actor
lancelock
2020-12-31 11:25:30 +08:00
用 quarkus 吧,底层是 Vertx
Leviathann
2020-12-31 12:28:03 +08:00
和 actor model 的 actor 有什么区别呢

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

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

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

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

© 2021 V2EX