2

我必须构建一个类似于“分支/商店定位器”的 Web 应用程序。用户输入他的地址,Web 应用程序将在地图上绘制附近的商店。

要求之一是:

“Web 应用程序必须支持 100 个并发用户和高达 5GB/天的传输量。”

大部分传输的数据将是文本和 GUI 图像。

所以我的问题是:

  1. 这是否被视为高流量应用程序?
  2. 我可以寻找哪些 Web 应用程序/站点来获得可比较的流量?
  3. 我是否需要实现诸如 memcached、模板缓存、负载服务器平衡等之类的东西......?

我以前做过高流量应用程序,但我从来都不是架构师。因此,尽管我知道一些(不是全部)管理高流量场景的策略,但我并不熟悉它们的实际实施。

有人可以给我建议、反馈或建议的研究吗?我有没有忽略什么?

**另外,我正在使用带有 Smarty 的 LAMP 构建它。

4

3 回答 3

1

在深入研究核心服务器端的东西(负载平衡和 memcached)之前,请确保您了解并实施 YSlow 的所有(或大部分)规则:http: //developer.yahoo.com/yslow/help/

然后,如果 MySQL 是一个瓶颈,请获取高性能 MySQL的副本,或者在www.mysqlperformanceblog.com上阅读如何调整查询/设计。

每天 5GB 也不算多。

于 2009-05-03T13:53:34.507 回答
1

在 100Mbps 链路上,您最多可以传输

100 * 60 * 60 * 24 / 1024 / 8 = 1054 GB per day

5GB/天大约占其中的 0.5%,所以我认为您不必关心这种规模的流量,因为在此之前有很多事情可能成为您的瓶颈(JavaScript、数据库访问等...) . 此外,一旦你知道你有足够的可用带宽,你不应该在编写(和基准测试)你的应用程序之前关心这些事情,因为这可能会导致过早的优化。

我发现 Django 书中的缩放部分作为该领域的一般知识很有趣。

于 2009-05-03T14:00:11.387 回答
1

这只是每秒 60kb(假设运行时间超过 24 小时),但您可能会在高峰时段遇到突发事件,因此您需要能够处理它。即使对于较旧的基于 Apache 的服务器来说,100 个并发用户也不算什么。

我不确定 memcached 是否真的能帮到你很多,但它值得添加,就像你的 PHP cahcing 的APC一样,我至少会构建它以实现负载平衡 - 查看ultramonkey以获得一些好的文档如何透明地进行,您需要确保进入的任何用户会话不会以每个主机的方式存储其会话数据;您需要考虑会发生什么情况,即用户在一次调用中点击了铅平衡服务器 A,然后在另一次调用中点击了服务器 B。(即在数据库中存储用户 ID 和数据,而不是在文件系统中)。

于 2009-05-03T14:03:04.860 回答