Сеть доставки (и дистрибуции) контента - (англ. Content Delivery Network или Content Distribution Network, CDN) - географически распределённая сетевая инфраструктура, позволяющая оптимизировать доставку и дистрибуцию контента конечным пользователям в сети Интернет. Использование контент-провайдерами CDN способствует увеличению скорости загрузки интернет-пользователями аудио-, видео-, программного, игрового и других видов цифрового контента.

Считается, что не так уж много в Рунете проектов, которым требуется CDN: новостные агентства, сайты с видео контентом и подобные им проекты с большими файлами. Считается, что сайты поменьше (которых подавляющее большинство: интернет-магазины, блоги, корпоративные сайты и т.д.) вполне могут обойтись и без этого сервиса, так как это дорого и сложно.

После этого ссылки на статические файлы сайта (картинки, файлы стилей css, скрипты js) будут заменены: вместо локальных URL"ов будут использоваться служебные имена серверов сети CDN. При этом не потребуется вносить никакие изменения в DNS и не нужно заботиться о сбросе кэша CDN при обновлении файлов.

Непосредственно для раздачи контента в дальнейшем используется сеть российского провайдера CDN - CDNvideo , в партнерстве с которым реализована эта услуга.

Модуль Ускорение сайта (CDN) является бесплатной дополнительной опцией для любой активной коммерческой лицензии на «1С-Битрикс: Управление сайтом». Никаких дополнительных платежей помимо стоимости самой лицензии или ее продления.

Для каждой отдельной лицензии определены ежемесячные лимиты траффика , который может быть передан через узлы CDN конечным пользователям.

Источник контента - origin - должен быть один. 1С-Битрикс организовала кусочек собственной облачной инфраструктуры (отказоустойчивой и масштабируемой):

Это "облачко" является таким ориджином для сети CDN, проксируя через себя траффик подключенных клиентов и решая несколько важных задач:

  • Определяется, может ли тот или иной сайт использовать CDN (проверяем активность лицензии, квоты на траффик и т.п.)
  • Определяется соответствие запросов тому или иному домену.
  • Распределяются запросы к картинками, css, js по разным доменам.
  • Происходит управление запросами: если происходит отключение (при неактивной лицензии или превышению траффика), то меняются ссылки на редиректы и ожидается, пока отключится замена ссылок на самом сайте. То есть, ни при каком варианте сайт не «ломается».
  • Происходит управление HTTP заголовками для обеспечения максимально эффективного кэширования.

Модуль Ускорение сайта (CDN) , работающий непосредственно на клиентском сайте.

Мы обратились в компанию CDNvideo, когда перед нами встала задача организовать качественную онлайн-трансляцию масштабной бизнес-конференции в СК Олимпийский. Мы ожидали большое количество зрителей в онлайне и хотели минимизировать риски, именно поэтому наш выбор пал на компанию с большим опытом оказания подобных услуг и высокой гарантией качества. К счастью, мы не ошиблись и сделали удачный выбор! Скорость доставки видео-контента, качество картинки и звука были на высоте на протяжении всего мероприятия. Отдельно хочется отметить отзывчивость и клиентоориентированность технической поддержки CDNvideo. По нашей просьбе ребята оперативно, буквально за день до мероприятия подкорректировали дизайн плеера, благодаря чему он вдобавок ко всем своим преимуществам, таким как адаптивность под различные браузеры и мобильные устройства, функция DVR и другие высокотехнологичные опции, еще и идеально вписался в нашу корпоративную стилистику сайта.

Показать полностью

Анастасия Михалко

Работаем с компанией CDNvideo уже более 6 лет (практически с самого основания компании).
С помощью CDNvideo мы транслируем прямой эфир наших телеканалов Шансон ТВ и Страна FM на наших сайтах, в мобильных приложениях (на платформах iOS, Android, Windows Phone) и в приложениях Smart TV. Кроме телеканалов, мы транслируем с помощью CDNvideo Радио Рокс.
В конце 2016 года компания CDNvideo выпустила новый плеер HTML5. С помощью этого плеера мы смогли запустить трансляцию телеканалов в социальной сети ВКонтакте (приложение с трансляцией в наших официальных группах).

