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

Performance 高流量web应用程序的最佳扩展方法?,performance,Performance,我们有一个新的网络应用程序项目,它将在网站(作为一个网络)上显示横幅广告,我们估计它一个月可以处理200亿到400亿次的浏览量 我们目前的语言是ASP…但正在转向PHP。PHP5在扩展web应用程序方面有限制吗?或者,我应该让我们的团队投资学习JSP吗 或者,这是应用服务器和/或数据库的问题?我们计划使用Oracle 10g作为数据库。我认为这不是语言问题,而是数据库速度和CPU处理速度的问题。你考虑过网络农场吗?通过这种方式,您可以有多台机器为您的应用程序服务。有一些方法可以实现此解决方案。您

我们有一个新的网络应用程序项目,它将在网站(作为一个网络)上显示横幅广告,我们估计它一个月可以处理200亿到400亿次的浏览量

我们目前的语言是ASP…但正在转向PHP。PHP5在扩展web应用程序方面有限制吗?或者,我应该让我们的团队投资学习JSP吗


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

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

换句话说,Oracle10g是一个非常好的数据库服务器,在我看来,您只需要一个独立的Oracle服务器来提交请求量。请记住,当人们每次都或多或少地请求相同的东西时,SQL server会更快,如果您仔细规划数据库模式,这种情况会在web应用程序中发生


你还必须检查所有的广告服务器应用程序解决方案,有一个非常好的,只要尝试谷歌与“开源广告服务器”

你知道每月400亿美元大约是每秒15500美元,对吗

扩展不会是你的问题-基础设施周期将是你的问题。无论你选择什么技术,你都需要大量的硬件——正如其他人以农场或云的形式所说。

这个问题(以及整个主题)有点主观。你可以用任何语言编写一个dog-slow程序,并在任何东西上运行它

我认为最好的办法是看看当前的实现在负载下是如何工作的。也许只是一些调整就可以让事情变得适合你——但是改变你的底层框架似乎有点过分了

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


祝你好运

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


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

无意冒犯,但我强烈怀疑你大大高估了你的印象

也就是说:

应用层中使用的PHP或其他语言与可伸缩性几乎没有关系。由于应用层将其状态委托给数据库或等效对象,因此在适当的负载平衡后添加所需的容量非常简单。语言的选择确实会影响每台服务器的效率和成本,但这与可伸缩性不同

扩展状态/数据存储变得更加复杂

对于您的应用程序,您有三项基本工作:

  • 我们播放什么广告
  • 上菜
  • 记录印象
  • 每一项都需要思考,可能需要不同的工具

    第二个,提供add,是最简单的:使用一个。如果你真的提供了你要求的数量,你应该能够协商优惠的价格

    决定播放哪一个广告将非常特定于您的网络。它可能很简单,只需从数据库中读取几行,为给定的属性在给定的日历期间提供广告位置。或者它可能是复杂的上下文广告,比如谷歌。假设是前者,并且放置数据库很小,那么这就是扩展数据库读取的简单任务。您可以使用复制树或类似的缓存层

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


    以上所有内容都假设您能够确保数据中心空间和网络供应的安全,以满足这一负载,这在您所说的数字上并不微不足道。

    云计算又如何?你会使用数据库吗?如果你使用多个web-/数据库服务器组合,你需要它们之间的实时通信/同步吗?或者一轮盗取dns以实现完全独立的系统(可能每天更新/复制一次数据库)就足够了吗?我想他使用的是英国的十亿(10^6),而不是美国的十亿(10^9).也许他指的是2-4千万?对于一个由高技能工程师组成的团队来说,每月提供那么多汤应该不是问题。@Hugh:我们英国人可能不会像美国人那样使用英语,但是我很确定我们两个人都会称为10^6一百万。假设每个横幅广告都有2万个大小,并且从不缓存。这是每秒超过300兆字节您需要能够提供服务。实际上,您只需要足够的服务器作为CDN的源站。理论上,您需要足够的服务器作为CDN的源站并直接提供服务。