6

我正在为我们的 Web 应用程序的一小部分评估 nodejs,它似乎很适合。我知道节点很年轻而且发展很快,但它似乎终于进入了“准备生产类别”。然而,谷歌搜索,我看到的关于生产部署的大多数信息都是一年前的,并且仍然警告节点可能有多脆弱并且可能会意外出错,然后是一些重启的解决方案。这本身并没有把我吓跑,但似乎没有关于“正确方式”将节点可靠地放在那里的官方说法。

4

2 回答 2

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
}

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

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

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

于 2013-01-12T00:24:20.427 回答
0

我目前正在将 node.js 应用程序投入生产,以实现高度可扩展的社交媒体应用程序。为了创建一个重要的部署解决方案,我目前正在使用 AWS Elastic Beanstalk。可以在此处找到节点 AWS 文档 [http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html]。

我在我的测试环境中尝试过这个,虽然它有效,但它不是一个简单或容易遵循的过程。特别是我在为我的环境使用虚拟私有云的配置方面遇到了一些问题。此外,由于该服务有点新,没有很多免费的信息和故障排除建议 - 当然可以通过从亚马逊购买支持来解决。

Elastic Beanstalk 部署似乎确实为您提供了以下功能:

  • 如果您有资格获得免费层级开发环境。
  • 用于节点应用程序和节点架构的可扩展 EC2 部署。
  • 跨环境(即开发、测试、uat、生产)的一致部署。
  • 监测。
  • 部署的可重复性和自动化。
于 2013-07-22T11:39:39.660 回答