Найти тему
Merion Academy

Основы проектирования систем: навигация по миру CDN

Руководство для экспертов в области проектирования систем по сетям доставки содержимого.

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

Как работает CDN?

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

Основные термины и ключевые понятия

  1. Точка присутствия (PoP – Point of Presence): PoP – это реально существующее место, где развернуты CDN-серверы (как правило, в центрах хранения и обработки данных, распределенных по различным географическим точкам). PoP расположены со стратегической точки зрения, как можно ближе к конечным пользователям. Это необходимо для того, чтобы минимизировать время ожидания и повысить производительность процесса доставки содержимого.
  2. Пограничный сервер: пограничный сервер – это CDN-сервер, который расположен в точке присутствия и который отвечает за кэширование содержимого и его доставку конечным пользователям. На этих серверах хранятся кэшированные копии содержимого, что уменьшает потребность в извлечении данных с сервера-источника.
  3. Сервер-источник: сервер-источник – это главный сервер, который хранит исходное содержимое. CDN извлекают содержимое именно с сервера-источника и кэшируют его на пограничных серверах для того, чтобы быстрее доставлять его конечным пользователям.
  4. Прогрев кэша: прогрев кэша – это процесс, который заключается в предварительной загрузке содержимого в кэш пограничного сервера. Такая загрузка происходит еще до того момента, как пользователь запросит содержимое. Это гарантирует тот факт, что при необходимости содержимое может быть доставлено быстро.
  5. Время жизни (TTL – Time to Live): TTL – это значение, которое определяет то, как долго какая-то часть содержимого будет храниться в кэше, прежде чем она начнет считаться устаревшей и потребует обновления с сервера-источника.
  6. Anycast: anycast – это метод сетевой маршрутизации, который использует CDN для того, чтобы направлять пользовательские запросы на ближайший доступный пограничный сервер с учетом таких факторов, как наименьшее время ожидания и кратчайший путь сетевого трафика.
  7. Инвалидация содержимого: инвалидация содержимого – это процесс удаления или обновления кэшированного содержимого при измерении исходного содержимого на сервере-источнике. Этот процесс гарантирует, что конечные пользователи будут получать самую последнюю версию содержимого.
  8. Очистка кэша: очистка кэша – это процесс принудительного удаления содержимого из кэша пограничного сервера. Этот процесс, как правило, запускается вручную или автоматически при определенных условиях.

Преимущества использования CDN

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

  1. Сокращение времени ожидания: используя содержимое, которое хранится на территориально распределенных пограничных серверах, CDN сокращают количество времени, которое нужно содержимому на то, чтобы дойти от сервера к пользователю. Таким образом, страницы загружаются быстрее, а взаимодействие с пользователем переходит на новый уровень.
  2. Повышение производительности: CDN могут поспособствовать освобождению линии доставки статического содержимого от лишней нагрузки, освобождая таким образом ресурсы для создания динамического содержимого и уменьшая при этом нагрузку на сервер. Это может повысить общую производительность веб-приложений.
  3. Повышение уровня надежности и доступности: за счет нескольких пограничных серверов, расположенных в разных местах, CDN может обеспечить встроенную избыточность и отказоустойчивость. Если вдруг по какой-то причине один сервер становится недоступным, запросы могут быть автоматически перенаправлены на другой сервер, обеспечивая таким образом непрерывную доставку содержимого.
  4. Масштабируемость: CDN могут справляться с внезапными всплесками трафика и большим количеством одновременных запросов. Это существенно упрощает масштабирование веб-приложений, выполняемого с целью обработки растущего трафика.
  5. Безопасность: у многих CDN есть дополнительные средства контроля безопасности, например, защита от DDoS-атак, брандмауэры веб-приложений (WAF – Web Application Firewall) и завершение SSL/TLS-соединений на границе. Таким образом, они помогают защитить веб-приложения от самых разных угроз нарушения безопасности.

Архитектура CDN

