【问题标题】:I designed an architecture for web app running on single computer我为在单台计算机上运行的 Web 应用程序设计了一个架构
【发布时间】:2010-01-27 10:23:00
【问题描述】:

我计划构建一个在单台计算机上运行的 Web 应用程序,并尽可能高效地利用硬件资源。 app的逻辑不会很复杂。以下是我的设计:

操作系统:Linux (CentOS 5)

网络服务器:Nginx

网页脚本:PHP

数据库:东京内阁+东京暴君

索引:狮身人面像

我不会使用诸如 MySQL 之类的 RDBMS,因为我认为带有索引器 (Sphinx) 的键值存储 (Tokyo cabinet) 将满足部署普通 Web 应用程序的所有需求,而且性能也比 MySQL 更好.

我的问题是:这种设计是单台计算机的高效架构吗?或者如何改进?

(我知道这个问题可能很主观,但我真的需要你的帮助)

非常感谢~

编辑:

我要托管我的应用程序的计算机是普通PC,例如8GB~16GB内存,500G~1TB硬盘等。我认为它不需要考虑“可扩展性”。 Web 应用程序的每一个第一步都是从一台机器开始的,并且永远都是开始。

【问题讨论】:

  • 机器的规格是什么?
  • 在单台计算机上运行“网络”应用程序的优势是什么?基于窗口表单的应用程序不是更合适吗?

标签: php architecture nginx key-value


【解决方案1】:

数据库的选择

我认为您选择的数据库类型较少取决于系统托管在多少台计算机上。我认为这应该更多地取决于您想要/需要保留的数据质量。

例如,如果您需要存储客户的送货地址,则需要在存储结构中说明这一点。名称值对似乎是一个很容易开始的结构,但如果您预见到以下任何一种情况,您应该考虑迁移到标准数据库系统

  • 跟踪更改
  • 报告活动/报告
  • 并发用户

性能

这取决于您的代码、图像、内容、缓存等,就像它在您的数据库中一样。

【讨论】:

    【解决方案2】:

    好吧,一种查看方法是对其进行负载测试: http://grinder.sourceforge.net/

    我从未使用过 Tokyo cabinet,但如果它的功能足够,那么它可能会比 DB 快得多。

    但从长远来看,当您开始扩展该框时,您通过调整应用程序以在一个框上运行而实现的任何节省都将很快失去。尝试添加大量缓存,而让应用程序更快的黑客只会走这么远。更重要的是,您应该尝试考虑如何轻松地解耦各个层。

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 2015-01-04
      相关资源
      最近更新 更多