node.js - 在AWS或GCP上部署Node + MongoDB API

标签 node.js mongodb amazon-web-services api google-cloud-platform

我正在开发 Node + MongoDB API,该 API 部署在 Google Cloud Platform 上的虚拟机上。目前,数据存储在虚拟机上运行的 MongoDB 实例中。

运行本地 MongoDB 实例进行生产是一种好的做法吗?提供 MongoDB 的各种云服务如何相互比较?确保 API 可扩展的一些良好实践有哪些?与虚拟机相比,将 API 作为容器部署到 Kubernetes 是否可以提供更好的结果?

最佳答案

对于您想要扩展的服务来说,让服务器和数据库在同一个虚拟机实例中运行始终是一个坏主意。让我们想一下,如果您的实例无法再处理发送到的流量数量,会发生什么?

首先,您可能只是进行垂直扩展,向当前运行的实例添加更多 CPU 和 RAM,是的,这在一段时间内没问题。但它实际上更像是一个临时的生命周期延长计划,因为在某个时候,您的实例将无法再进行垂直缩放。这里是水平比例......

必须创建新实例来处理不断增加的流量,您将如何为此设计新实例?

最佳实践是拥有一个与第一个实例完全相同的实例。因此服务器需要设计成一个无状态的服务器。在这种情况下,您的实例将能够扩展到任意数量的计算机。

这就是为什么您不应该让 API 前端和数据库在同一个实例中运行。无法缩放。

那么数据库怎么样?这非常简单。只需将其放置在另一个虚拟机实例中即可!如果数据库仍然能够处理请求,您可以在服务器实例之间共享数据库服务器。但如果数据库端存在瓶颈,您可以通过集群等方式单独扩展您的 mongoDB。

如果您没有时间,可以考虑使用 Heroku Add-On 等即用型服务,例如 mongolab ,为您管理 MongoDB 实例。

干杯。

关于node.js - 在AWS或GCP上部署Node + MongoDB API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56325993/

相关文章:

javascript - 当我尝试在下面的代码中访问 db.collection 时,为什么会出现未定义的情况?

javascript - 这个函数有内存泄漏吗?

node.js - 快速获取子域名

node.js - Node JS-MongoDB : use an opening connection

amazon-web-services - 为什么 API 网关会损坏我的二进制文件?

node.js - connect.js 中间件的正确顺序?

python - 保存 django mongoengine 模型实例时,EmbeddedDocumentField 项无效(save() 失败)

javascript - express-session 不会删除 mongodb 中的 session

mysql - 在 MySQL 中存储 AWS ARN 的最佳数据类型?

amazon-web-services - 将现有 CloudFormation 资源大规模导入 CDK