我们知道 Youtube 非常庞大。它有数千名并发用户,每个视频至少有 2 兆字节的流量。显然,这会带来很大的流量……对于任何一台服务器来说都太多了。
哪些网络技术可以推动每天 40 亿个视频?
答案1
后端扩展
在一个非常简单的设置中,一个 DNS 条目指向一个属于一台服务器的 IP。全世界的每个人都会访问这台机器。如果流量足够大,那么在达到 YouTube 的规模之前,这实在是太难以处理了。在一个简单的场景中,我们添加了一个负载平衡器。负载平衡器的工作是将流量重定向到各种后端服务器,同时显示为一台服务器。
由于 YouTube 拥有大量数据,因此期望所有服务器都能够提供所有视频是远远不够的,因此我们需要添加另一层间接层:分片举个虚构的例子,一个服务器负责所有以“A”开头的内容,另一个服务器负责“B”,等等。
让边缘更近
但最终,带宽会变得紧张,你需要将大量数据转移到一个房间。所以,既然我们非常受欢迎,我们就把数据从那个房间移出去。这里最重要的两项技术是内容分发网络和任播。
当我的大型静态文件在世界各地被请求时,我不再将直接链接指向我的托管服务器。我所做的是将链接指向我的 CDN 服务器。当有人要求观看视频时,他们会向我的 CDN 服务器索取。CDN 负责已经拥有视频、从托管服务器索取副本或重定向我。这将根据网络架构而有所不同。
CDN 有什么用呢?好吧,一个 IP 实际上可能属于世界各地的许多服务器。当您的请求离开您的计算机并转到您的 ISP 时,他们的路由器会将最佳路径(最短、最快、成本最低……无论何种指标)映射到该 IP。通常对于 CDN 来说,最佳路径将位于您最近的 IP 上或旁边第 1 层网络。
因此,我从 YouTube 请求了一个视频。存储该视频的实际机器至少是iad09s12.v12.lscache8.c.youtube.com
和tc.v19.cache5.c.youtube.com
。这些显示在我正在查看的网页的源代码中,并且由某种形式的索引服务器提供。现在,从缅因州,我发现 tc19 服务器位于佛罗里达州迈阿密。从华盛顿,我发现 tc19 服务器位于加利福尼亚州圣何塞。
答案2
对于大型站点可以使用多种技术。
www.youtube.com
-> 任意数量的 IP 地址
让我们看看 DNS:
www.youtube.com is an alias for youtube-ui.l.google.com.
youtube-ui.l.google.com has address 74.125.226.14
youtube-ui.l.google.com has address 74.125.226.0
youtube-ui.l.google.com has address 74.125.226.1
youtube-ui.l.google.com has address 74.125.226.2
youtube-ui.l.google.com has address 74.125.226.3
youtube-ui.l.google.com has address 74.125.226.4
youtube-ui.l.google.com has address 74.125.226.5
youtube-ui.l.google.com has address 74.125.226.6
youtube-ui.l.google.com has address 74.125.226.7
youtube-ui.l.google.com has address 74.125.226.8
youtube-ui.l.google.com has address 74.125.226.9
youtube-ui.l.google.com has IPv6 address 2001:4860:800f::88
因此 www.youtube.com 实际上可以转到多个 IP 地址。
任播 IP 地址
单个 IP 可同时由任意数量的自治系统(互联网上的网络)处理。例如,许多根 DNS 服务器以及 Google 的8.8.8.8
DNS 服务器在全球许多地点进行任播。其理念是,如果您在美国,则访问美国网络;如果您在英国,则访问英国网络。
来自不同服务器的媒体
虽然您使用的是www.youtube.com
,但这并不意味着所有内容都必须来自同一服务器。就在本网站上,静态资源由 提供,sstatic.net
而不是serverfault.com
。
例如,如果我们观看卡蕾·库柯 (Kaley Cuoco) 的奴隶莱娅 PSA我们发现媒体是由...提供的v10.lscache5.c.youtube.com
。
多个互联网连接
我向你保证,Youtube 拥有不止一个互联网连接。尽管有其他所有技术,但即使 Youtube 真的是一个单一网站和单一服务器,理论上它也可以连接到它提供视频的每一个其他网络。当然,在现实世界中这是不可能的,但请考虑这个想法。
这些想法中的任何一个或全部(以及更多!)都可用于支持内容分发网络。如果您想了解更多,请阅读该文章。
答案3
您错误地认为 YouTube(又名 Google)只有一台服务器;此信息图可能有助于说明支持该服务的系统的规模。
即使您只有一个接入点,您也可以使用负载平衡器等工具在单个名称甚至 IP 后面拥有多个服务器。
然而,谷歌拥有大量的接入点,并使用 AnyCast 之类的工具(一种在互联网上的多个地方发布相同 IP 的技术,并将人们路由到拥有该 IP 的最近的服务器池)来支持基础设施。
答案4
我将稍微谈一下网络方面的问题:Google 在全球 73 个不同的数据中心(不包括他们自己的数据中心)设有接入点 (PoP)。他们是69 个独特的互联网交换中心。Google 拥有的数据中心和互联网交换点比 peeringdb 上列出的其他网络都要多。
Google 的总互联网交换容量为 >1.5Tbps,而这 1.5Tbps 是为 Google 流量 >100Mbps 的网络保留的,但我猜大概是 2-3Gbps。“足够的数量”,您将转至私人对等互连 (PNI)。
除了 Internet Exchange 对等互连和私有对等互连(使用 AS15169)之外,YouTube 还运营一个传输网络:AS43515,以及另一个我认为用于付费对等互连/溢出的网络 AS36040。Google 还运营Google 全局缓存服务器,以便 ISP 在其网络内进行更本地化的部署。(数据来自 peeringdb、bgp.he.net)。
根据我的经验,我相信 YouTube 不仅仅使用 IP 地理位置或 Anycast 来选择提供视频的位置。
谷歌运营着庞大的全球骨干网络,他们拥有暗光纤, 他们有融资海底电缆。YouTube 产生的流量非常巨大!我猜 YouTube 的峰值流量超过 12Tbps。Google 表示至少 7%(可能占所有域间互联网流量的 10% 以上)。
因此,从网络角度来回答您的问题,为了像 YouTube 那样扩大规模,您必须对网络进行大量投资 - 从地下光纤到 WDM 设备以及路由器。您必须让内容和网络尽可能靠近您的用户。这通常意味着对等、IX,也许还有一些传输。您必须能够智能地告诉用户从哪里获取内容,以尽可能均匀地分布流量并降低成本。当然,您必须拥有庞大的服务器基础设施来存储、处理、转换和交付每天 40 亿次观看!
如果你对服务器端感兴趣,我写了一个博客文章它分解了一些最近发布的数据中心图像。