当我的PHP网站开始有很多成员时会发生什么?

时间:2011-10-20 13:19:16

标签: php mysql bandwidth

这是我真正好奇的事情,我真的不明白这是怎么可能的。

让我们说我是Facebook(ahah)的所有者,我每天都有数百万人访问我的网站,成千上万的图像,视频,日志等。

如何存储所有这些数据?

我是否在全球不同服务器中拥有更多数据库,然后从一个位置连接到它们?

我是否使用内部API系统来请求存储数据的其他服务器的信息?

例如,我知道Facebook在全球拥有大量数据中心和数百台服务器..

他们如何连接这些服务器?配置文件是否存储在不同的位置,当我连接到我的配置文件时,我将使用该特定服务器?或者是否有一台主服务器得到了全球其他数百台服务器的支持?

有没有办法以一种方式使用PHP,我将连接到不同的服务器和不同的mySQL(???)数据库,以便随时存储和检索数据?

很抱歉,如果这看起来像一个愚蠢的问题,但由于它可能会在一个成功的网站上工作一天,我真的想知道我将要做什么,以及背后的逻辑。

非常感谢。

4 个答案:

答案 0 :(得分:9)

答案 1 :(得分:0)

不幸的是,你的问题没有一个简单的答案。对于它的MySQL部分,您需要调查数据库横向扩展。您可以在此处开始查看:http://www.mysql.com/why-mysql/scaleout/mixi.html。在服务器场中设置Apache / PHP网站有多种不同的方法。其中之一涉及设置循环DNS。这是添加具有许多不同IP地址的DNS记录。然后,每次请求记录时,您的DNS都会分配不同的IP地址,以便在多个服务器之间平衡负载。您还可以使用MySQL,Apache和Heartbeat设置群集,但这更像是一种高可用性解决方案,而不是扩展解决方案。

答案 2 :(得分:0)

当你拥有一个拥有这么多用户的网站时,你已经有足够的经验来了解问题的答案,你也需要付出很多钱来支付人们找到你系统的最佳架构。

我不是说我在下面描述的是圣杯,但它肯定是一个选择:

您将拥有一个包含大量备份的大型碎片数据库,并且您将拥有一些名称服务器,这些服务器将了解服务器的位置以及有关每个服务器上存储的数据的一些规则。当搜索数据时,查询将被发送到名称服务器,该服务器将找到可以为特定查询找到答案的服务器。我也赞成了N.B.的答案,我认为他大部分是正确的。

答案 3 :(得分:0)

对于很多用户来说,你应该拥有一台拥有大量内存和速度的服务器。配置php.ini以允许更多的内存使用。具有大量用户的服务器应该具有4-12GB可用空间。此外,通过关闭桌面环境来节省资源。如果您拥有这么多用户,您可能需要考虑CDN并创建数据库请求队列。