Точки присутствия и пограничные серверы

Точка присутствия (PoP – Point of Presence) – это реально существующее место, в котором расположена группа пограничных серверов в рамках распределенной сети CDN. Точки присутствия расположены со стратегической точки зрения, то есть в различных географических точках. Это необходимо для того, чтобы минимизировать время ожидания для пользователей при запросе содержимого. Каждая PoP, как правило, состоит из нескольких пограничных серверов. Благодаря этому они обеспечивают избыточность, отказоустойчивость и позволяют производить балансировку нагрузки.

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

Маршрутизация CDN и обработка запросов

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

  • Anycast-маршрутизация: при маршрутизации anycast несколько пограничных серверов совместно используют один IP-адрес. Когда пользователь отправляет запрос на этот IP-адрес, система маршрутизации сети направляет этот запрос на ближайший пограничный сервер, опираясь на такие факторы, как задержка в сети и количество прыжков. Такой подход гарантирует, что запросы будут автоматически направляться на наиболее подходящий сервер.
  • DNS-маршрутизация: при DNS-маршрутизации, когда пользователь отправляет запрос на получение содержимого, DNS-сервер CDN отвечает, отправляя IP-адрес наиболее подходящего пограничного сервера. Этот подход принимает во внимание такие факторы, как географическая близость и загрузка сервера, для того, чтобы подобрать тот пограничный сервер, который больше всего подходит для обработки запроса.
  • GeoIP-маршрутиизация: при таком подходе географическое положение пользователя определяется по его IP-адресу. Затем запрос направляется на ближайший пограничный сервер с точки зрения географической отдаленности. Как правило, это гарантирует меньшую задержку в сети.

Механизм кэширования

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

  • Время жизни (TTL – Time-to-Live): TTL – это значение, которое устанавливается сервером-источником и которое определяет, как долго какая-то часть содержимого должна храниться в кэше, прежде чем она начнет считаться устаревшей и потребует обновления путем повторного ее запроса с сервера-источника.
  • Инвалидация кэша: инвалидация кэша – это процесс, который заключается в удалении содержимого из кэша до того, как истечет его TTL. Как правило, это происходит тогда, когда содержимое на сервере-источнике обновляется или удаляется, что должно быть немедленно отражено в CDN.
  • Заголовки Cache-control: заголовки cache-control используются сервером-источником с целью предоставления CDN указаний по кэшированию. Эти заголовки могут предписывать условия кэшируемости содержимого, его TTL и другие параметры, которые так или иначе связаны с кэшированием.

Топологические схемы сети CDN

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

  • Плоская топология: в рамках плоской топологии все пограничные серверы в CDN напрямую подключены к серверу-источнику. Такой подход может оказаться вполне эффективным в случае небольших CDN, но при этом он может не очень хорошо масштабироваться по мере роста сети.
  • Иерархическая топология: в рамках иерархической топологии все пограничные серверы организованы в несколько уровней, каждый из который несет ответственность за обслуживание содержимого уровня, расположенного ниже. Такой подход может улучшить масштабируемость посредством распределения нагрузки между несколькими уровнями серверов и уменьшения количества прямых подключений к серверу-источнику.
  • Сетчатая топология: в рамках сетчатой топологии все пограничные серверы являются взаимосвязанными. Этот фактор позволяет им совместно использовать содержимое и загружать его друг с друга. Такой подход может повысить уровень избыточности и отказоустойчивости сети СDN. Кроме того, он позволит улучшить производительность процесса доставки содержимого за счет того, что потребность извлечения содержимого с сервера-источника уменьшается.
  • Смешанная топология: смешанная топология объединяет в себе элементы различных топологий с целью создания оптимизированной архитектуры CDN, которая бы учитывала конкретные потребности. Например, CDN может использовать иерархическую структуру для того, чтобы обслуживать статическое содержимое, и, плюс к этому, сетчатую топологию для того, чтобы доставлять динамическое содержимое.

Заключение

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