这个问题可能看起来像一个巨魔,但它实际上是关于 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方法,到目前为止一切都很好。但是 requestHandler 在哪里调用?如果正是在这个线程上调用它,我看不出它比 node.js 更好的地方。
我对 Netty 非常熟悉,它是 vert.x 所基于的网络/并发库。每个传入的连接都映射到一个可以很好地扩展的专用线程。那么..这是否意味着传入的连接也代表垂直?但是,Verticle 实例“Server”如何与那些客户端通信呢?事实上,我会说这个概念和 Node.js 一样有限。
请帮助我正确理解这些概念!
问候,克里斯