Technologie, które umożliwiają dystrybucję w skali YouTube?

34

YouTube, jak wiemy, jest ogromny. Ma tysiące jednoczesnych użytkowników przesyłających strumieniowo co najmniej 2 megabajty na film. Oczywiście musi to być duży ruch ... zdecydowanie za duży dla jednego serwera.

Jakie technologie sieciowe pozwalają na przesyłanie 4 miliardów filmów dziennie?

użytkownik1034912
źródło

Odpowiedzi:

51

Skalowanie na backendie

W bardzo prostej konfiguracji jeden wpis DNS przechodzi na jeden adres IP, który należy do jednego serwera. Wszyscy na całym świecie korzystają z tej jednej maszyny. Przy wystarczającym ruchu jest to zbyt wiele, aby poradzić sobie na długo, zanim osiągniesz rozmiar YouTube. W prostym scenariuszu dodajemy moduł równoważenia obciążenia. Zadaniem modułu równoważenia obciążenia jest przekierowywanie ruchu na różne serwery zaplecza, jednocześnie występując jako jeden serwer.

Przy takiej ilości danych, jaką ma YouTube, byłoby zbyt wiele, aby oczekiwać, że wszystkie serwery będą mogły obsługiwać wszystkie filmy, więc mamy kolejną warstwę pośrednictwa, którą można dodać: sharding . W wymyślonym przykładzie jeden serwer jest odpowiedzialny za wszystko, co zaczyna się od „A”, inny jest właścicielem „B” i tak dalej.

Przesunięcie krawędzi bliżej

Jednak ostatecznie przepustowość staje się bardzo intensywna i przenosisz DUŻO danych do jednego pokoju. Teraz, gdy jesteśmy bardzo popularni, przenosimy go z tego pokoju. Dwie ważne tutaj technologie to sieci dystrybucji treści i Anycasting .

Tam, gdzie na całym świecie żądane są te duże pliki statyczne, przestaję wskazywać bezpośrednie linki do moich serwerów hostingowych. Zamiast tego umieszczam link do mojego serwera CDN. Gdy ktoś prosi o obejrzenie filmu, pyta o to mój serwer CDN. CDN jest odpowiedzialny za posiadanie filmu, proszenie o kopię z serwera hostingowego lub przekierowanie mnie. Różni się to w zależności od architektury sieci.

W jaki sposób CDN jest pomocny? Cóż, jeden adres IP może faktycznie należeć do wielu serwerów, które są w wielu miejscach na całym świecie. Gdy Twoje żądanie opuszcza Twój komputer i trafia do Twojego dostawcy usług internetowych, jego router mapuje najlepszą ścieżkę (najkrótszą, najszybszą, najmniejszą kosztem ... niezależnie od metryki) do tego adresu IP. Często w przypadku sieci CDN, która będzie znajdować się w Twojej najbliższej sieci poziomu 1 lub obok niej .

Poprosiłem więc o film z YouTube. Rzeczywista maszyna, na której była przechowywana, to przynajmniej iad09s12.v12.lscache8.c.youtube.comi tc.v19.cache5.c.youtube.com. Te pojawiają się w źródle mojej strony, na którą patrzę i zostały dostarczone przez jakąś formę serwera indeksującego. Teraz z Maine odkryłem, że serwer tc19 jest w Miama na Florydzie. Z Waszyngtonu znalazłem serwer tc19 w San Jose w Kalifornii.

Jeff Ferland
źródło
4
Twój wymyślony przykład fragmentowania jest najlepszy, jaki widziałem. Wydaje się, że z jakiegoś powodu wszyscy wydają się komplikować tę prostą koncepcję.
kizzx2
@Jeff, Byłoby wspaniale, jeśli dodasz jakieś cytaty lub wyraźnie wyjaśnisz, że jest to spekulacja użytkownika końcowego.
Pacerier
23

W przypadku dużych witryn stosuje się kilka technik.

www.youtube.com -> dowolna liczba adresów IP

