2016-04-04 91 views
1

我想开发约500个活动用户(会话一次)的应用程序。系统不会处理任何大量计算。这将是简单的读/写数据库解决方案。但是,应用程序每天将会上传约50MB的数据。 (当非用户激活时,每天都会被其他应用程序分析和清理)。其实我正在研究这个应用程序的设计,我对此没有提出任何问题。集群系统架构?

  1. 我是否应该考虑开发在负载平衡的情况下在某个集群中工作的应用程序,或者一台服务器将处理这种使用量?
  2. 如果是,是否有任何有关开发应用程序以在群集中工作的指导原则?与开发单服务器应用程序有什么不同吗?
  3. 我应该担心这个应用程序的数据库吗?当2台服务器同时读/写数据到单个数据库时,我应该期待什么样的问题?也许它也应该在群集中工作?

我会很高兴任何有关设计这个中等大小的应用程序的帮助和/或文章。

回答

2
  1. 这取决于你NFR(非功能性需求)。除了负载均衡之外,群集提供更高的可用性。

  2. 您必须使后端处于无状态状态,以便来自同一用户的请求最终可以在没有用户注意的情况下在另一个节点上结束。这使得构建缩放软件成本更高。所以仔细考虑你的选择。

  3. 从多个服务器访问数据库与从多个线程访问数据库没有区别。

0

为了回答你的第一个问题,我认为使用基础设施提供商可以轻松扩展(增加或减少)你的应用程序,这总是一大优点,可以帮助你节省资金。我与这种供应商的主要经验是亚马逊网络服务(AWS)。

我不确知你打算用什么技术,但像这样的一般设置在AWS上才有意义对我来说是:

  • 一套EC2实例(=虚拟服务器)运行位于ELB(负载平衡器)后面
  • 包含EC2实例的自动缩放组。您可以查看它,但是自动扩展组基本上可以让您根据各种因素(服务器负载,磁盘I/O等等)自动添加和删除实例。
  • RDS用于您的数据库。它支持多种DBMS,如MySQL和Oracle。它还为您提供很好的功能,如复制,自动备份和监控。
  • 使用CodeDeploy到服务器

上部署应用程序(我voluntarly使用AWS的名字,这样如果你有兴趣,你可以阅读文档。)

这基本上让如果需要,您可以扩展到500多个并发用户,并且在处理较少的用户时可以为您节省一些资金。请注意,自动缩放组也可以安排。例如:«我白天(最多50个),至少需要5个实例,但你可以凌晨1点和凌晨4点之间下井2(仍然最多50个)»

我mentionned是相当广泛的服务记录在案,所以你可以查看它,如果你想要一些更具体的细节。

我不会详细讨论其他两个问题,因为我不是这方面的专家,但是数据库确实可能是一个瓶颈,因为它可能涉及很多I/O。

希望这有助于:)

+0

感谢您的帮助,但这不是我们正在寻找的。我们不打算在客户端的服务器上托管我们的应用程序。 – graczun