在 Vert.x 应用程序中部署 Verticle 时,文档似乎非常不清楚 Verticle“实例”实际上是什么,以及它与线程和线程池的关系。事实上,与实际线程模型相关的任何事情都不清楚......
从文档中;
Vert.x 在这里的工作方式不同。每个 Vertx 实例都维护多个事件循环,而不是单个事件循环。默认情况下,我们根据机器上可用内核的数量来选择数字,但这可以被覆盖。
也来自文档;
要在 Vert.x 服务器中实例化的 Verticle 实例数。每个 Verticle 实例都是严格的单线程的,因此要跨可用内核扩展您的应用程序,您可能需要部署多个实例。如果省略,将部署单个实例。我们稍后将在本用户手册中详细讨论缩放。
假设我想部署一个简单的 REST API,它被编写为单个 Verticle,并且我想让它在可用的 CPU 内核上有效地扩展。我应该怎么办?
- 我是否为每个 CPU 核心部署一个 Verticle 实例?
- 我是否部署了单个垂直实例,至少根据文档的一部分,单个垂直实例已经维护了多个事件循环(因为我假设 1 个事件循环 = 1 个线程)?
- 如果我部署 4 个 Verticle 实例,实际会创建/使用哪些线程和/或线程池?