【问题标题】:NodeJS Cluster, useful use cases?NodeJS 集群,有用的用例?
【发布时间】:2019-03-17 04:09:47
【问题描述】:

我正在研究用例,向几个朋友介绍使用 nodejs 进行集群计算。

我的目标是解释一些现实生活中的 nodejs 集群案例,以及为什么 nodejs 有助于创建这些特定案例。

到目前为止,确实有一个案例吸引了我:

  • 集群网络服务器(如 REST 的 API 服务器)(原因:负载平衡)

我看到了一些关于进行昂贵计算的例子,提到了在不同的线程/处理器上这样做的好处。

这让我想到了拥有工作池,每个池执行不同的部分,例如仅处理与数据库的连接、生成 PDF 等。

试图了解worker与master之间的联系,我fiddled around我仍然不确定:

  • nodejs 集群是否只适合让相同的进程能够并行运行(文档建议这样做)
  • 或者让 nodejs 集群工作者像池中的单独任务一样有意义。

.. 导致:哪些用例实际上是 nodejs 的实际用例?

希望这是可以理解的。 非常欢迎提出意见。

【问题讨论】:

  • 另外,您可能会发现我在这里的回答很有帮助:stackoverflow.com/a/19324665/362536 我几年前写的,但我认为它仍然是最新的。
  • @Brad “Node.js 有点不同。从 JavaScript 的角度来看,它是单线程的,但磁盘和网络 IO 等其他任务会在单独的线程上自动处理。”这很有趣,谢谢

标签: node.js cluster-computing


【解决方案1】:

nodejs 集群是否只适合让相同的进程能够并行运行(文档建议这样做)

有点。内置集群模块只是产生恰好是正在运行的相同脚本的子进程。您总是可以通过其他方式执行子进程。

或者让nodejs集群工作者像池中的单独任务一样有意义

任何对您和您的应用程序都有效的方法!如果你有理由不遵守约定,那就没有理由不遵守。

导致:哪些 [集群] 用例实际上是使用 nodejs 的真实世界?

(我假设您问的是集群的实际用例。)

对于大多数应用程序(我见过并使用的应用程序),可以通过单个 Node.js 进程完全饱和/利用系统资源。仅仅因为您的代码是单线程的并不意味着您调用的所有本机代码都是。许多人使用集群模块,因为他们认为这是充分利用主机上所有 CPU 的唯一方法。这是对 Node.js 文档的常见误解。

我确信有一些应用程序在运行 JavaScript 的单线程中只是受 CPU 限制,但对于许多应用程序来说,I/O 是一个更大的障碍。

【讨论】:

  • 嗨,谢谢。使用集群模块(使用所有 CPU)也是我认为的唯一方法 - 误解:还有什么?
猜你喜欢
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2017-10-25
  • 2014-06-01
  • 1970-01-01
相关资源
最近更新 更多