接触 vertx 没太久,刚看到 Verticle,但是不懂这个到底是什么,官网上也没怎么细说,就说这是一个编程模型,里面是线程安全的啥的其他东西,但是它到底是什么模型,使用场景是什么这些没看到,搜索了一些相关文章,也还是不知道。 各位大佬能否用通俗的语言描述一下这个东西,感激不尽!
1
tabris17 2020-12-31 09:47:51 +08:00
Verticle 的代码同一时间只会被一个线程执行,不会有并发问题。
Verticle 之间通过 eventbus 或其他方式通信 |
2
unbright OP @tabris17 感谢大佬的回复,你说的这个我也知道,可能是我没描述清楚,比如 spring 中 controller 标识的是可以处理 http 请求,service 标识的处理业务逻辑,那 Verticle 这个模型是用来干嘛的,还是说 vertx 的 Verticle 就是一个啥都可以干的服务吗
|
3
sagaxu 2020-12-31 10:02:08 +08:00 via Android
verticle 就是一个单线程的服务,所有代码在同一个线程内运行,不需要考虑同步和线程安全
|
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 -> { ... } } } |
5
th00000 2020-12-31 10:18:48 +08:00
Vertx 跟 Spring 一系列有本质的区别
Spring 是框架, 而 Vertx 只是一个简单的基础工具集 不要两者里面的概念进行类比 verticle 什么脏活累活都可以干, 他是一个单线程的业务逻辑的载体 启动了一个 verticle 意味着你有一整套业务逻辑可以跑在一个 CPU 上 如果你有多核 CPU, 你就可以启动多个 verticle 不要觉得 Vertx 里面随便加个注解就可以跑 http 服务了 这是不可能的, 因为 Vertx ** 不是框架 ** |
8
unbright OP ❤多谢各位老大的解答,spring 一套用的多了就维持了这个思想,现在差不多理解了,Verticle 相当于是同类业务的集合,如果是不同的业务可以用不同的 Verticle,有点分布式服务的感觉。
|
9
40EaE5uJO3Xt1VVa 2020-12-31 11:18:20 +08:00
verticle 可以理解成 actor
|
10
lancelock 2020-12-31 11:25:30 +08:00
用 quarkus 吧,底层是 Vertx
|
11
Leviathann 2020-12-31 12:28:03 +08:00 via iPhone
和 actor model 的 actor 有什么区别呢
|