Nie tylko hostujesz całą witrynę z CDN, tylko twoją treść .
Właśnie zdałem sobie sprawę, że jakiś czas temu odpowiedziałem na podobne pytanie: Co robi akamaihd.net?
Zdjęcie WikiMedia
Więc twoja strona odwołuje się http://akamai/myfile.ext
. Będzie to wymagać myfile.ext
od akamai
. akamai
może następnie wysłać przekierowanie HTTP do rzeczywistego serwera treści.
Teraz, gdy ostatni krok zostanie zapisany w pamięci podręcznej, świetnie, wszystkie przyszłe żądania trafią do najbliższego serwera treści.
Jak to działa?
Załóżmy, że ta strona internetowa:
<html>
<body>
<img src="http://cdn/oliver.png" />
</body>
</html>
Proszę o tę stronę z własnego serwera. .html
Plik jest nie obsługiwany z cdn
. Nie ma też DNS mojego serwera.
Pierwsza prośba
Moja przeglądarka otrzymała ten plik HTML i teraz go analizuje. Znajduje przywoływany obraz i zauważa, że jest on zlokalizowany http://cdn/oliver.png
. Żąda tego pliku.
Aby to zrobić, musisz znaleźć adres IP cdn
. W naszym przykładzie jest to adres IP 10.10.10.10
.
Dzięki temu adresowi IP może łączyć się z cdn
serwerem i żądać /oliver.png
.
Lokalizacja geograficzna
Teraz cdn
zdaje sobie sprawę, „ ten facet jest z Niemiec! ”. Zamiast przesyłać mi moje niesamowite zdjęcie, które chciałem, wysyła mi przekierowanie HTTP:
/oliver.png nie ma tutaj. To jest o10.10.33.33/oliver.png
Więc moja przeglądarka poprosi 10.10.33.33
(co mam nadzieję, że jest mi bliżej) o zdjęcie.
Poważnie?
Nie twierdzę, że tak działają WSZYSTKIE sieci CDN, ale byłoby to jedno podejście.
Można również zaimplementować demona DNS, który zwraca różne wyniki wyszukiwania nazwy w zależności od lokalizacji osoby, która wysłała zapytanie.
Wątpię jednak, czy dzieje się to w praktyce. Ale może po prostu nie wyobrażam sobie, jak właściwie to skonfigurować. Zobacz odpowiedź puszystego, jak to może działać.
Kto prowadzi CDN?
Większość globalnych graczy ma swoją własną sieć dostarczania treści (przynajmniej tak przypuszczam). Niektórzy dostawcy po prostu przenoszą niektóre usługi na większe sieci CDN (podobnie jak Microsoft pobiera pliki MSDN). A to może jakoś dotknąć twojego drugiego tematu.
Rozważ to, w MSDN Microsoft oferuje pliki do pobrania. Pliki do pobrania są następnie dostarczane przez Akamai. Jeśli możesz określić adres URL tego pliku do pobrania, możesz po prostu pobrać produkt bez konieczności kontaktowania się z Microsoft.
Czy to problem bezpieczeństwa? Nie bardzo, ponieważ to, co jest pobierane, jest nadal chronione (kluczem produktu).
A co z innymi danymi?
Jeśli Twoje dane dotyczą bezpieczeństwa, to nie są to materiały CDN. Jeśli nie chcesz, aby coś było dostępne tak szeroko, jak to możliwe, nie umieszczaj go w sieci CDN.
Dość powszechne podejście do CDN polega na użyciu tak zwanego „ anycast ”. Działa to tak, że Twoje serwery rozproszone są kolokowane przy użyciu DNS, które odpowiadają serwerowi docelowemu; na przykład, możesz mieć trzy serwery w różnych obiektach hostingowych, a ich odpowiednie DNSy twierdzą, że ich adres IP jest kanoniczny dla twojego serwera (powiedzmy to, powiedzmy
content.example.com
). Każdy z serwerów DNS jest skonfigurowany tak, aby miał ten sam globalny adres IP, a następnie każdy z serwerów korzysta z aktualizacji BGP, aby wygrać trasę do najbliższego serwera - tak więc przy wyszukiwaniu nazwycontent.example.com
najszybszy / najbliższy / najbardziej dostępny DNS odpowiada na żądanie za pomocą swojego serwera HTTP.W ten sposób żadne sztuczki GeoIP nie są konieczne, a zawartość jest zawsze obsługiwana przez ten, który serwer jest dla Ciebie najszybszy - co może, ale nie musi mieć nic wspólnego z jego fizyczną lokalizacją, ze względu na heterogeniczny charakter Internetu.
Rozumiem, że Akamai przynajmniej częściowo działa w ten sposób.
źródło
Dostępne są również CDN typu Origin Pull.
Amazon Cloudfront może korzystać z tej techniki.
Skonfigurujesz CNAME, np. Media.example.com, który wskazuje na przypisaną nazwę serwera i pozostawia całą zawartość na serwerze. W przypadku obrazów i treści, które chcesz dostarczyć za pośrednictwem CDN, w adresie URL użyj media.example.com. Żądanie trafia do ich sieci serwerów, a jeśli treść nie jest dostępna, ich serwery pobierają zawartość z twojego serwera. Po wejściu do systemu zawartość jest dystrybuowana do farm serwerów znajdujących się najbliżej miejsca, w którym istnieje zapotrzebowanie i pozostaje tam dla przypisanego TTL. Twój serwer nie widzi już żadnego ruchu z pamięci podręcznej, dopóki nie wygaśnie TTL i Cloudfront musi go odświeżyć.
źródło
Akamai nie działa w ten sposób. Różne sieci CDN działają inaczej, ale Akamai specjalnie nie wykonuje anycast dla swoich serwerów sieciowych.
Gdy użytkownik w Nowym Jorku chce
www.acme.com
, serwer nazw acme.com przekierowuje („deleguje”) na serwer nazw Akamai. Serwer nazw Akamai sprawdza, gdzie znajduje się maszyna, która zadaje pytanie (na podstawie jego adresu IP) i zwraca adres IP najbliższego / najlepszego serwera Akamai, który ma być obsługiwanywww.acme.com
.źródło
Świetne podsumowanie działania CDN Akamai można znaleźć tutaj
W skrócie:
i jak wspomniano w wyżej wymienionym poście na blogu, niektóre duże korporacje rozwiązują DNS za pomocą własnych serwerów, co może negować niektóre korzyści płynące z korzystania z CDN.
źródło
CDN działa na Anycast DNS. Anycast dns działa na Anycast ip. Anycast ip: przypisanie jednego adresu IP na wielu serwerach. Gdy żądanie użytkownika dotyczące usługi rozpoznawania nazw dns, zapytanie zostanie obsłużone przez najbliższy serwer i zapewni dane z serwera z najmniejszym opóźnieniem.
źródło