Spójrzmy na 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

Więc www.youtube.com może faktycznie przejść na kilka adresów IP.

anycastowane adresy IP

Pojedynczy adres IP może być obsługiwany jednocześnie przez dowolną liczbę systemów autonomicznych (sieć w Internecie). Na przykład wiele głównych serwerów DNS, a także 8.8.8.8serwer DNS Google, są anycastowane w wielu punktach na całym świecie. Chodzi o to, że jeśli jesteś w USA, trafiasz do sieci w USA, a jeśli jesteś w Wielkiej Brytanii, trafiasz do sieci w Wielkiej Brytanii.

media pochodzące z innego serwera

To, że jesteś włączony www.youtube.com, nie oznacza, że ​​cała zawartość musi pochodzić z tego samego serwera. Bezpośrednio na tej stronie zasoby statyczne są podawane sstatic.netzamiast serverfault.com.

Na przykład, jeśli oglądamy PSA Slave Leia Kaley Cuoco, stwierdzamy, że media są obsługiwane v10.lscache5.c.youtube.com.

wiele połączeń internetowych

Zapewniam cię, że YouTube ma więcej niż jedno połączenie internetowe. Niezależnie od wszystkich innych technik, nawet jeśli Youtube rzeczywiście był jedną witryną i jednym serwerem, teoretycznie mógłby mieć połączenia z każdą inną siecią, do której obsługiwał wideo. W prawdziwym świecie nie jest to oczywiście możliwe, ale pomyśl o tym.

Dowolny lub wszystkie z tych pomysłów (i nie tylko!) Można wykorzystać do obsługi sieci dostarczania treści . Przeczytaj ten artykuł, jeśli chcesz dowiedzieć się więcej.

MikeyB
źródło
„teoretycznie mógłby mieć połączenia z każdą inną siecią, do której obsługiwał wideo. W prawdziwym świecie nie jest to oczywiście możliwe, ale weź pod uwagę pomysł”. Dlaczego nie jest to możliwe w prawdziwym świecie? Możesz subskrybować wielu dostawców Internetu
1034912
Naprawdę chcesz mieć niezależne połączenia z ponad trzydziestoma pięcioma tysiącami oddzielnych sieci? To nie jest praktyczne.
MikeyB,
12

Mylisz się, wyobrażając sobie, że YouTube (alias Google) ma tylko jeden serwer; ta informacja może pomóc zilustrować skalę systemu, który wspiera tę usługę.

Nawet jeśli masz tylko jeden punkt obecności, możesz absolutnie mieć więcej niż jeden serwer za jedną nazwą, a nawet adres IP, używając narzędzi takich jak usługi równoważenia obciążenia i inne.

Google ma jednak bardzo dużo punktów obecności i korzysta z narzędzi takich jak AnyCast - technika publikowania tego samego adresu IP w wielu miejscach w Internecie i zachęcania ludzi do routingu do najbliższej puli serwerów, która jest jego właścicielem - w celu zabezpieczenia infrastruktury.

Daniel Pittman
źródło
1
Jak Google umieszcza milion serwerów na całym świecie? Czy wynajmują serwery? Czy nie byłoby im trudno utrzymać bezpieczeństwo danych zarządzając wszystkimi serwerami stron trzecich?
user1034912,
2
Są właścicielami każdego z nich. Poważnie, kupują - no cóż, w dzisiejszych czasach - je. W pewnym sensie kosztuje to tyle, ile można sobie wyobrazić, ale w innych mniej.
Daniel Pittman
1
inwestor.google.com/financial/tables.html może pomóc; Q4, 2011, przyszło 10 000 ... milionów dolarów. Poważnie, są na skalę, której nie możesz sobie wyobrazić.
Daniel Pittman
2
@ user1034912 - tak, to oszałamiające. Ale to jest Google , więc dlaczego do cholery nie? Na świecie są tysiące centrów danych, Google zdarza się, że operuje ich niewielką część.
tombull89
1
@Tomtom - Dlaczego nie byłoby trudno uwierzyć użytkownikowi, który nie zna technologii serwerowej? Mówienie, że ktoś, kto nie zna Google, ma setki serwerów, żyje pod kamieniem. Wyjdź na zewnątrz i poproś garstkę zwykłych nietechnicznych, a ja gwarantuję, że nie znają skali serwerów Google, ani nawet czym są. Czy zwykli ludzie zwykle przeglądają bilanse? Czy zawsze musisz czytać wszystkie wiadomości o centrach danych? Szczerze mówiąc, nie dbam o to, ile masz przedstawicieli, ale bycie niegrzecznym, lekceważącym i poniżającym nie doprowadzi cię do nikąd w życiu.
DMan
3

