【问题标题】:What are workers in NodeJSNodeJS 中的 worker 是什么
【发布时间】:2017-01-27 17:29:02
【问题描述】:

我主要使用其他编程语言进行编程,但我一直在用用户 NodeJS 制作一个 web 应用程序,并且遇到了一些我不太了解的事情。

我提到了https://nodejs.org/api/cluster.html#cluster_how_it_works

我发现这很好地解释了 NodeJS 如何处理大量请求,尽管 Node 只是单线程的。然而,让我感到困惑的是,当它说一个端口是在“许多工人”之间共享时。

现在,如果 Node 不是多线程的,那么这些工人到底是什么。例如,在 java 中,您可以使用 Completable Futures 来拥有多线程应用程序。这些导致不同的线程承担责任。

但是如果不是线程,节点中的工作人员是什么?

【问题讨论】:

    标签: javascript node.js multithreading web-services


    【解决方案1】:

    Node 可以在单个线程中轻松处理 10,000 个并发连接(有关详细信息,请参阅this answer)。对于某些阻塞的东西,它使用线程池,但这对您来说是透明的。您的 JavaScript 在每个进程中都使用单线程事件循环。

    请记住,以速度着称的网络服务器 nginx 也是单线程的。 Redis这个以速度着称的数据库也是单线程的。多线程适用于 CPU 密集型任务(当每个 CPU 使用一个线程时),但对于 Node 通常用于 I/O 密集型的任务,单线程事件循环效果更好。

    现在,回答您的问题 - 在您链接到的网站正在谈论的集群的上下文中,工作人员是一个单一的进程。这些进程中的每一个仍然有一个单线程事件循环,但可以同时执行许多这样的进程。

    有关详细信息,请参阅这些答案:

    【讨论】:

    • 非常感谢。很好的答案和资源!
    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 2019-04-24
    • 2019-04-07
    • 2022-11-22
    • 2013-01-09
    • 2013-04-14
    • 2018-11-09
    • 2016-01-01
    相关资源
    最近更新 更多