Vertx扩展每个线程的实例数
Vert.x是用于在JVM上构建响应式应用程序的工具包。
我想对基于JVM的自动可伸缩RESTful后端API使用vertx。
到目前为止,我从文档中发现,默认情况下,它需要计算机中的内核数,假设您有N个内核并为每个内核创建N个线程,每个线程是一个事件总线,每个线程包含vertx实例。问题是,Vertx如何控制实例数量?基于负载压力?
关于控制通过给定线程运行的Verticles数量的问题我仍然没有得到。请帮助清除此问题。假设计算机具有4个核心,并且我编写了两个扩展为AbstractVerticle的类:
1)让我们成为一些DB数据检索器(我们将其称为RETRIEVER或“ R”)
2)再说一个转换器(我们称其为CONVERTER或“ C”)
现在,我使用vertx运行或编译并运行:
$ java -jar检索器.jar
$ java -jar converter.jar
因此,由于我们有4个核心,因此Vertx在启动时将为每个核心创建4个线程。
默认情况下,每个线程中有多少个检索器和转换器实例?我猜每个线程一个实例吗?对?因此,我们总共有4个核心的4个实例实例和4个实例。转换器?正确?
如果负载压力随着对RETRIEVER(“ R”)和COVERTER(“
C”)的调用次数的增加(从1.000到1.000.000调用)而增加,Vertx将自动管理“ R”和“ C”实例的数量需要处理增加到我们系统的呼叫数量?
Jordan
Halterman建议:“还请注意,您可以跨多个垂直实例扩展HTTP服务器以处理更多请求。在这种情况下,您可以使用静态变量或共享数据在各个实例之间共享信号量。”
但是,如何精确地缩放您的verticle实例以处理更多请求?我在文档中找不到这个。
预先感谢您!
回答:
您误解了文档。
首先,只有一个事件总线(当以群集模式启动Vert.x时,它在Vert.x实例之间共享)。它的作用是允许消息在您的顶点之间传递通信方式。
请参阅事件总线部分。
然后在Vert.x中有不同类型的线程:事件循环线程和辅助线程。默认情况下,Vert.x创建的事件循环线程与计算机上的内核一样多,并包含20个工作线程。事件循环线程用于处理异步事件(已读取文件缓冲区,已接收消息等)。辅助线程用于执行应用程序的阻塞部分。
请参阅多反应器模式,黄金法则和运行阻塞代码
顶点是Vert.x部署单元。共有三种类型的顶点,但您应该知道的两种是“标准”顶点和“工人”顶点。部署标准顶点时为其分配单个事件循环线程。您在顶点中处理的任何类型的事件都将由此单个事件循环线程处理。保证工作线程顶点一次由一个工作线程执行。每次可能不是同一工作线程,但是永远不会有两个工作线程并行处理工作线程事件。
参见顶点
最终,要扩展Vert.x应用程序,您将部署多个顶点实例。对于标准verticle,每个实例将分配一个不同的事件循环,因此您可以跨内核扩展。
请参见顶点实例数
Vert.x不会自动为您调整Verticles的数量。不过,您可以使用Vert.x监视工具来构建它。
我相信这可以回答您的三个问题。
以上是 Vertx扩展每个线程的实例数 的全部内容, 来源链接: utcz.com/qa/413269.html