Answers:
在一个非常简单的设置中,一个DNS条目进入一个IP,该IP属于一台服务器。世界各地的每个人都使用那台机器。有了足够的流量,在您达到YouTube的规模之前,要处理的时间太长了。在一个简单的场景中,我们添加了一个负载均衡器。负载平衡器的工作是将流量重定向到各种后端服务器,同时显示为一台服务器。
拥有与YouTube一样多的数据,就无法期望所有服务器都能够提供所有视频,因此我们要添加另一层间接方法:分片。在一个人为的示例中,一台服务器负责以“ A”开头,另一台拥有“ B”等所有内容,依此类推。
最终,带宽变得越来越大,您将大量数据移入一个房间。因此,现在我们非常受欢迎,我们将其移出了那个房间。这里重要的两种技术是内容分发网络和任意广播。
在世界各地都需要大量静态文件的地方,我不再指向托管服务器的直接链接。相反,我要做的是建立指向我的CDN服务器的链接。当有人要求观看视频时,他们会向我的CDN服务器询问。CDN负责已经拥有视频,从托管服务器索取副本或重定向我。这将根据网络的架构而有所不同。
CDN有什么帮助?嗯,一个IP实际上可能属于世界各地许多地方的许多服务器。当您的请求离开您的计算机并转到ISP时,他们的路由器会将最佳路径(最短,最快,成本最低……等等)映射到该IP。通常是CDN,它位于您最近的Tier 1网络上或附近。
因此,我要求YouTube提供视频。实际存储的计算机至少为iad09s12.v12.lscache8.c.youtube.com
和tc.v19.cache5.c.youtube.com
。这些内容显示在我正在查看的网页源中,并由某种形式的索引服务器提供。现在,从缅因州,我发现tc19服务器位于佛罗里达州的迈阿密。在华盛顿,我发现tc19服务器位于加利福尼亚的圣何塞。
大型站点使用了几种技术。
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可以同时由任意数量的自治系统(Internet上的网络)处理。例如,许多根DNS服务器以及Google的8.8.8.8
DNS服务器在全球许多地方都是任意播出的。这个想法是,如果您在美国,则访问了美国网络;如果您在英国,则访问了英国网络。
仅仅因为您在使用www.youtube.com
,并不意味着所有内容都必须来自同一服务器。在此站点上,从而sstatic.net
不是从提供静态资源serverfault.com
。
例如,如果我们观看Kaley Cuoco的Slave Leia PSA,我们会发现媒体是由投放的v10.lscache5.c.youtube.com
。
我向你保证,Youtube有多个互联网连接。尽管使用了所有其他技术,即使Youtube确实是一个站点和一台服务器,从理论上讲,它也可以与向其提供视频服务的每个其他网络建立连接。在现实世界中,这当然是不可能的,但请考虑一下这个想法。
这些想法中的任何一个或全部(甚至更多!)都可用于支持内容交付网络。如果您想了解更多信息,请阅读该文章。
您以为YouTube(又称Google)只有一台服务器是错误的。此信息可能有助于说明支持该服务的系统的规模。
即使您只有一个接入点,也可以使用诸如负载均衡器之类的工具,在一个名称甚至IP后面绝对拥有一台以上的服务器。
但是,Google有很多存在点,并使用AnyCast之类的工具-一种在Internet上的多个位置发布相同IP的技术,并将人们路由到拥有它的最近的服务器池中-以支持基础结构。
我会稍微谈谈网络方面的问题:Google在全球73个独特的数据中心(不包括它们自己的)中拥有一个Point of Presence(PoP)。他们是69个独特的Internet交流的成员。Google在peeringdb上列出的其他网络中的数据中心和Internet Exchange点更多。
Google的总互联网交换容量> 1.5Tbps,而该1.5Tbps保留给与Google的流量> 100Mbps的网络使用,但比我估计的2-3Gbps小。拥有足够的容量后,您将移至专用对等(PNI)。
除了Internet Exchange对等和专用对等(使用AS15169)外,YouTube还运营一个传输网络:AS43515,我假设还有一个用于付费对等/溢出的网络AS36040。Google还运营Google Global Cache服务器,供ISP在其网络内甚至更多地本地部署。(数据来自peeringdb,bgp.he.net)。
根据我的经验,我相信YouTube不仅会使用IP地理位置或Anycast来选择提供视频的位置。
Google拥有庞大的全球骨干网,拥有深色光纤,为海底电缆提供资金。YouTube带来的流量巨大!我猜想YouTube的峰值流量超过12Tbps。Google 至少占所有域间互联网流量的7%(可能超过10%)。
因此,要从网络角度真正回答您的问题,要像YouTube那样进行扩展,您必须对网络进行大量投资-从地面光纤到WDM设备以及路由器。您必须使内容和网络尽可能靠近用户。这通常意味着对等,IX,并且可能需要一些过渡。您必须能够智能地告诉用户从何处获取内容,以使流量尽可能平均地分布并且便宜。当然,您必须拥有庞大的服务器基础架构才能每天存储,处理,转换和交付40亿个视图!
如果您对服务器端感到好奇,我写了一篇博客文章,其中介绍了一些最近发布的数据中心映像。
如果您想了解有关大型系统和这些公司使用的技术的更多信息,现在最好的资源是http://highscalability.com
像Google或Akamai这样的大公司,总是拥有自己编写/创建的组件。(例如,Akamai为他们的服务开发了一个网络服务器)