Многие неоднократно слышали об использовании CDN. Что это такое? Расшифровка этой аббревиатуры переводится с английского как сеть доставки контента юзеру, распределённая регионально.
Какие же тривиальные преимущества она несёт? Из бесспорных плюсов - разгрузка источника контента и сбережение кэша в ближайшей для потребителя географической точке. Многие могут задаться вопросом, зачем это нужно. Ответ прост - для того, чтобы покупатель получал личный контент с кратчайшими задержками. Эта сеть применяется как для простого http-траффика, так и для поточного вещания. Во втором случае юзер получает стойкое изображение, а медиапоток реже слетает и чаще проигрывается в более высоком качестве (при мультибитрейте).
Если CDN сторонний, то лучшим вариантом будет отправка в него лишь только предельной нагрузки, поддерживая тем самым минимально-комфортную ширину канала (каналы стоят дорого), и обеспечивая экономию на конечном оборудовании и его обслуживании.
CDN: что это и как это работает?
Самый актуальный вопрос - как это устроено? На самом деле односложно ответить нельзя. В качестве ответа можно привести несколько различных вариантов.
Итак, что это – CDN? Можно начать с более знакомого варианта (максимальная экономия). Сеть - это совокупность крупных провайдеров, держащих собственные ДЦ (к примеру, "Мегафон", Центральный телеграф и тому подобное, в том числе региональные фирмы). Бэкбона как такового нет, все переходит по одним каналам с абонентским и клиентским траффиком.
Взаимосвязь с провайдерами в таком случае крайне слабая. В данных примерах, как правило, без своего оборудования не обойтись, потому что все упирается в дисковую подсистему, а она (несмотря на заявления множества адептов профильных "стальных" компаний), виртуализируется в высшей степени плохо. Нередко можно услышать о том, что ценные IOPS-ы в процессе виртуализации теряются. SSD при этом практически не используются, поскольку это обходится весьма недешево.
Сервисы CDN (Jquery и другие), как правило, сами по себе серверы "универсальные". Они применяются под поточное радиовещание и под веб-кэши, стримовые серверы для flv и mp4-файлов. На подобных серверах используются и всем известные DNS. Балансировка ведется лишь только способами DNS- view по регионам/провайдерам и так далее. Также широко известны Image CDN, облегчающие передачу крупных графических файлов.
В соответствии с вышеизложенным, качество обслуживания происходит на посредственном уровне. Подобный CDN не всегда возможно применить для распространения (кэширования) mp4 и flv-данных или же объемных файлов. Задержки передачи информации в этом случае очень сильно варьируются, вплоть до больших временных промежутков. Из этого следует, что для поточного вещания эта сеть не подходит, как и для моментального веб-траффика. Таким CDN сайт невозможно ускорить существенно.
Более высокий уровень
Более мощные CDN (в ведущем большинстве нероссийские - Akamai, L3, CDNetworks) обычно не экономят на собственной инфраструктуре вследствие того, что понимают перспективность таких инвестиций. У них устроено все по-другому. Так, сеть у них своя (backbone-сеть), которая служит как для внутреннего, так и для служебного траффика. Кроме того, они обладают и своими AS (автономными системами). Вопросы маршрутизации они также держат в своих руках. Пиринговые взаимоотношения с интернет-провайдерами у них тоже хорошо налажены.
Балансировка здесь построена по принципу anycast + DNS + LVS. Из архитектуры сети и вышеуказанной маршрутизации проистекает и вероятность балансировки запросов от потребителя более продвинутыми способами. Это осуществляется не только путем view-DNS, но и anycast. На любом айпи-адресе закрепляется балансировщик, позволяющий отправлять запросы различным серверам.
Конечно, ни о каких "универсальных" нодах речи нет, как и о виртуализации абсолютно всех сервисов. Существуют серверы, закачивающие контент, а также для раздачи мгновенного контента. Также есть промежуточные места для хранения больших объемов данных, которым необходимы стримящие и раздающие составляющие.
Кроме того, бывают серверы: исходные, промежуточные и оконечные мультиплексоры, на которые клиент публикует поток. В случае, если на выходе необходим hls, hds или же sliverlight-стриминг, оконечными серверами, как правило, считаются веб-кэши для очень качественного и быстро загружаемого контента.
Подобная архитектура позволит сервису выдержать огромные нагрузки без риска возникновения задержек у заказчиков и клиентов. В случае с частным CDN рациональнее использовать возможности оборудования при максимальных нагрузках, при этом обеспечивая адекватный уровень сервиса (разброс задержек, срывы потоков и пр.).
Какие серверы находят свое применение?
С точки зрения техники, такие сервисы применяют веб-кеши nginx, т. к. у сервера есть все необходимое для проксирования запросов и кэширования. К нему можно писать собственные модули, в т. ч. для закачки нужного контента в кеш, «чистки» определенных объемов информации в нем, сбора статистических данных (и, к примеру, отправки ее в mongo-базу). Также обычно предусматривается сервисное обслуживание со стороны компании-изготовителя. Так, L3 создала для себя собственный nginx (собственный web-сервер CDNJS).
Стримящие серверы - зачастую это что-то собственное (обычно на основе готовых моделей типа red5 или что-то подобное) или Wowza Media Server. Серверы, куда заказчик публикует потоки, – обычно Adobe FMS. Как правило, к ним относятся Game CDN.
Серверы хранения могут быть и объектными хранилищами типа mogilefs, hadoop, и весьма большими FS типа Lustre либо Gluster, которые сейчас приобретают популярность. Распространены также OpenStack-хранилища Swift (Files CDN), несмотря на то, что они еще не доработаны и не получили широкого одобрения из-за некой «сыроватости».
Транскодеры представляют собой классический вариант ffmpeg с крупной самописной обвязкой (следящее программное обеспечение, менеджер очередности выполнения заданий и пр.)
Статистические данные
Многое зависит от методик по тарифообразованию и схемам биллинга. Но есть моменты, которые нельзя обойти. Учет статистики с использованием netflow в основном невозможен, поскольку объем траффика большой, и нерационально выделять целую статью затрат на такое количество оборудования по обсчету и распараллеливанию процесса. Статистику производят по логам. Начиная с оконечных нод, при схлопывании повторяющихся запросов (на 1 CDN URL с 1 IP или подсети), затем агрегированные логи молотят на специальных серверах, там выводят статистические данные для технических нужд и биллинга.
Статистика детальнее
Как работает статистика в CDN? Что это такое в подробностях? Она включает в себя следующие компоненты:
- обычно есть возможность для создания графика во времени для числа запросов в единицу времени, числа клиентов (используется при поточном вещании), числа ошибок в единицу времени (к примеру, число обрывов для потоков или число ошибок 404, 500 и 502 для http-серверов);
- раскладка графиков по гео-статистике;
- коэффициент кэширования или мультиплексирования (при поточном вещании) в какой-то момент времени;
- для внутреннего использования обычно применяют сбор статистических данных о времени отклика для ответов, нелимитированных по скорости, для фронтов, промежуточных серверов, временную статистику источников.
Собственный API для взаимодействия с CDN является необходимым механизмом - без него не может существовать сам сервис. Зачастую с его помощью можно почистить весь кеш или определенные объекты, настроить или инициировать закачивание файла с источника для предварительного кеширования его в CDN на нодах. В качестве примера можно привести CDN SteamCommunity, на котором работает всемирная игровая сеть.
Сжатый обзор самых популярных CDN-провайдеров
Каждому продвинутому пользователю полезно узнать о нескольких наиболее популярных сервисах сетей доставки контента (Jquery CDN и тому подобных). Некоторые из них нашли широкое применение, в то время как другие находятся на стадии роста и развития.
Сеть CloudFlare
На сегодняшний день это наиболее известный и распространенный сервис CDN URL. В сети CloudFlare возможно приобрести платный тарифный пакет или воспользоваться бесплатным тарифом. Компания функционирует на рынке уже более полутора десятков лет и заработала за это время себе безупречную репутацию. Одно из ключевых достоинств сервиса – CloudFlare не задает определенную пропускную способность, как у компаний-конкурентов.
Сеть MaxCDN
Также один из популярнейших CDN-сервисов, которым владеет компания NetDNA (лидер по распределенной доставке). Ключевое достоинство MaxCDN – сервис легко интегрировать с самыми распространёнными системами управления содержимым (WP, Joomla, Drupal, Magento и др.). В этой сети (Frigate CDN) тестовая версия предоставляется бесплатно на неделю, бесплатного тарифа пока нет. Однако стоимость использования вполне доступна.
Сеть TinyCDN
Соласно отзывам пользователей, один из лучших сервисов. В его основе – база Amazon Web Services (одной из самых известных в этой сфере компаний), потому он один из самых надёжных. Цена за пользование им ненамного выше, чем у компаний-конкурентов. В TinyCDN есть бесплатная версия для тестирования, предоставляющая на 30 дней возможность пользования услугой.
Google Page Speed
Сеть для веб-мастеров Google Page Speed не столь известна, поскольку ее целевая аудитория — разработчики. Развитие ее происходит семимильными шагами, как и других продуктов от компании Google. Если вы хотите собственных экспериментов в работе, обязательно попробуйте этот сервис. Он можно успешно использоваться в самых различных сетях, и отзывы о нем по большей части положительные.