消耗php应用程序的复杂过程的可伸缩性问题?

时间:2010-09-26 14:59:16

标签: php performance design-patterns scalability

您好 考虑一个有点过程消耗的PHP应用程序,该应用程序在复杂的数据库事务中很重要,并且没有任何选择,只能拥有相当高的内存消耗算法。与每个请求最多4MB内存使用量一样。 (对于那些特定请求,平均为1 MB,对于常规请求,可变数据少于200KB) 显而易见的是,我们将使用像Amazon S3这样的东西来托管我们的静态数据,但很明显,大部分负载都在动态部分上。

该应用程序将在多台服务器上运行,但它是如何工作的?我们是否像在一台服务器上运行的普通应用程序一样,而其他服务器只会让它像一台具有大量内存和处理能力的大型服务器一样?

我们的问题是,虽然应用程序是以极其模块化的方式编写的,但这个过程迫使我们将所有内容都放在同一个环境中。我们可以将数据库放在为服务而优化的机器上,但几乎没有办法将应用程序代码的不同模块本身放在不同的服务器上。

那么,有什么常见的解决方案?

1 个答案:

答案 0 :(得分:0)

在许多可扩展性解决方案中,您可以做的一件事是对请求进行负载均衡。如果您不能将应用程序的不同部分放在不同的服务器上,请将整个应用程序放在一起 在多台服务器上复制。

现在,最终用户请求不会直接转到您的应用程序服务器。您需要一个负载均衡器(例如:F5 Big IP)。负载balanacer将从中检测到最佳服务器 服务器池和重定向到该服务器的请求。这样,在负载均衡器上添加/删除服务器需要10-15分钟的配置。

负载均衡器如何知道要选择哪个服务器?

loadBlanacer脚本在每台服务器上运行,通知服务器负载/内存使用/进程数等等。具体取决于它选择服务器