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

这里的交易,我想使用Google App Engine,因为它的易用性和可扩展性非常重要,由于谷歌的可扩展性,我决定尝试一下Amazon Web Service,这需要花费相当多的时间来学习和部署。 但是在Google App引擎上使用node.js我有一些疑问。 例如

1)我是否需要在每个node.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)我是否需要反向代理Web服务器,以便它可以更快地提供静态文件? (node.js已经知道服务不好的静态文件)

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

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

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

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

问候,杰克Moscovi

首先这不是提问的正确方法。 请通过常见问题,我回答这个还是帮助你。 但从下一次请首先谷歌您的查询。

我是否需要在每个node.js服务器上手动进行群集,否则App引擎会自行完成这项工作? (提高每个服务器的性能)

Google的App Engine分销渠道是独立运作的,因此与您的手动群集和所有内容无关。

我需要关心多个node.js服务器上的负载平衡吗?

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

我需要反向代理Web服务器,以便它可以更快地提供静态文件吗? (node.js已经知道服务不好的静态文件)

select是你的,对于一般的静态内容,我个人只是依靠文件系统,没有任何显式的反向代理方法,因为嘿到底谷歌的应用程序引擎是做了公平的一点。 用这两种机制运行testing,并根据结果select你需要做的。

为了dynamic加载图片,我build议你使用单独的容器等

如何在App引擎上运行Redis?

你不这样做,应用程序引擎是为了编程环境,你为什么要使用它的存储目的。 使用计算引擎并安装redis,或者您可以直接部署bitnami或google的基础架构。

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

这与您的云架构无关。 您需要在应用程序级别执行所需的操作。 话虽如此,Socket.io非常有名。

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

价格分配给予两者,只是比较它们。

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

您可以在Google云中的计算引擎实例上运行Redis。 这里是一个页面,描述如何:

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