Показать полностью

Василий Покидько

Шансон ТВ / Страна FM

Для решения наших задач нам нужен был надежный многолетний партнер, который не боится предлагать нестандартные решения в кратчайшие сроки. Компания CDNvideo полностью соответствует этим требованиям. Мы уверены в долгосрочном сотрудничестве.

Показать полностью

Антон Ламбрианов, директор по маркетингу «АТОМИ РУС»

Начали работать с компанией в 2016 году. В тот момент они нас очень выручили, поскольку в преддверии соревнований мы остались без платформы для трансляции соревнований. И возникла необходимость осуществлять трансляцию через наш сайт http://www.russwimming.ru. CDNvideo нам порекомендовали коллеги, которые уже имели богатый опыт сотрудничества с компанией. Для нас важно было подыскать авторитетную фирму и получить качественные бесперебойные трансляции на регулярной основе.
В процессе подготовки первой трансляции мы получали оперативные, высококвалифицированные, но в тоже время очень понятные для неспециалиста консультации.
Компания очень добросовестная, надежная, инициативная и профессиональная.
Проблемы на первом проекте возникали, но компания была на связи и оперативно исправляла ошибки. В беде не оставили даже в выходные.
Помимо трансляции мы заказали доступ к платформе хранения видеозаписей. И когда у нас по причинам, не зависящим от компании, возникли сложности с передачей диска с видео и его своевременным размещением на портале, CDNvideo помогли найти нам выход из ситуации, предложив в дальнейшем воспользоваться услугой автоматической записи и сохранения трансляции на платформе - таким образом мы получаем готовый файл сразу по окончании онлайн-трансляции на сервере без необходимости дополнительных действий, остается только разместить его коды на сайте. Уже неоднократно воспользовались услугами CDNvideo в организации видеотрансляции, планируем дальнейшее плодотворное сотрудничество!

Показать полностью

Александра Некрасова

Всероссийская федерация плавания

Работа в сфере онлайн игр, обязывает предоставлять игровой контент быстро и качественно. Особо ценим скорость реакции технической поддержки и минимальное количество сбоев в работе сети. Наше сотрудничество продолжается более 2 лет, за это время CDNvideo показала себя как надежный партнер.

Показать полностью

В определенный момент времени, аудитория нашего сайта и нагрузка на сайт стала настолько большой, что наш хостинг-провайдер просто перестал с ней справляться. Сайт зависал, служба поддержки отвечала с очень большой задержкой и все общение проходило только через тикеты. Ответы на вопросы приходили спустя несколько часов, что для нас было критичным. В итоге нами было принято решение воспользоваться услугами компании GPUCloud. В первую очередь очень приятное впечатление произвела служба технической поддержки, которая помогла перенести сайт с одного хостинга на другой без лишних проблем. Сегодня сайт работает стабильно, отлично справляется с нагрузкой, а служба поддержки в случае возникновения вопросов доступна 24/7 в Telegram. Ценовая политика компании, в целом, не сильно отличается от средней по рынку, но качество услуг, на наш взгляд выше, чем у конкурентов.

Показать полностью

Национальная Футбольная Лига

Фактически это технология сводится к анонсированию сетевого адреса, в который резолвится сайт, помещенный в CDN, из этих “географически распределённых мест” и проксированию запросов к условному одному серверу.

Какой профит из этого можно получить?
Размещая данные ближе к клиенту, вы получаете меньшую задержку в ответе для пользователя, сокращаете нагрузку на свой сервер, защита от DDoS… бла-бла-бла - читаем описание любой коммерческой CDN-сети.

Кажется сложным и непонятным? На самом деле это проще чем кажется, ниже всё будет описано более подробно.

2. Почему свой CDN, а не консалтинг. Возникает вопрос, а для чего же делать свою CDN? Много прекрасных CDN-сетей, используй.
Во-первых, это не наш метод;)
Во-вторых, эти сети уже построены, и не факт, что они подходят вам по распределенности на все сто. В случае своей CDN мы вольны где угодно размещать её узлы.
В-третьих, мы вкладываем деньги в свою инфраструктуру, а не в чужую.
В-четвёртных, настроить свою CDN мы можем как угодно. Кешировать можно не только статические данные, но и динамические, например, данные для аннонимусов или общие данные. Такой гибкости нам ни одна коммерческая сеть в полном объёме не даст.3. Профит от использования. Итак, что же конкретно можно получить от своей CDN-сети:

