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

标签 performance

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

我们当前的语言是 ASP...但正在转向 PHP。 PHP 5 在扩展 Web 应用程序方面有限制吗?或者,我应该让我们的团队投资选择 JSP 吗?

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

最佳答案

无意冒犯,但我强烈怀疑您大大高估了您将提供的展示次数。

也就是说:

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

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

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

  1. 我们展示什么广告?
  2. 为添加者提供服务
  3. 记录印象

每一个都需要思考和可能不同的工具。

第二个,服务添加,是最简单的:使用 CDN 。如果您确实提供了您声称的数量,您应该能够协商优惠的价格。

决定展示哪个广告将根据您的网络而定。它可能就像从数据库中读取几行一样简单,这些行给出了给定日历周期内给定属性的广告展示位置。或者它可能是像谷歌这样复杂的上下文广告。假设更多的是前者,并且放置的数据库很小,那么这就是扩展数据库读取的简单任务。您可以使用复制树或缓存层,例如 memcached .

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

以上所有内容都假设您能够确保数据中心空间和网络配置能够满足此负载的需求,这对于您所说的数字而言并非微不足道。

关于performance - 高流量 Web 应用程序的最佳扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041457/

相关文章:

c++ - 将 Python 翻译成 C++ : lists and tuples

c# - CommandBehavior.SequentialAccess 是否有任何性能提升?

java - 数据集合的最佳数据结构,每次迭代之间仅发生变化

mysql - 索引字段+限制1与唯一字段在性能方面的比较| MySQL

database - 优化写入繁重的 Oracle 应用程序?

windows - 为什么在 Windows 上创建新进程比在 Linux 上更昂贵?

java - Java 垃圾收集器导致性能低下?需要建议

wpf - 与在 WPF 中使用画笔相比,渲染大量重复图像的性能更高还是更低?

c++ - 我可以在 C++ 中从 const char * 数组进行零拷贝 std::string 分配吗?

PHP 加速 MySql 查询