Poruszę trochę po stronie sieci: Google ma Point of Presence (PoP) w 73 unikalnych centrach danych na całym świecie (nie wliczając ich własnego). Są członkami 69 unikalnych giełd internetowych . Google znajduje się w większej liczbie centrów danych i punktów wymiany internetowej niż w innych sieciach wymienionych na peeringdb.

Całkowita pojemność wymiany internetowej Google wynosi> 1,5 TB / s, a 1,5 TB / s jest zarezerwowane dla sieci o ruchu> 100 Mb / s z Google, ale mniej niż przypuszczam około 2-3 Gb / s. Po uzyskaniu „wystarczającej objętości” zostaniesz przeniesiony do prywatnej komunikacji równorzędnej (PNI).

Oprócz komunikacji równorzędnej z programem Exchange i prywatnej komunikacji równorzędnej (z AS15169), YouTube prowadzi również sieć tranzytową: AS43515, a inna sieć, która, jak zakładam, dotyczy płatnej komunikacji równorzędnej / przepełnienia, AS36040. Google obsługuje również serwery Google Global Cache , aby dostawcy usług internetowych mogli wdrażać jeszcze więcej lokalnie w swojej sieci. (Dane z peeringdb, bgp.he.net).

Na podstawie moich doświadczeń uważam, że YouTube używa znacznie więcej niż tylko geolokalizacji IP lub Anycast, aby wybrać lokalizację, z której będą wyświetlane filmy.

Google prowadzi ogromną globalną sieć szkieletową, mają ciemne włókna , sfinansowali kable podwodne . Wielkość ruchu generowanego przez YouTube jest ogromna! Domyślam się, że YouTube ma szczytowy ruch> 12 TB / s. Google reprezentuje co najmniej 7% (i prawdopodobnie> 10%) całego ruchu internetowego między domenami.

Aby odpowiedzieć na twoje pytanie, z perspektywy sieci, aby skalować się jak YouTube, musisz dokonać ogromnej inwestycji w swoją sieć - od światłowodu w ziemi po sprzęt WDM i routery. Musisz uzyskać dostęp do treści i sieci jak najbliżej użytkowników. Zwykle oznacza to peering, IXs, a może trochę tranzytu. Musisz być w stanie inteligentnie powiedzieć użytkownikom, skąd wziąć zawartość, aby utrzymać ruch równomiernie rozłożony i tani. I oczywiście musisz mieć ogromną infrastrukturę serwerów, aby przechowywać, przetwarzać, konwertować i dostarczać 4 miliardy wyświetleń dziennie!

Jeśli ciekawi Cię strona serwera, napisałem post na blogu, w którym opisuję niektóre z ostatnio wydanych obrazów centrum danych.

wirtualnie
źródło
A ty pracujesz dla Google?
Pacerier
2

Jeśli chcesz dowiedzieć się więcej o systemach na dużą skalę i technologiach wykorzystywanych przez te firmy, najlepszym źródłem jest teraz http://highscalability.com

Największe firmy takie jak Google czy Akamai zawsze mają komponenty, które same napisały / stworzyły. (na przykład Akamai opracował serwer WWW dla swoich usług)

Gabor Vincze
źródło
Niektóre dane są jednak nieaktualne ...
Pacerier,