Скорость загрузки/сокращение трафика.
Размещая данные ближе к пользователю можно рассчитывать на то, что эти данные он быстрее получит. Логично. Что с сокращением трафика? Кеширование данных на узлах, позволяет сократить число обращений к “главному серверу”. Плюс, мы можем всегда передавать сжатые данные от главного сервера к узлу CDN, в keepalive-соединениях. Можно настроить узел CDN так, чтобы конкурирующий запросы, которые мы кешируем, не выполнялись параллельно. Это тоже позволяет экономить трафик и процессорное время на “главном сервере”. В случае sports.ru это всё в сумме позволяет сократить число запросов и трафик в 3,5 раза к “главному серверу”.
Так же узел CDN является прекрасным местом для размещения DNS-slave сервера. Собственно, по тем же причинам.

II. Практика.4. Необходимые условия. Для того, чтобы сделать свой сервер CDN нам понадобится сам сервер, своя AS ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%BC%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_ (%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82) и свободный ip-routenum, в котором мы и будем размещать свой CDN. Свободных IPv4 - сетей уже практически не осталось, но никто не мешает использовать эту статью для IPv6 истории:)

Нужно ещё будет как-то проксировать и сохранять ответы приходящих запросов.
Отказоустойчивость будем решать тем фактом, что Proxy и Anycast будем собирать на одном сервере. Если по каким-то причинам он отключится, это никак не повлияет на всю CDN в целом. Естественно, таких серверов должно быть как можно больше;)

5. How To. Для реализации всего задуманного потребуется потребуется сервер с несколькими физическими ядрами для распределение нагрузки сетевой карты на каждое ядро. Достаточное количество оперативной памяти для помещения всего кеша в рамдиск. Мы же не хотим нагружать диски на сервере за тридевять земель? ;) Сетевая карта с поддержкой распределения нагрузки на разные ядра процессора, для того чтобы иметь большую пакетную производительность. И RAID1 на SATA дисках для пущей надёжности.

А ещё это дело надо правильно настроить, чтобы заставить работать в полною силу. Тюнингу под большие веб-нагрузки и выжиманию всех соков из железа хорошо подходит FreeBSD 9.x. Можно использовать и Linux, но в плане прозрачноcти и простоты настройки, единого типа конфигов в моём личном рейтинге выигрывает FreeBSD .
Чтобы не повторятся приведу примеры дельных рекомендаций по настройки FreeBSD под аналогичный тип нагрузки:

Или погууглить на соответствующую тему.

Анонсируемую сеть или часть этой сети я предлагаю разместить на интерфейсе локальной петли:

Добавляем строчки в /etc/rc.conf:

ifconfig_lo0_alias0=«inet /32»
ifconfig_lo0_alias1=«inet /32»

И, конечно, не забыть включить маршрутизацию:

Добавляем строчки в /etc/sysctl.conf:

Включаем электронный диск для кеша данных, будем использовать для этого tmpfs:

Добавляем строчки в /boot/loader.conf:

И /etc/fstab:

tmpfs /mnt/tmpfs tmpfs rw,mode=777 0 0

Анонсировать сеть CDN будем через OpenBGP :
www.freshports.org/net/openbgpd

Он обладает всем необходимым функционалом и просто настраивается. Скупая информация о нём в интернете нивелируется подробным Man-ом. Так же он может интегрироваться с пакетным фильтром PF, если нам захочется использовать его. Вот простой конфиг, который будет делать всё, что необходимо:

/usr/local/etc/bgpd.conf:

AS
router-id
network
group «Uplink» {
neighbor {
remote-as
descr «Uplink»
announce self
}
}
deny from any
deny to any
allow from
allow to prefix

