linux - 为什么不在一个 Amazon EC2 实例上运行 Node.js 和 Neo4j

标签 linux node.js amazon-web-services amazon-ec2 neo4j

我即将在 Amazon 上设置服务器架构。我不熟悉最佳实践,而且几乎是边做边学。

我的老板告诉我启动一个 Amazon EC2 实例,并在同一个实例上运行 Node.js 和 Neo4j(图形数据库)。两者都应使用不同数量的可用 CPU。随着应用程序变得越来越大并且需要更多资源,我们只需克隆实例即可。我的老板也没有这方面的经验。

我必须说,我对将 Node.js 和 Neo4j 放在一个实例/机器上有一种不好的感觉。我想我会使用 Amazon Linux HVM 发行版,因为他们将其设置为可以与他们的服务配合良好。遗憾的是,Neo4j 官方不支持 yum,而是支持 apt(Amazon Linux 基于 Ubuntu,使用 yum 而不是 apt)。因此 Neo4j 建议使用 Debian/Ubuntu 来运行他们的数据库。

为什么将 Node.js 和 Neo4j 放在一个实例上不是一个好主意?

我可以想象的一个原因是,可扩展性不再像运行每个服务的两个单独实例那样动态。

最佳答案

可扩展性可能是主要原因。我认为这里的“node.js”是指使用node.js 编写的应用程序。将 node.js 包本身安装在运行 neo4j 的同一台机器上是没有问题的。

认为部署 Neo4j 的一个好方法是作为服务器,让您的应用程序与该服务器通信。当然,它们可以位于同一个虚拟机上,但这会带来一些复杂性:

  • 该虚拟机上的安全/防火墙设置必须更加复杂,以考虑到两者共存的所有方面。
  • 内存/磁盘配置需要足以满足两者的需要。如果您的应用程序需要增长,当 Neo4j 占用大量内存而没有为您的 Node 应用程序留下太多内存时会发生什么情况,反之亦然?

通过将它们拆分为两个独立的虚拟机,您可以分别对它们进行性能调整,以确保其中运行的那一个运行得非常好。稍后,如果您需要 HA 集群,您可以将单个 Neo4j 虚拟机设置为 HA 集群的前端,并且 Node.js 应用程序可以继续使用服务器,就好像没有发生任何变化一样。因此,可扩展性有好处。

在安全和网络配置方面,将它们分成两个虚拟机意味着您必须在第一次就考虑如何正确配置。您不希望任何人都能够连接到您的 neo4j 数据库,您只希望您的应用程序能够做到这一点。

关于linux - 为什么不在一个 Amazon EC2 实例上运行 Node.js 和 Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350940/

相关文章:

Linux:登录帐户后 Chrome 崩溃

c++ - 将 "xxd -i"编码的C源代码转换为C源代码的脚本/工具?

c++ - 在 Linux 上读取系统调用永远占用

node.js - 如何使用模型模式创建环回远程方法?

JavaScript 和 NodeJS : Calling method from different JS file

amazon-web-services - 尝试授予 IAM 用户创建和分配角色的权限,但限制可用策略的类型

amazon-web-services - block 级与文件级存储

c# - 运行 Python 脚本的进程对象未成功重定向输出

amazon-web-services - 无法在 AWS 中通过 yum 安装软件包,[Errno -1] repomd.xml 与 epel 的 metalink 不匹配

php - Node ,带有 PHP api 服务器的 React Web 服务器