Як працюють CDN (мережі розповсюдження контенту)?


37

Приймаючи Akamai як CDN. З того, що я розумію, коли клієнт запитує сторінку, запит переходить на центральний сервер Akamai, який потім, залежно від місця розташування клієнта, забирає крайній сервер Akamai, а наступні запити клієнта переходять безпосередньо до цього крайового сервера. Моє питання:

Коли клієнт запитає веб-сайт (по імені), як тільки DNS вирішить ім'я до IP-адреси центрального сервера Akamai та передасть його клієнту, клієнт буде тримати цю IP-адресу, то як можливі наступні запити перейти безпосередньо до IP-адреси крайових серверів Akamai?

Або це те, що необхідно, коли CDN використовується, тоді саме дозвіл DNS повинен виконувати сервер CDN?

У великих компаній, таких як Google, Amazon, Facebook, є свої CDN-сервери чи вони покладаються на сторонніх постачальників CDN, таких як Akamai? Скажіть, Google і Yahoo! обидва використовують Akamai CDN, а потім вміст Yahoo! і Google проживають на одному сервері? Це не є потенційним питанням безпеки?

Відповіді:


27

Ви не просто розміщуєте весь сайт за допомогою CDN, а лише вміст .

Я щойно зрозумів, що відповів на подібне запитання ще раз: Що робить akamaihd.net?

Потік запитів данихЗображення WikiMedia

Тож посилання на ваш сайт http://akamai/myfile.ext. Це буде запит myfile.extвід akamai. akamaiпотім може надіслати переспрямування HTTP на фактичний сервер вмісту.

Тепер, коли цей останній крок кешований, чудово, усі майбутні запити перейдуть на найближчий сервер вмісту.

Як це працює?

Припустимо, цей веб-сайт:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Я прошу цей веб-сайт у власного веб-сервера. .htmlФайл НЕ пройшов з cdn. Ні DNS мого веб-сервера.

Початковий запит

Тож мій браузер отримав цей HTML-файл і тепер його аналізує. Він знаходить посилане зображення і зазначає, що воно знаходиться в http://cdn/oliver.png. Він запитує цей файл.

Для цього потрібно знайти IP-адресу cdn. У нашому прикладі ця IP-адреса є 10.10.10.10.

За допомогою цієї IP-адреси він може з'єднуватися із cdnсервером та запитувати /oliver.png.

Географічне розташування

Тепер cdnрозуміє, " той хлопець з Німеччини! ". Тож замість того, щоб надсилати мені свою дивовижну картинку, яку я хотів, він надсилає мені переспрямування HTTP:

/oliver.png тут немає. Це в10.10.33.33/oliver.png

Тож мій браузер попросить 10.10.33.33(що, сподіваюся, мені ближче) про картинку.

Серйозно?

Я не кажу, що так працюють ВСІ CDN, але це був би один підхід.

Ви також можете реалізувати демон DNS, який повертає різні результати пошуку імен залежно від місцезнаходження того, хто надіслав запит.
Але я сумніваюся, що це робиться на практиці. Але, можливо, я просто не уявляю, як правильно це налаштувати. Дивіться пухнасту відповідь, як це могло б працювати.

Хто керує CDN?

Більшість глобальних гравців певною мірою мають власну мережу доставки контенту (або я б так вважав). Деякі провайдери просто завантажують певні послуги на більші CDN (наприклад, Microsoft це робить із завантаженнями MSDN). І це може якось зачепити ваш другий предмет.

Враховуйте це, в MSDN Microsoft пропонує завантаження продуктів. Ці завантаження потім надає Akamai. Якщо ви можете визначити URL-адресу завантаження, ви можете просто завантажити продукт, не контактуючи з Microsoft.

Це питання безпеки? Не дуже, тому що те, що завантажується, все ще захищене (ключем продукту).

Але як щодо інших даних?

Якщо ваші дані стосуються безпеки, це не матеріал CDN. Якщо ви не хочете, щоб щось було доступне якомога ширше, не кладіть його в CDN.


Скажімо, сайт є деяким веб- сайтом / file.txt . Скажімо, використовується DNS Akamai. Тоді чи перший запит від клієнта переходить на якийсь веб-сайт, або перший самий запит переходить до Akamai (адже якось DNS, який використовується клієнтом, знає, що Akamai CDN використовується)?
p2pnode

І, можливо, я не розумію перенаправлення HTTP і чого вони здатні досягти, тому все ще залишається моє питання, як клієнт знає використовувати IP-адресу крайових серверів Akamai, щоб центральні сервери Akamai не повинні з'являтися на все ..
p2pnode

@ p2pnode: я трохи розширив відповідь. Сподіваємось, це включає те, що вам цікаво.
Der Hochstapler