Перейдём к настройке Nginx . Фактически нам необходимо настроить на Nginx кешируюший статику proxy-сервер c агрегацией и сжатием остальных запросов и кеширумых данных.

Не забываем при сборке Nginx указать сборку с модулем gunzip, для разжимания данных для клиентов, не поддерживающих сжатие.

Nginx.conf:

worker_processes auto;
http {
include mime.types;
proxy_temp_path /mnt/tmpfs/tmp;
proxy_cache_path /mnt/tmpfs/cache/site_cache levels=1:2 keys_zone=site:128m max_size= inactive=;
gzip on;
gzip_disable «msie6»;
gzip_comp_level 4;
gzip_types text/plain text/html application/xml application/x-javascript text/javascript text/css application/json text/xml application/rss+xml;
gunzip on;
server {
listen 80 default;
server_name localhost;
location / {
proxy_cache_use_stale updating timeout http_500 http_502 http_504;
proxy_cache site;

proxy_pass frontend;
proxy_http_version 1.1;


}
location ~* \.(3gp|7z|avi|bmp|css|doc|docx|gif|gz|jpg|jpeg|js|mov|mp3|mp4|ogg|png|ppt|pptx|rar|tar|tiff|torrent|ttf|svg|swf|wma|xls|xlsx|xsl|xslt|zip)$ {
proxy_cache_use_stale timeout updating http_500 http_502 http_504;
proxy_cache site;
proxy_cache_key $uri$is_args$args;
proxy_cache_valid ;
proxy_pass frontend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
}
}
upstream frontend {
server ;
}

Если по каким-то причинам не нужно кешировать динамические запросы на сайте, выключаем кеширование в секции location /. Раскешировать статические данные можно, изменив в них GET-парамметр, например, указывая номер ревизии.

Bind .
Тут всё просто, устанавливаем и добавляем строчки в named.conf:

zone «site.ru» {
type slave;
file "/etc/namedb/slave/site.ru";
masters {
;
};
};

Не забываем разрешить скачивание всей DNS-зоны c мастер-сервера.

That’s all! CDN-сервер настроен. Немного будет переделок, если захочется CDN-нить ещё несколько сайтов;)

Теги:

  • cdn
  • sports.ru
  • highload
Добавить метки

От автора: если вы давно работаете в сфере разработки, вы знаете, что главная проблема в интернете – это скорость. Все просто: скорость имеет значение, и чем быстрее, тем лучше. Простой способ повысить производительность – использовать CDN. Мы уже поднимали эту тему несколько раз на сайте CSS-Tricks. Простота в том, что вам не нужно переписывать базу данных и вручную редактировать контент, однако многие из нас не уделяют должного внимания производительности в этой области. Хостинг, серверы и cPanel, боже мой!

К нашему счастью, интегрировать CDN не так и сложно. В идеале, вы все настраиваете, и такие сервисы как Google PageSpeed трубят о высокой производительности вашего сайта, что в свою очередь приводит к повышению в поисковой выдаче, увеличению доходов, росту вашей популярности и… ну вы поняли.

В этой статье мы разберем процесс настройки CDN на пользовательском веб-приложении, после чего узнаем про пару фишек, которые помогут выжать максимум из CDN. Как я и сказал, настройка должна быть легкой, так что давайте начнем и сделаем веб быстрее!

Нужно добавить, что настройка CDN для тех, кто работает на CMS типа WordPress, где есть специальные плагины для развертки CDN, может быть даже проще, чем мы сейчас расскажем. Будем считать, что не у каждого есть такая роскошь, поэтому перейдем к более традиционному способу.

Вы потеряли меня на CDN

Не повредит, если мы рассмотрим основные понятия: что такое CDN, для чего они нужны. Начнем с этого.

JavaScript. Быстрый старт

CDN вытягивает статические файлы с сервера вашего сайта и кэширует их на своих серверах. Когда браузер обращается к вашему сайту, статический контент подгружается через CDN, а не с вашего сайта. Так получается намного быстрее, так как серверы CDN расположены по всему миру. Сам CDN работает по принципу прокси, определяя ближайший к пользователю сервер, что обеспечивает более быструю и удобную доставку контента. Аббревиатура расшифровывается как Content Delivery Network или сеть доставки контента.

