大型PHP项目所需的基础结构

时间:2009-05-01 13:26:26

标签: php mysql hardware infrastructure

我的团队正在开发一个PHP的大型音乐门户网站。希望该门户网站在推出后一年内拥有100万用户。门户网站将允许用户创建播放列表,流式传输和下载音乐。

到目前为止,我们已经开发了最多约1000个并发用户使用的应用程序。这个门户网站的数量级不同。

我想知道是否有任何基准可用于计算此类大型项目的硬件内存要求和带宽要求。

此外,如果内容分发网络(CDN)可以处理所有与流量相关的问题或某些特定内容(如缓存),则需要这样做。

哪个数据库适合? mySQL是否能够处理这样的负载或者需要其他东西。

由于

Vinayak

6 个答案:

答案 0 :(得分:5)

在你真正拥有这么多用户之前,你不应该太担心它。编程规则之一是在实际出现性能问题之前不进行优化,即便如此,在有 性能问题的信息之前,请不要进行优化。现在,你也没有。

据说......是的,MySQL可以扩展。是的,您可能需要进行缓存。是的,CDN可能会有所帮助。

从单个服务器开始,如果您需要超越该服务器,请查看配置文件以找出瓶颈所在的位置并从那里开始。如果可以,请让知道他们正在做的事情的人帮助你。

答案 1 :(得分:1)

所有应用程序对大负载的响应都不同,因此没有任何直接的答案。音乐流媒体应主要遇到带宽问题,但磁盘IO也可能会出现问题。内容服务器上有大量可用内存可以解决这个问题。

如果正确缩放,MySQL可以处理大量的负载。维基百科使用MySQL并处理大量的点击。 Facebook是另一个使用MySQL的重要人物。

编辑:http://highscalability.com/是查看其他人所做事情的绝佳资源。

答案 2 :(得分:1)

mySQL将扩展到这个级别,但游戏从1000个用户显着变化到100万个用户。您是否考虑过使用AWS能够根据需要启动其他硬件?如果您认为云是您需要的地方,请在此处查看PHP walkthrough for AWS以帮助您入门,我想也许如此。

答案 3 :(得分:1)

至于这个音乐门户关注的是开始有一个“虚拟专用服务器”,这样我们就可以控制流媒体,缓冲方法,文件格式的转换,我们也可以完全控制安装打开源库来管理可伸缩性和性能。

如您所知,着名的Youtube正在使用MySQL为大量用户存储和提供数据。有关可伸缩性的更多信息,请查看以下链接:High Scalability Youtube Architechture

  

随着目标受众的增长,可以迁移到数据库群集并缓存内容。

答案 4 :(得分:1)

Scalablity发生了, 如果你从一开始就选择1M用户,你将会使设计过于复杂。

但这有助于保持可怜性。 也就是说,这里有一些经验法则:

保持网页无状态
依赖于$ _SESSION / logindata或数据库内容的页面需要解析等 您可以根据内容更改事件生成静态html页面。

N台机器
对于网络服务器而言,这意味着不仅要将用户内容上传到1台计算机,还要将其分配给群集。 对于数据库,使用1个数据库服务器写入数据,使用N个服务器读取(过期)数据。

<强>缓存
从Cache生成和收集数据也需要时间。只缓存较慢的缓存操作。

答案 5 :(得分:1)

构建可扩展系统是一种未来预测程度,它几乎不可能正确,并且仔细构建所有内容以永久地扩展结果 - 通常 - 在过度架构中。

相反,我会说在接下来的几个阶段进行构建,并从那里开始工作。因此,例如,如果您正在构建一个高内容站点,带宽和存储可能是一个低级别的阻塞点,那么请确保生成所有内容URL,以便在切换到CDN时,不得不重新编码很多网站。

我建议的一件事是从每个数据库查询开始标记它是否只是读取或需要写访问权限,因为这将使得分割成复制数据库模型更容易在路上