将节点生产部署到AWS的当前最佳实践是什么

Rus*_*ett 6 amazon-web-services node.js

我正在为我们的Web应用程序的一小部分评估nodejs,它似乎很适合.我知道这个节点很年轻且移动速度很快,但它似乎终于进入了"准备生产类别".然而,谷歌搜索,我在生产部署上看到的大多数信息都是一年之久,仍然警告节点可能是多么脆弱,并且可能意外地出错,然后是一些重新启动的解决方案.这并不会让我感到害怕,但似乎缺乏关于将节点可靠地放在那里的"正确方法"的官方用语.

Aar*_*our 4

cluster似乎是一个不错的选择,尽管根据您的操作系统,它可能具有较差的负载平衡性能。一个非常简单的版本是这样的:

var cluster = require('cluster')

if(cluster.isMaster) {
  var i, worker, workers;
  for(i = 0;i < numWorkers;i++) {
    worker = cluster.fork();
    workers[worker.process.pid] = worker;
  }
  cluster.on("exit", function(deadWorker) {
    delete workers[deadWorker.process.pid];
    worker = cluster.fork();
    workers[worker.process.pid] = worker;
  });
}
else {
  //be a real server process
}
Run Code Online (Sandbox Code Playgroud)

这是一个不错的选择,因为它既可以通过重新启动死进程来为您提供一定的稳定性,又可以为您提供共享负载的多个进程。请注意,cluster基本上修改了 server.listen,以便工作人员都在侦听来自正在进行侦听的主服务器的事件。这就是“免费”负载平衡的由来。

集群文档可以在这里找到: http: //nodejs.org/api/cluster.html

如果您希望能够触发某些事件,例如终止并重新启动所有进程,或者终止所有进程并关闭,那么让主进程处理几个信号也可能是值得的。