Youtube, как мы знаем, огромен. У него тысячи одновременных пользователей, транслирующих не менее 2 мегабайт на видео. Очевидно, это становится большим объемом трафика ... слишком большим для любого сервера.
Какие сетевые технологии позволяют продвигать 4 миллиарда видео в день?
В очень простой настройке одна DNS-запись идет на один IP-адрес, принадлежащий одному серверу. Все во всем мире пользуются этой единственной машиной. При достаточном трафике это слишком много, чтобы справиться с этим задолго до того, как вы достигнете размеров YouTube. В простом сценарии мы добавляем балансировщик нагрузки. Задача балансировщика нагрузки - перенаправлять трафик на различные внутренние серверы, выступая при этом как один сервер.
С таким большим объемом данных, как у YouTube, было бы слишком много ожидать, что все серверы смогут обслуживать все видео, поэтому у нас есть еще один уровень косвенного обращения: шардинг. В надуманном примере один сервер отвечает за все, что начинается с «A», другой владеет «B» и так далее.
В конце концов, однако, пропускная способность становится очень большой, и вы перемещаете МНОГО данных в одну комнату. Итак, теперь, когда мы суперпопулярны, мы убираем его из этой комнаты. Здесь важны две технологии: сети распространения контента и Anycasting.
Там, где у меня есть эти большие статические файлы, которые запрашиваются во всем мире, я прекращаю указывать прямые ссылки на мои серверы хостинга. Вместо этого я размещаю ссылку на свой сервер CDN. Когда кто-то просит просмотреть видео, они просят об этом мой сервер CDN. CDN отвечает за то, что видео уже есть, запрашивает копию с хост-сервера или перенаправляет меня. Это будет зависеть от архитектуры сети.
Чем полезен этот CDN? На самом деле один IP-адрес может принадлежать множеству серверов, которые находятся во многих местах по всему миру. Когда ваш запрос покидает ваш компьютер и переходит к вашему интернет-провайдеру, его маршрутизатор сопоставляет лучший путь (самый короткий, самый быстрый, наименее затратный ... независимо от метрики) с этим IP-адресом. Часто для CDN это будет рядом с вашим ближайшим 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-адрес может обрабатываться одновременно любым количеством автономных систем (сетью в Интернете). Например, многие корневые DNS-серверы, а также серверы Google 8.8.8.8
DNS-серверы доступны во многих точках земного шара. Идея состоит в том, что если вы находитесь в США, вы попадаете в сеть США, а если вы находитесь в Великобритании, вы попадаете в сеть Великобритании.
Просто потому, что ты на www.youtube.com
, это не означает, что весь контент должен поступать с одного сервера. Прямо на этом сайте статические ресурсы обслуживаются из sstatic.net
вместо того serverfault.com
.
Например, если мы смотрим Рабыня Кейли Куоко Лея PSA мы обнаруживаем, что СМИ обслуживаются v10.lscache5.c.youtube.com
.
Уверяю вас, Youtube имеет более одного выхода в Интернет. Несмотря на все другие методы, даже если бы Youtube действительно был единым сайтом и единым сервером, он теоретически мог бы иметь соединения со всеми другими сетями, к которым он обслуживал видео. В реальном мире это, конечно, невозможно, но рассмотрите идею.
Любую или все эти идеи (и многое другое!) Можно использовать для поддержки Сеть доставки контента. Прочтите эту статью, если хотите узнать больше.
Вы ошибаетесь, полагая, что YouTube (он же Google) имеет только один сервер; эта инфографика может помочь проиллюстрировать масштаб системы, которая поддерживает эту услугу.
Даже если у вас есть только одна точка присутствия, вы можете иметь более одного сервера за одним именем и даже IP, используя такие инструменты, как балансировщики нагрузки и все такое.
У Google, однако, очень много точек присутствия, и он использует такие инструменты, как AnyCast - методику публикации одного и того же IP-адреса в нескольких местах в Интернете и перенаправления людей на ближайший пул серверов, владеющих им, - для поддержки инфраструктуры.
Если вы хотите узнать больше о крупномасштабных системах и технологиях, которые используют эти компании, лучшим источником сейчас является http://highscalability.com
У крупнейших компаний, таких как Google или Akamai, всегда есть компоненты, которые они написали / создали сами. (например, Akamai разработала веб-сервер для своих услуг)
Я немного коснусь сетевой стороны: у Google есть точки присутствия (PoP) в 73 уникальных центрах обработки данных по всему миру (не считая их собственных). Они являются членами 69 уникальных интернет-бирж. Google находится в большем количестве центров обработки данных и точек Интернет-обмена, чем другие сети, перечисленные на peeringdb.
Общая пропускная способность интернет-обмена Google составляет> 1,5 Тбит / с, и эти 1,5 Тбит / с зарезервированы для сетей со скоростью> 100 Мбит / с трафика с Google, но меньше, чем я предполагал, около 2-3 Гбит / с. После того, как у вас есть 'достаточный объем', вы переходите к частному пирингу (PNI).
В дополнение к пирингу Internet Exchange и частному пирингу (с AS15169) YouTube также управляет транзитной сетью: AS43515, и другой сетью, которая, как я полагаю, предназначена для платного пиринга / переполнения, AS36040. Google также управляет Google Global Cache серверов, чтобы интернет-провайдеры могли развернуть их еще более локально в своей сети. (Данные из peeringdb, bgp.he.net).
Исходя из моего опыта, я считаю, что YouTube использует гораздо больше, чем просто IP-геолокацию или Anycast, чтобы выбрать место для показа видео.
Google управляет огромной глобальной магистральной сетью, они владеют темным волокном, у них есть финансируемые подводные кабели. Объем трафика, который генерирует YouTube, огромен! Я предполагаю, что у YouTube пиковый объем трафика> 12 Тбит / с. Google представляет не менее 7% (и, вероятно,> 10%) всего междоменного интернет-трафика.
Итак, чтобы на самом деле ответить на ваш вопрос с точки зрения сети, чтобы масштабироваться, как YouTube, вам нужно сделать огромные инвестиции в свою сеть - от оптоволокна в земле до оборудования WDM и маршрутизаторов. Вы должны сделать контент и сеть как можно ближе к вашим пользователям. Обычно это означает пиринг, IX и, возможно, небольшой транзит. Вы должны иметь возможность разумно сообщать пользователям, откуда брать контент, чтобы трафик был как можно более равномерным и дешевым. И, конечно же, у вас должна быть огромная серверная инфраструктура для хранения, обработки, преобразования и доставки 4 миллиардов просмотров в день!
Если вас интересует серверная часть, я написал Сообщение блога который разбивает некоторые из недавно выпущенных образов центров обработки данных.