1
Невже від цього не вдалося досягти значних результатів? Замість того, щоб вся передача даних відбувається через один потік TCP, використовуються кілька потоків, більше накладних витрат від рукостискання тощо.
Акаш,

@Akash: Зазвичай ви б не використовували CDN для всього , а лише окремих великих файлів. Тож на практиці це не проблема.
Der Hochstapler

11

Досить поширеним підходом до CDN є використання того, що відомо як " anycast ". Як це працює, це те, що ваші розподілені сервери розміщені з DNS, які відповідають на цьому сервері в якості місця призначення; Наприклад, у вас можуть бути три сервери в різних хостингових системах, і всі їх відповідні DNS вимагають, щоб їх IP-адреса була канонічною для вашого сервера (називайте це, скажімо, content.example.com). Кожен з DNS-серверів налаштований на однакову глобальну IP-адресу, а потім кожен з серверів використовує оновлення BGP, щоб зробити так, що маршрут до найближчого сервера виграє - тому, коли ви здійснюєте пошук імені content.example.com, найшвидший / найближчий / більшість доступних DNS відповідає на запит своїм HTTP-сервером.

Таким чином, жодних хитрощів GeoIP не потрібно, і вам завжди подається вміст, який би сервер був для вас найшвидшим - що може або не може мати нічого спільного з його фізичним розташуванням через неоднорідність Інтернету.

Наскільки я розумію, що Akamai принаймні частково працює таким чином.


5

Також доступні компакт-диски типу Origin Pull.

Amazon Cloudfront здатний використовувати цю техніку.

Ви налаштували CNAME на зразок media.example.com, який вказує на призначене ім'я сервера і залишає весь ваш вміст на вашому сервері. Для зображень та вмісту, які ви хочете доставити через CDN, ви використовуєте media.example.com у URL-адресі. Запит переходить до їх серверної мережі, і якщо вміст недоступний, їхні сервери витягують вміст із вашого сервера. Потрапивши до системи, вміст поширюється на ферми серверів, найближчі до тих, де існує попит, і залишається там для призначеного TTL. Ваш сервер більше не бачить ніякого трафіку на кешованому вмісті, поки термін TTL не закінчиться, і Cloudfront повинен оновити його.


1

Akamai не працює таким чином. Різні CDN працюють по-різному, але Akamai спеціально не робить anycast для своїх веб-серверів.

Коли користувач у Нью-Йорку хоче www.acme.com, сервер імен acme.com перенаправляє ("делегатами") на сервер імен Akamai. Сервер імен Akamai бачить, де знаходиться машина, яка задає питання (на основі своєї IP-адреси), і повертає IP-адресу найближчого / найкращого сервера Akamai для обслуговування www.acme.com.


Як це працює? Сервер імен Akamai отримує запит від користувача безпосередньо або від сервера DNS користувача, який делегує на сервер імен Akamai? Тож воно буде геологічно розміщене відповідно до місця розташування сервера DNS, а не користувача?
odiszapc

0

Чудовий підсумок того, як працює CDN Akamai, можна знайти тут

Коротко:

  • Сервери CDN мають запис CNAME, який вказує на DNS-сервери Akamai.
  • Отже, перший запит, який клієнт звертає до сервера CDN, його DNS заглянув на DNS-сервер Akamai, який відповідає на ip-адресу близького до користувача сервера Akamai (називається "Edge Servers")
  • Ці Edge-сервери можуть обслуговувати статичні елементи з локального кешу, якщо він нещодавно просив іншого користувача, і навіть не потрібно повертатися до вашого сервера, щоб отримати копію об’єкта.
  • Відсутні елементи або сторінки, які не підлягають керуванню, переносяться через мережу Akamai на інший крайній сервер поблизу хоста. Цей крайовий сервер робить фактичні запити на хост-сайт і передає їх назад по мережі на початковий крайовий сервер, а звідти вони повертаються кінцевому користувачу.
  • Оскільки крайові сервери внутрішньо спілкуються за допомогою фірмових протоколів Akamai та маршрутизуються навколо вузьких місць, трафік може протікати набагато швидше, ніж через загальнодоступний Інтернет.

і як було зазначено у вищезгаданому дописі блогу, деякі великі корпорації вирішують DNS за допомогою власних серверів, що може заперечувати деякі переваги використання CDN.


-2

CDN працює на DNS Anycast. Anycast dns працює на Anycast ip. Anycast ip: Призначення одного ip на декількох серверах. Коли запит користувача на dns резольвер, цей запит буде оброблятися найближчим сервером і надаватиме дані з сервера з найменшою затримкою.


Яким чином це покращує існуючі, набагато повніші відповіді?
Ченмунка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.