【问题标题】:NodeJS multiple applications on same machine - about multithread同一台机器上的NodeJS多个应用程序-关于多线程
【发布时间】:2016-05-08 16:13:15
【问题描述】:
我正在阅读关于 nodejs 是单线程的,但能够使用集群模块来充分利用,我假设负载均衡器,cpu 的功能。
我对 nodejs 没有太多经验,但我想了解使用集群和在同一台机器上使用同一个数据库启动多个 nodejs 应用程序并在必要时使用特定服务与其他应用程序交互之间有什么区别,使用不同的端口,并由充当负载均衡器的主节点实例处理。
某些实例可能只留给 cpu 密集型使用(对于这些,我倾向于使用特定的 c++ 编译的专用 exe 与节点一起作为子进程运行)。
【问题讨论】:
标签:
node.js
multithreading
multiple-instances
【解决方案1】:
cluster 只是产生节点子进程,每个子进程都有一个对父进程开放的双向 IPC 通道。
cluster 还允许您自动对与节点服务器的连接进行负载平衡,或者您可以将 TCP 套接字和其他特殊对象显式传递给子进程以供它们处理而不是父进程。 cluster 文档显示了这两个功能的示例。
如果您已经编译了要按内核执行的可执行文件,并且不需要在子进程中执行任何 JavaScript,那么您可能只需跳过 cluster 并生成已编译可执行文件的 require('os').cpus().length 实例.否则,您可以使用cluster,然后从每个节点子进程中生成已编译的可执行文件,如果您需要先做一些准备,或者您有条件地生成已编译的可执行文件。