据我们所知,YouTube是巨大的。 它有数千个并发用户每个videostream至less2兆字节。 显然,这将成为大量的stream量…太多,任何一台服务器。
什么networking技术允许每天推送40亿个video?
在一个非常简单的设置中,一个DNS条目转到一个属于一个服务器的IP。 世界上的每个人都去那台单机。 有了足够的stream量,在YouTube的规模之前,处理这些内容太长了。 在一个简单的情况下,我们添加一个负载平衡器。 负载平衡器的工作是将stream量redirect到各种后端服务器,同时作为一个服务器出现。
尽pipeYouTube拥有尽可能多的数据,但是期望所有的服务器都能够为所有video提供服务将是太多了,所以我们有另一层间接的添加: 分片 。 在一个人为的例子中,一个服务器负责以“A”开头的所有内容,另一个负责“B”等等。
但是,最终的带宽变得很激烈,而且你正在把大量的数据转移到一个房间里。 所以,现在我们超人气了,我们把它搬出那个房间。 这两个重要的技术是内容分发networking和任播 。
如果我在世界各地都有这么大的静态文件,我就不要直接指向我的托pipe服务器。 我所做的是build立一个链接到我的CDN服务器。 当有人要求观看video时,他们向我的CDN服务器询问。 CDN负责已经有video,要求托pipe服务器的副本,或redirect我。 这将根据networking的体系结构而有所不同。
CDN如何有用? 那么,一个IP实际上可能属于世界上许多地方的许多服务器。 当您的请求离开您的计算机,并到您的ISP,他们的路由器映射到IP的最佳path(最短,最快,最便宜的…任何指标)。 通常对于CDN来说,这将在您最近的一级networking上或旁边。
所以,我请求了一个来自YouTube的video。 它存储的实际机器至less是iad09s12.v12.lscache8.c.youtube.com
和tc.v19.cache5.c.youtube.com
。 那些出现在我正在看的网页的来源,并由某种forms的索引服务器提供。 现在,从缅因州我发现tc19服务器在佛罗里达州的Miama。 从华盛顿,我发现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可以同时被任意数量的自治系统(互联网上的一个networking)处理。 例如,许多根DNS服务器以及Google的8.8.8.8
DNS服务器都在全球许多地方被使用。 这个想法是,如果你在美国,你打美国的networking,如果你在英国,你打英国的networking。
只是因为你在www.youtube.com
,这并不意味着所有的内容都来自同一台服务器。 在这个网站上,静态资源是从sstatic.net
而不是serverfault.com
。
例如,如果我们观看Kaley Cuoco的Slave Leia PSA,我们发现媒体由v10.lscache5.c.youtube.com
。
我向你保证,Youtube有多个互联网连接。 尽pipe所有其他的技术,即使Youtube真的是一个单一的网站和一台服务器,它理论上可以连接到它所服务的每一个其他networkingvideo。 在现实世界中,这当然是不可能的,但要考虑这个想法。
任何或所有这些想法(以及更多!)都可以用来支持内容交付networking 。 阅读这篇文章,如果你想知道更多。
您错误地认为YouTube(又名Google)只有一台服务器; 这个inforgraphic可能有助于说明支持该服务的系统的规模。
即使你只有一个存在点,你可以绝对有一个以上的服务器在一个单一的名字,甚至IP,使用负载平衡器等工具。
然而,谷歌有很多的存在点,并使用像AnyCast这样的工具 – 一种在互联网上的多个地方发布相同IP的技术,并让人们路由到拥有它的最近的服务器池 – 以支持基础设施。
我将在networking方面进行一些探讨:Google在全球73个独特的数据中心(不包括他们自己的)中拥有一个Point of Presence(PoP)。 他们是69个独特的互联网交stream的成员。 与其他在peeringdb上列出的networking相比,Google的数据中心和互联网交换点更多。
Google的总互联网交换容量大于1.5Tbps,而预留给Google的stream量大于100Mbps的networking则只有1.5Tbps,但是我猜可能会低于2-3Gbps。 当你有足够的音量后 ,你将被转移到私人对等(PNI)。
除了Internet Exchange对等和私有对等(使用AS15169)之外,YouTube还运行一个传输networking:AS43515,另一个networking,我假设它是用于付费对等/溢出AS36040。 谷歌还运营Google全球caching服务器,供ISP在其networking中进行更多的本地部署。 (来自peeringdb,bgp.he.net的数据)。
根据我的经验,我相信YouTube不仅仅使用IP地理定位或Anycast来select一个位置来提供video。
谷歌运行一个巨大的全球骨干networking, 他们拥有黑暗的光纤 ,他们资助了海底电缆 。 YouTube所产生的stream量是巨大的! 我猜YouTube的stream量高达12Tbps。 Google占所有域间互联网stream量的至less7% (可能超过10%)。
所以要真正回答你的问题,从networking的angular度来看,为了像YouTube一样扩展,你必须在你的networking上进行大规模的投资 – 从地面光纤到WDM设备,以及路由器。 您必须尽可能将内容和networking接近您的用户。 这通常意味着凝视,IXS,也许有点过境。 您必须能够智能地告诉用户从哪里获取内容,以尽可能保持stream量均匀分布和便宜。 当然,您必须拥有庞大的服务器基础架构来存储,处理,转换和交付每天40亿个视图!
如果您对服务器端很好奇,我写了一篇博客文章 ,分解了最近发布的一些数据中心映像。
如果你想了解更多关于大型系统和这些公司使用的技术,现在最好的来源是http://highscalability.com
像Google或Akamai这样的最大的公司,他们总是有自己编写/创build的组件。 (例如,Akamai为他们的服务开发了一个networking服务器)