如果 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 作为起点。
我很快就会使用名为 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 作为起点。