【问题标题】:MEAN Stack - Should I separate servers?MEAN Stack - 我应该分开服务器吗?
【发布时间】:2016-10-12 03:01:51
【问题描述】:

我正在使用 MEAN 堆栈开展一个个人项目,非常感谢关于在设置服务器架构时我应该采取哪条路线的建议。性能和可扩展性对我来说很重要,因为我想在未来构建企业级 Web 应用程序。

该项目将是一个图像托管应用程序,其中包括前端、私有 API 和文件存储系统。

选项 1:都在同一台服务器上

选项 2:前端和私有 API 在同一台服务器上。文件存储在单独的服务器上。

选项 3:前端、私有 API 和文件存储都在自己的服务器上。

我认为选项 2 可能是最佳选择,但我很想向那些在构建具有类似架构的应用方面有经验的人学习。

谢谢!

【问题讨论】:

  • 这个问题无法回答。由于不同的原因,所有这些选项都同样有效。期望其他人知道您的工作条件或应用程序使用要求是不合理的。
  • 嗨@Claies 感谢您抽出宝贵时间回复。我知道我正在尝试构建一个可以处理 100k+ 用户和每天 100 万次上传的网络应用程序有点模糊。

标签: javascript node.js server mean-stack mean


【解决方案1】:

根据您期望的规模以及您希望在服务器基础架构上花费多少,不同的情况是合适的。我将尝试解释两全其美。

  • 对于所有基于 API 的服务,它们应该位于可扩展的基础架构上。出于这个原因,它们大多采用始终位于负载均衡器后面的服务器形式。根据流量类型和区域进行缩放。为此,目前业界最喜欢的是基于 docker 的微服务。另一个类似的解决方案是 Google App Engine。
  • 对于所有基于前端/UI 的内容,它们应存储在 CDN 上以优化交付。使用 CDN,即使基于私有 API 的服务速度很慢,您也可以维护应用程序的 UI 始终可供最终用户使用。 CDN 价格便宜,而且会对您的最终用户产生巨大影响。
  • 对于图像/文件存储,您应该使用基于 Blob 存储的解决方案。如今,您的服务器 HDD 大多是 SSD,而且价格不菲。此外,这些磁盘连接到您的服务器,因此很容易出现错误或安全问题。使用 Blob 存储很有帮助,因为它可以处理冗余和可扩展的存储以及某种形式的安全性。

使用此模型,您将确保您的文件安全且远离您的业务逻辑,即使您的核心服务速度很慢,您的最终用户也可以访问您的 web 应用程序,并且非常轻松地管理基于 API/服务的规模的服务器。

【讨论】:

  • 感谢维克拉姆的回复,非常有帮助!
【解决方案2】:

您不应该预先确定您的服务器架构。但在此过程中进行衡量并改进所需的缺失功能。

所以我会首先使用相同的服务器方法

但是将前端设计为无服务器架构

创建一个私有 API 和一个单独的文件存储 API 用于读/写。这些可以是可在需要时进行扩展的微服务。

您可以将这些片段托管在其他云上/或使用您自己的云来垂直/水平或地理扩展。

因此,您将缩放部分融入到您的设计中,但仅在需要时才缩放。

现在您基本上唯一需要小心,您的架构已分解为多个部分,这样您就可以在需要时进行扩展。

注意:关于主题的两个好读物如下:Infrastructure as CodeBuilding microservices

【讨论】:

  • 感谢您的回复和资源来帮助我实现这一目标!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
相关资源
最近更新 更多