java – Vertx缩放每个线程的实例数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Vertx缩放每个线程的实例数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2428字,纯文字阅读大概需要4分钟。
内容图文
Vert.x是一个用于在JVM上构建响应式应用程序的工具包.
我想将vertx用于基于JVM的自动扩展RESTful后端API.
到目前为止我从文档中发现,默认情况下它占用了你机器中的内核数量,假设你有N个内核并为每个内核创建N个线程,每个线程都是一个事件总线,每个线程都包含vertx实例.
问题是,Vertx如何控制实例数量?基于负载压力?
关于控制使用给定线程运行的Verticle数量的这个事情我仍然没有得到.
请帮忙澄清这件事.
假设机器有4个内核,我编写了两个扩展为AbstractVerticle的类:
1)让一个数据库数据检索器(让我们称之为RETRIEVER或“R”)
2)另一个让我们说是一些转换器(我们称之为CONVERTER或“C”)
现在我使用vertx运行或编译并运行:
$java -jar retrievever.jar
$java -jar converter.jar
因此,由于我们有4个内核,因此在启动时Vertx将为每个内核创建4个线程.
问题1:
多少猎犬&我们默认在每个线程中都有转换器实例吗?我猜这是每个线程的一个实例?
对?所以我们总共有4个核心,总??共4个猎犬实例和4个实例.转换器?正确?
问题2:
在增加负载压力的情况下,随着对RETRIEVER(“R”)和COVERTER(“C”)的调用次数增加
(从1.000到1.000.000呼叫)Vertx会自动管理处理我们系统呼叫次数增加所需的“R”和“C”实例的数量吗?
在stackoverflow上有一个类似问题的问题:
Can I set a capacity on the Vert.x HTTP request queue?
Jordan Halterman建议:“还要注意,您可以跨多个Verticle实例扩展HTTP服务器以处理更多请求.在这种情况下,您可以使用静态变量或共享数据来跨实例共享信号量.”
问题3:
但是,如何缩放Verticle实例以处理更多请求呢?我在文档中找不到这个.
我很感激提前帮忙!
解决方法:
你误解了文档.
首先,有一个事件总线(当Vert.x在集群模式下启动时,它在Vert.x实例之间共享).它的作用是允许消息传递您的Verticle之间的通信方式.
见The Event Bus部分.
然后Vert.x中有不同类型的线程:事件循环线程和工作线程.默认情况下,Vert.x会创建与计算机上的核心一样多的事件循环线程,以及一个包含20个工作线程的池.事件循环线程用于处理异步事件(已读取文件缓冲区,已收到消息,等等).工作线程用于执行应用程序的阻塞部分.
见Multi-Reactor pattern,The Golden Rule和Running Blocking Code
Verticle是Vert.x部署单元.有三种类型的Verticle,但您应该知道的两种是“标准”Verticle和“worker”Verticle.标准Verticle在部署时会被分配一个事件循环线程.您在Verticle中处理的任何类型事件都将由此单个事件循环线程处理.保证工作者Verticle一次由单个工作线程执行.它可能不是每次都是相同的工作线程,但从不两个工作线程将并行处理工作者Verticle事件.
最后,要扩展Vert.x应用程序,可以部署多个Verticle实例.对于标准Verticle,每个实例将分配不同的事件循环,以便您可以跨核心进行扩展.
见Number of Verticles Instances
Vert.x不会自动为您调整Verticle的数量.这是您可以使用Vert.x监视工具构建的.
我相信这回答了你的三个问题.
内容总结
以上是互联网集市为您收集整理的java – Vertx缩放每个线程的实例数全部内容,希望文章能够帮你解决java – Vertx缩放每个线程的实例数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。