Node.js看起来很有趣,但我必须错过一些东西- Node.js不是调好只运行在一个进程和线程上吗?
那么如何针对多核cpu和多cpu服务器进行扩展呢?毕竟,单线程服务器的速度越快越好,但对于高负载,我希望使用多个cpu。同样的道理也适用于使应用程序更快——现在的方法似乎是使用多个cpu并并行化任务。
Node.js如何适应这种情况?它的想法是以某种方式分布多个实例还是什么?
Node.js看起来很有趣,但我必须错过一些东西- Node.js不是调好只运行在一个进程和线程上吗?
那么如何针对多核cpu和多cpu服务器进行扩展呢?毕竟,单线程服务器的速度越快越好,但对于高负载,我希望使用多个cpu。同样的道理也适用于使应用程序更快——现在的方法似乎是使用多个cpu并并行化任务。
Node.js如何适应这种情况?它的想法是以某种方式分布多个实例还是什么?
当前回答
Spark2基于Spark,目前已不再维护。集群是它的继承者,它有一些很酷的特性,比如每个CPU核心生成一个工作进程,以及重生死亡的工作进程。
其他回答
我搜索了Clusterize一个应用程序所有可用的CPU内核,并在这里找到了我自己。我在哪里找到这个关键字是Pm2命令
pm2的例子
这是我的发现
Clusterize一个应用到所有可用的CPU内核: $ pm2 start -i Max
如果需要安装pm2,请使用这些命令
npm install -g pm2
yan add -g pm2
or
使用这里的链接
多节点利用您可能拥有的所有核心。 看看http://github.com/kriszyp/multi-node。
对于更简单的需求,您可以在不同的端口号上启动多个节点副本,并在它们前面放置一个负载均衡器。
可以使用纯TCP负载均衡器(HAProxy)将NodeJS扩展到多个盒子,每个盒子运行一个NodeJS进程。
如果你有一些共同的知识在所有实例之间共享,你可以使用一个中央Redis存储或类似的,然后可以从所有流程实例访问(例如从所有盒子)
我使用Node worker以一种简单的方式从我的主进程运行进程。在我们等待官方方式的时候,似乎工作得很好。
Ryan Dahl在去年夏天谷歌的技术演讲中回答了这个问题。换句话说,“只需运行多个节点进程,并使用一些合理的方法来允许它们进行通信。例如sendmsg()风格的IPC或传统的RPC”。
如果你想马上动手,看看spark2 Forever模块。它使得生成多个节点进程变得非常容易。它处理端口共享的设置,所以它们可以接受到同一个端口的连接,如果你想确保进程在死亡时重新启动,也可以自动重生。
更新:10/11/11:节点社区的共识似乎是,集群现在是管理每台机器的多个节点实例的首选模块。《永远》也值得一看。