【问题标题】:Do i need to do any settings on node.js app running on Google app engine?我需要对在 Google 应用引擎上运行的 node.js 应用进行任何设置吗?
【发布时间】:2016-07-12 14:51:30
【问题描述】:

这是交易,我想使用 Google App Engine,因为它易于使用且可扩展性很重要,由于 google 基础设施可扩展性,我决定尝试使用 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) 我是否需要反向代理网络服务器,以便它可以更快地为静态文件提供服务? (众所周知,node.js 不能很好地为静态文件提供服务)

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

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

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

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

问候, 杰克·莫斯科维

【问题讨论】:

  • 这属于服务器故障而不是堆栈溢出。
  • 好的,谢谢你告诉我。
  • 是的没问题:)

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


【解决方案1】:

首先,这不是提问的正确方式。请浏览常见问题解答,我仍然在回答这个问题以帮助您。但从下次开始,请先用谷歌搜索您的查询。

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

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

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

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

我是否需要反向代理网络服务器,以便它可以更快地提供静态文件? (众所周知,node.js 不能很好地为静态文件提供服务)

选择权在你,对于一般的静态内容,我个人只是依赖文件系统,没有任何明确的反向代理方法,因为最终谷歌的应用引擎正在做这件事。使用两种机制运行测试,并根据结果选择您需要执行的操作。

对于动态加载图片,我建议你使用单独的容器等。

如何在 App 引擎上运行 redis?

您不知道,应用引擎是用于编程环境的,您为什么要将其用于存储目的。使用计算引擎并安装 redis,或者您可以直接部署 bitnami 或 google 的基础架构。

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

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

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

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

【讨论】:

  • 非常感谢您花时间回答这个问题。如果可能的话,你能把问题加粗吗?更容易让未来的读者阅读。谢谢
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2017-07-28
    • 2018-04-17
    • 2016-04-04
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多