我是否需要在Google应用引擎上运行的node.js应用上进行任何设置?

时间:2016-07-10 22:48:01

标签: node.js google-app-engine amazon-ec2 google-cloud-platform

这里的交易,我想使用Google App Engine,因为它易于使用且可扩展性很重要,由于谷歌基础设施的可扩展性,我决定尝试一下亚马逊网络服务,这将需要很多时候学习和部署。但我对在Google App引擎上使用node.js几乎没有疑问。例如

1)我是否需要在每个节点上手动群集.js服务器或App引擎会自行完成? (提高每个服务器的性能)

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  // Workers can share any TCP connection
  // In this case it is an HTTP server
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);
}

2)我是否需要关心多个node.js服务器上的负载均衡?

3)我是否需要反向代理网络服务器,以便它可以更快地提供静态文件? (已知node.js很难提供静态文件)

4)如何在App引擎上运行redis?

5)我是否需要使用Channel API或Socket API来使我的node.js应用程序实时? (此应用程序具有简单的实时更新,推送通知,用户之间的聊天)

6)从长远来看App Engine更便宜还是EC2?

我知道我问了很多问题,但这些是我努力自己澄清的问题。希望有更好经验的人可以向我解释。

此致 杰克莫斯科维

2 个答案:

答案 0 :(得分:2)

您可以在App Engine(Flex)中运行Node.js应用程序,App Engine负责自动扩展Node.js应用程序和负载平衡。我认为您不需要创建群集或担心自己的负载平衡。

您可以在Google Cloud中的Compute Engine实例上运行Redis。这是一个描述如何:

的页面

https://cloud.google.com/nodejs/resources/databases/redis

答案 1 :(得分:2)

首先,这不是提出问题的正确方法。请浏览常见问题解答,我正在回答此问题仍然可以帮助您。但是从下次开始请先查询您的查询。

我是否需要在每个node.js服务器或App引擎上进行手动群集? (提高每个服务器的性能)

Google的App Engine分销渠道可独立运作,因此与您的手动群集无关。

我是否需要关心多个node.js服务器上的负载均衡?

实例的添加和删除是自动完成的,并且在它们上面有一层负载平衡机制,所以你不必担心。

我是否需要反向代理网络服务器,以便更快地提供静态文件? (已知node.js很难提供静态文件)

选择是你的,对于一般的静态内容我个人只是依赖文件系统而没有任何明确的反向代理方法,因为嘿到底谷歌的应用程序引擎正在做的相当一点。使用两种机制运行测试,并根据结果选择您需要做的事情。

为了动态加载图片,我建议您使用单独的容器等。

如何在App引擎上运行redis?

你没有,app engine用于编程环境,你为什么要将它用于存储目的。使用计算引擎并安装redis,或者您可以直接部署bitnami或google的基础架构。

我是否需要使用Channel API或Socket API来使我的node.js应用程序实时? (此应用程序具有简单的实时更新,推送通知,用户之间的聊天)

这与您的云架构无关。您需要在应用程序级别执行所需的操作。说过Socket.io很有名。

从长远来看App Engine更便宜还是EC2?

两者都给出了价格分布,只是比较它们。