大型网站如何为数百万用户提供服务?(例如谷歌)

大型网站如何为数百万用户提供服务?(例如谷歌)

我知道这个问题可能比较模糊/太宽泛,但我正在寻找基本原则/总结。

例如,Google 或 Facebook 这样的网站是如何处理其收到的数十亿页面浏览量的?

我知道循环 DNS,据我所知,它以循环方式为访问者 A 提供一个 IP,然后为访问者 B 提供另一个 IP,依此类推。

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

尝试总结一下 - 拥有数百万页面浏览量的大型网站实际上如何处理流量?它们如何维护?人们在哪里可以获得设置这些网站的经验?

我想了解更多,但实际上没有需要对于这样的设置,我发现很难获得案例研究或材料来进一步学习。

希望这能让你有所领悟。谢谢。

答案1

摘要:大型企业客户(例如航空公司航班计划)使用 Oracle、Sun、IBM Bladecenters 和自定义代码,而 eBay、Twitter、Facebook、Google 等大公司则使用一切定制产品,只要它们能够工作,并且对其保密,因为这是他们必须解决的非常困难的问题之一,才能使他们的公司得以生存。

--

小型网络服务器已经变得非常普遍,您通常会看到像 Apache、Tomcat 或 IIS 这样的网络服务器,它背后可能还有一个数据库(PostgreSQL、SQL Server 或 MySQL),也许还有一个编程层(PHP、Python、Ruby、Java 等)。

对于规模较大但仍然较小的设置,您可以将这些层分成不同的服务器 - 两个运行 Apache 的服务器都查看同一个共享文件,两个运行数据库的服务器各有一半的数据,另一个服务器可能用于缓存,或者您可能只是让它们尽可能强大。这可以让您走得更远 - Plenty of Fish 在 2007 年进入 HitWise 前 100 名网站,每小时提供 200 多万次浏览量,有 1 台服务器并将图像托管外包给 Akamai。

如果您很富有,例如政府、航空业等,您可以从这里扩大规模,使用大型专业服务器,如刀片中心、数十个处理器的 Sun 服务器、存储设备中的数十个磁盘和 Oracle 数据库等。

对于其他人来说,如何以低成本扩大规模的问题仍未得到解答。如何做到这一点是他们公司的核心问题之一,也是他们将花费大量精力进行定制建设的问题之一。

它很可能包含一些有趣的方法,让许多数据库服务器参与进来。不是谷歌,他们编写了自己的文件系统顶部数据库替换。您可能会看到分片(将您的内容 AM 拆分到一台服务器,NZ 拆分到另一台服务器)或复制(所有服务器都有相同的数据,读取来自其中任何一台服务器,写入发送到所有服务器)或某些自定义内容。

它可能包含许多缓存服务器,例如运行 Memcached。这些服务器将拥有大量 RAM,并快速返回最近执行过的数据库查询和最近请求的文件。2008 年,Facebook 表示“我们使用超过 800 台 (memcached) 服务器,为用户提供超过 28 TB 的内存。”关联

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

您还会发现许多自定义代码和努力工作但保密的人。为 eBay 拍卖提供服务意味着要处理大量流量,但单个拍卖品的数据大多是静态的,而搜索 eBay 拍卖则意味着大量的数据处理。谷歌搜索网络意味着大量的数据处理,但方式不同 - 不同的数据存储在不同的服务器上。Facebook 意味着大量信息在大量用户之间交叉传播,Twitter 也是如此,但特点不同。谷歌和 Facebook 设计了自己的服务器硬件。

答案2

他们有许多不同的地点,所有用户都被引导到最近的地点。这是通过任播

每个位置都有许多前端服务器(Web 服务器),后端有多个不同的数据库集群。他们经常这样做数据库分片那里。

通常在前端服务器和后端数据库服务器之间有一个层。所有计算和数据处理都在这个层中进行。谷歌正在使用这个层地图减少

这是一个非常简短的介绍,但链接应该可以帮助您找到更详细的信息。

答案3

例如,Google 或 Facebook 这样的网站是如何处理其收到的数十亿页面浏览量的?

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

我知道循环 DNS,据我所知,它以循环方式为访问者 A 提供一个 IP,然后为访问者 B 提供另一个 IP,依此类推。

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

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

不。如果是“数万台”服务器,答案是肯定的。Google 运营着许多数据中心,每个数据中心都有 100,000 多台服务器。

他们使用 AS 路由将流量重定向到最近的数据中心。

相关内容