Так как браузер определяет, когда загружать файлы через CDN, а не с сервера сайта? URL статических файлов переписывается, чтобы он вел на CDN.

К примеру, мы хотим настроить CDN на поддомен. На сайте CSS-Tricks адрес может быть таким cdn.css-tricks.com. Соответственно, все ссылки для файлов будут идти на поддомен.

Грубо говоря, адреса файлов на вашем сайте:

http://www.css-tricks.com/image.jpg http://www.css-tricks.com/style.css http://www.css-tricks.com/script.js

http : //www.css-tricks.com/image.jpg

http : //www.css-tricks.com/style.css

http : //www.css-tricks.com/script.js

… станут такими:

http://cdn.css-tricks.com/image.jpg http://cdn.css-tricks.com/style.css http://cdn.css-tricks.com/script.js

http : //cdn.css-tricks.com/image.jpg

http : //cdn.css-tricks.com/style.css

http : //cdn.css-tricks.com/script.js

Браузер посылает запросы на CDN, а не на сервер вашего сайта, что снимает львиную долю нагрузки с сервера и делает ваш сайт быстрее.

Погодите, два сервера на одном сайте?

В определенной степени, это так, но это не значит, что вы будете управлять двумя серверами.

Смысл в том, что CDN используется как виртуальная прослойка между вашим сервером и браузером пользователя. Эта прослойка ловит запросы браузеры на сервер и с радостью отвечает на них кэшированными файлами от имени вашего сервера.

В некоторых случаях можно загружать статические файлы на CDN напрямую, полностью снимая нагрузку с сервера. В этой статье мы разберем процесс получения CDN статических файлов с вашего сервера и их кэширование, чтобы не нужно было загружать файлы на два сервера и работать с разными адресами.

Как установить CDN на пользовательское приложение

Сервисов много, но чаще других используются Amazon AWS и MaxCDN . Сегодня мы рассмотрим сервис MaxCDN.

Шаг 1: выберите CDN и зарегистрируйте ваш сайт

Если вы решили, что для вашего сайта понадобится CDN, вам понадобится зарегистрироваться. Способов много, очень много, но чтобы не взвешивать плюсы и минусы каждого (хорошая тема для следующей статьи), я приведу ряд сервисов:

Основная задача регистрации – создание области загрузки. Область загрузки в CDN можно представить как корзину, в которой будут находиться все поддерживаемые файлы. Данные будут автоматически вытягиваться из директории, которую вы укажите при первом запросе файла. Для пользователей файлы будут загружаться либо с поддомена CDN, либо с пользовательского домена, который ведет на CDN. Данные из корзины автоматически удаляются по достижении определенного вами промежутка времени.

Шаг 2: создайте URL на вашу CDN

URL CDN – тот адрес, по которому будут скачиваться все ваши файлы после настройки. Есть хорошее правило – использовать простые имена в URL, чтобы можно было легко искать файлы и заменить адреса всех существующих файлов в базе данных.

Как и для других поддоменов, необходимо будет указать cname-запись в настройках DNS вашего хоста.

Шаг 3: направьте ваши файлы на CDN

Рассмотрим, как можно создать переменную для CDN адреса, и как ее можно использовать для программной вставки перед URL статических ресурсов. Для чего это нужно: (1) так сложнее допустить ошибки в разметке и (2) так легче работать с URL, которые нам нужно будет менять.

Для этого нам понадобится глобальная переменная для CDN, которую мы будем присоединять слева к URL статических ресурсов. Переменную будем создавать как в PHP, так и в JS, чтобы потом было легче работать. Также эта переменная поможет нам легко выключить CDN, если мы этого захотим. Нужно будет просто заменить значение на /, чтобы вернуть адрес на наш сервер.

Обратите внимание, что следующие примеры – это лишь примеры, не стоит использовать их. Реальные примеры использования могут отличаться.

Hello World! /* Let’s define a javascript global for using the CDN inside scripts */ var cdnURL = ""; js/main.js">

Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png

Разрешается копирование материалов сайта с обязательной ссылкой на ksound36.ru