Вы не просто размещаете весь сайт с 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.
Довольно распространенный подход к CDN заключается в использовании так называемого « anycast ». Это работает так, что ваши распределенные серверы располагаются вместе с DNS-серверами, которые отвечают этим сервером в качестве пункта назначения; Например, у вас может быть три сервера в разных хостингах, и все их соответствующие DNS-серверы утверждают, что их IP-адрес является каноническим для вашего сервера (например, назовите его
content.example.com
). Каждый из DNS настроен на использование одного и того же глобального IP-адреса, и затем все серверные средства используют обновления BGP, чтобы обеспечить выигрыш маршрута к ближайшему серверу - поэтому при поискеcontent.example.com
имени самый быстрый / ближайший / наиболее доступный DNS отвечает на запрос своим HTTP-сервером.Таким образом, не нужно никаких хитростей GeoIP, и вы всегда получаете контент с того сервера, который работает быстрее всего, что может иметь или не иметь никакого отношения к его физическому расположению из-за разнородной природы Интернета.
Насколько я понимаю, Akamai хотя бы частично работает таким образом.
источник
Также доступны CDN типа Origin Pull.
Amazon Cloudfront может использовать эту технику.
Вы устанавливаете CNAME, например media.example.com, который указывает на назначенное им имя сервера, и оставляете весь свой контент на своем сервере. Для изображений и контента, который вы хотите доставить через CDN, вы используете media.example.com в URL. Запрос направляется в их серверную сеть, и если контент недоступен, их серверы извлекают контент с вашего сервера. Попав в систему, контент распределяется по серверным фермам, ближайшим к месту, где существует спрос, и остается там для назначенного TTL. Ваш сервер больше не видит трафик в кэшированном контенте, пока не истечет TTL и Cloudfront не должен обновить его.
источник
Akamai не работает таким образом. Различные CDN работают по-разному, но Akamai специально не делает anycast для своих веб-серверов.
Когда пользователь в Нью-Йорке хочет
www.acme.com
, сервер имен acme.com перенаправляет («делегаты») на сервер имен Akamai. Сервер имен Akamai видит, где находится машина, задающая вопрос (на основе его IP-адреса), и возвращает IP-адрес ближайшего / лучшего сервера Akamai для обслуживанияwww.acme.com
.источник
С кратким описанием работы CDN Akamai можно ознакомиться здесь.
Короче:
и как упоминалось в сообщении в блоге, указанном выше, некоторые крупные корпорации разрешают DNS, используя свои собственные серверы, что может свести на нет некоторые преимущества использования CDN.
источник
CDN работает на Anycast DNS. Anycast DNS работает на Anycast IP. Anycast ip: один IP назначается на нескольких серверах. Когда пользователь запросит разрешение DNS, этот запрос будет обработан ближайшим сервером и предоставит данные с сервера с наименьшей задержкой.
источник