gpt4 book ai didi

java - Vert.x 是否对单个 Verticle 具有真正的并发性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:07 24 4
gpt4 key购买 nike

这个问题可能看起来像一个喷子,但它实际上是关于 vert.x 如何管理并发的,因为 Verticle 本身在专用线程中运行。

让我们看看这个用 Java 编写的简单的 vert.x http 服务器:

import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.platform.Verticle;

public class Server extends Verticle {
public void start() {
vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
req.response().end("Hello");
}
}).listen(8080);
}
}

据我对文档的理解,整个文件代表一个 Verticle。所以 start 方法在专用 Verticle 线程中被调用,到目前为止一切顺利。但是 requestHandler 在哪里被调用?如果恰好在这个线程上调用它,我看不出它比 node.js 好在哪里。

我非常熟悉 Netty,它是 vert.x 所基于的网络/并发库。 每个 传入连接都映射到一个专用线程,该线程的扩展性非常好。所以.. 这是否意味着传入连接也代表 Verticle?但是 Verticle 实例“服务器”如何与这些客户端通信呢?事实上,我会说这个概念与 Node.js 一样有限。

请帮助我正确理解这些概念!

问候,克里斯

最佳答案

我和一个非常参与 vert.x 的人谈过,他告诉我我对“并发”问题的看法基本上是正确的。

但是:他向我展示了文档中的一个部分,我完全错过了其中详细解释“扩展服务器”的部分。

基本概念是,当您编写 Verticle 时,您只有单核性能。但是可以使用 -instance 参数启动 vert.x 平台,该参数定义了运行给定 Verticle 的实例的数量。 Vert.x 在幕后做了一些魔术,所以我的服务器的 10 个实例不会尝试打开 10 个服务器套接字,而是实际上打开一个。这样 vert.x 即使对于单个 Verticle 也是水平可扩展的。

这真是一个很棒的概念,尤其是一个很棒的框架!!

关于java - Vert.x 是否对单个 Verticle 具有真正的并发性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17787339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com