高流量Web应用程序的最佳扩展方法?

时间:2009-06-24 23:17:41

标签: performance

我们有一个针对网络应用的新项目,该网站将在网站上显示横幅广告(作为网络),我们估计每个月可以处理200到400亿次展示。

我们当前的语言是在ASP ...但正在转向PHP。 PHP 5是否有缩放Web应用程序的限制?或者,我是否应该让我们的团队投资购买JSP?

或者,它是应用服务器和/或数据库的问题?我们计划使用Oracle 10g作为数据库。

5 个答案:

答案 0 :(得分:8)

没有冒犯,但我强烈怀疑你大大高估了你会投放多少次展示。

那说:

应用程序层中使用的PHP或其他语言实际上与可伸缩性无关。由于应用程序层将其状态委托给数据库或等效数据库,因此可以直接在适当的负载平衡后添加所需的容量。语言的选择确实会影响每台服务器的效率,从而影响成本,但这与可扩展性不同。

它正在扩展更复杂的状态/数据存储。

对于您的应用,您有三个基本工作:

  1. 我们展示了什么广告?
  2. 提供添加
  3. 记录展示
  4. 这些都需要思考,可能需要不同的工具。

    第二个,提供添加,最简单:使用CDN。如果您确实提供了所声称的数量,那么您应该可以协商优惠利率。

    确定要展示的广告将特别针对您的广告网络。它可能很简单,只需从数据库中读取几行,为给定日历期间的给定属性提供广告位置。或者它可能是复杂的上下文广告,如谷歌。假设它更像前者,并且放置数据库很小,那么这是扩展数据库读取的简单任务。您可以使用复制树,也可以使用memcached等缓存层。

    最后一个最终将是最困难的:如何扩展写入。一种常见的方法是仍然使用数据库,但采用分片扩展策略。更奇特的选项可能是使用支持计数器指令的键/值存储(例如Redis)或可扩展的OLAP数据库(例如Vertica)。

    以上所有假设您都能够确保能够为此负载提供服务的数据中心空间和网络配置,这对您正在谈论的数字来说并非无足轻重。

答案 1 :(得分:6)

你确实意识到每月400亿,大约每秒15,500

扩展不会成为您的问题 - 基础设施期间将是您的问题。无论您选择哪种技术堆栈,您都需要大量的硬件 - 正如其他人以农场或云的形式所说的那样。

答案 2 :(得分:2)

这个问题(以及整个主题)有点主观。你可以用任何语言编写一个慢狗程序,并将它托管在任何语言上。

我认为您最好的选择是了解当前的实施情况如何在负载下运行。也许只是一些调整会让事情对你有用 - 但改变你的底层框架似乎有点多了。

话虽如此 - 您的基础架构团队也必须参与,因为您似乎有一些严重的负载要求。

祝你好运!

答案 3 :(得分:1)

我认为这不是语言问题,但可以将数据库速度作为CPU处理速度的问题。你考虑过一个网络农场吗?通过这种方式,您可以为您的应用程序提供多台计算机。有一些方法可以实现此解决方案。您可以从两台服务器开始,并在应用程序请求更多处理量时添加更多服务器。

在其他方面,Oracle 10g是一个非常好的数据库服务器,在我看来,你只需要一个独立的Oracle服务器来提交请求量。请记住,SQL服务器速度更快,因为人们每次都要求或多或少相同的事情,如果您仔细规划数据库模式,它就会发生在Web应用程序中。

您还必须检查所有广告服务器应用程序解决方案,并且有一个非常好的解决方案,只需尝试Google使用“开源AD服务器”。

答案 4 :(得分:1)

PHP将能够满足您的需求。但是,正如其他人所说,您的第一个限制将是您的网络基础设施。

但你的第二个限制是编写可扩展的代码。您需要良好的抽象和隔离,以便可以在任何级别轻松添加资源。像快速数据对象映射器,多个数据缓存机制,单独的配置文件等。