如果 Web 服务器是非阻塞的,这是否意味着它处理 IO 的方式与 node.js 相同?

If a web server is non-blocking, does this mean it is handling IO the same as node.js?

我很快就会使用名为 Undertow 的服务器。 website 表示:

Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO

如果Undertow允许非阻塞,那和node.js一样吗?我指的不是语言或类似的东西。我有一个单独的项目,我认为 node.js 会是一个不错的选择,但如果我可以将一个产品用于多个项目,那将会很有帮助。

编辑:我发现了这个问题。 Java NIO non-blocking mode vs node.js asychronous operation 而且我开始觉得我把事情弄糊涂了。

来自Wikipedia

In computer science, asynchronous I/O, or non-blocking I/O is a form of input/output processing that permits other processing to continue before the transmission has finished.

非阻塞和异步是同义词,这就是所有标准 node.js 网络服务器的工作方式。

Undertow 基于 JBoss XNIO 库和 Nodejs 一样,XNIO 依赖于操作系统功能(epoll 或kqueue 可用时)接收 IO 事件通知(例如,当数据可从套接字读取时)。

在 Undertow 中,IO threads 按照此模型接受传入请求。在这些线程上执行阻塞操作意味着延迟对新传入请求的处理。 See Undertow's documentation on IO threads

在 IO 线程旁边,Undertow 管理另一个线程池,Worker threads,以处理阻塞任务(想想调用 Web 服务或查询数据库等任务。)这是你不会得到的节点

要使用工作线程,请求处理必须从 IO 线程分派。 API 全面且易于使用,同样,see Undertow's documentation 作为起点。