大型网站如何服务于数百万用户? (如Google)

我很欣赏这个问题可能是模糊/太宽泛,但我正在寻找基本原则/总结。

例如,像Google或Facebook这样的网站如何处理它收到的数十亿次的浏览量?

我知道循环DNS,其中,我知道服务一个IP到访问者A,然后另一个IP到访问者B以循环方式,等等。

这些网站是否运行几百台服务器, 每台服务器上都有一个“google”网站的副本,并且都是同步的?

尝试总结 – 具有数百万页面浏览量的大型网站如何处理stream量? 他们如何维护? 在哪里可以获得设置的经验?

我想了解更多,但实际上并不需要这样的设置,我发现很难获得案例研究或材料来了解更多。

希望这有一定的道理。 谢谢。

总结:像航空公司飞行计划这样的大型企业客户使用Oracle,Sun,IBM BladeCenter和自定义代码,像eBay,Twitter,Facebook,Google这样的大公司使用所有的东西 – 定制,无论他们能做什么工作,并保密,因为它这是他们必须解决的非常困难的事情之一,以使他们的公司成为可能。

小型的web服务器已经变得非常常见了,你通常会看到像Apache,Tomcat或者IIS这样的web服务器,并且可能在后面有一个数据库(PostgreSQL,SQL Server或MySQL),也可能有一个编程层(PHP, Python,Ruby,Java等)。

对于更大,但仍然很小的设置,您将这些图层分成不同的服务器 – 两个运行的Apache既查看同一个共享文件,两个运行数据库中的每个数据的一半,也许另一个做caching,也许你只是让它们function强大你可以负担得起。 这可以让你有很长的路要走 – 大量的Fish在2007年进入了HitWise的100强网站,每小时服务200万次, 1台服务器和外包图像托pipe到Akamai。

如果你有钱,例如政府,航空业等,那么你可以通过大规模的专业服务器,比如刀片中心,数十台处理器的Sun服务器,存储设备中的数十个磁盘和Oracle数据库等等

对于其他人来说,如何以低廉的价格来扩大规模的问题仍然没有解决。 他们如何做是他们公司的核心问题之一,他们将花费大量的努力定制。

这将可能包括有趣的方式来获得许多数据库服务器。 不是谷歌, 他们自己写的文件系统和数据库更换上面 。 你可能会看到分片(在一台服务器上分割你的内容,在另一台分割新西兰)或复制(所有服务器都有相同的数据,读取来自任何一个服务器,写入所有这些数据)或自定义。

它可能会包含很多caching服务器,例如运行Memcached。 这些将会有很多RAM,并且很快返回最近之前完成的数据库查询,最近请求的文件。 Facebook在2008年表示:“我们使用超过800个(memcached)服务器为我们的用户提供超过28TB的内存。” 链接

您可能会发现一些CDN服务(内容传送networking),例如Akamai,您可以将所有照片提供给他们,并将其传播到世界各地,然后链接到他们,并自动从networking上向用户提供最近的服务。

你还会发现很多自定义代码和人们努力工作,但保持秘密。 服务eBay拍卖意味着处理大量的stream量,但单个拍卖项目的数据大多是静态的,但是searcheBay拍卖意味着大量的数据处理。 谷歌searchnetworking意味着大量的数据处理,但以不同的方式 – 不同的数据存储在不同的服务器上。 Facebook意味着大量的信息传播到很多用户,而Twitter也是如此,但是却有着不同的特点。 Google和Facebookdevise自己的服务器硬件。

他们有很多不同的地点,所有的用户都被引导到最近的位置。 这是通过Anycast完成的。

在每个位置他们有很多前端服务器(networking服务器),后端是几个不同的数据库集群。 通常他们在那里做数据库分片 。

前端服务器和后端数据库服务器之间通常有一层。 在这一层所有的计算和数据处理正在进行。 Google正在使用Map Reduce 。

这是一个非常简短的介绍,但链接应该帮助你去find更详细的信息。

例如,像Google或Facebook这样的网站如何处理它收到的数十亿次的浏览量?

许多数据中心中有许多服务器。

我知道循环DNS,其中,我知道服务一个IP到访问者A,然后另一个IP到访问者B以循环方式,等等。

啊。 不,它会在每个请求中返回不同的IP(循环),但是这个noct必然意味着每个访问者。

这些网站是否运行几台(百?)服务器,每台服务器上都有一个“google”网站的副本,并且都是同步的?

没有。做这个“数以万计”的服务器,答案是肯定的。 Google在全球拥有100,000多台服务器,拥有大量的数据中心。

他们使用AS路由将stream量redirect到最近的数据中心。