Содержание

Content Delivery Network - сеть доставки контента

Тема

Это систем серверов, расположенных в разных честях мира, работающих вместе для быстрой доставки контента на устройства

Иерархия серверов

Central / Origin Server

Intermidiate / Regional Servers

Например US, EU

Edge Servers

Пример использования

Клиент вбивает адрес сайта www.youtube.ru

Запрос идёт в DNS

DNS вместо передачи прямого адреса даёт CDN адрес балансировщика нагрузки www.youtube.cdn.ru

Клиент идёт в балансировщик CDN

Балансировщик CDN выбирает лучший сервер CDN

Сервер CDN проверяет свой кеш на наличие контента

Если нет контента - идёт на исходный сервер и сохраняет данные себе

Сервер CDN отправляет контент клиенту

@startuml actor Клиент participant "DNS-сервер" as DNS participant "Балансировщик CDN" as CDNBalancer participant "Сервер CDN" as CDNServer participant "Исходный сервер" as OriginServer Клиент -> DNS : Запрос к DNS (www.youtube.ru) DNS -> Клиент : Возвращает адрес балансировщика CDN (www.youtube.cdn.ru) Клиент -> CDNBalancer : Запрос контента (www.youtube.cdn.ru) CDNBalancer -> CDNServer : Выбор лучшего CDN-сервера CDNBalancer --> Клиент : Перенаправление на лучший CDN-сервер Клиент -> CDNServer : Запрос контента alt Контент есть в кэше CDNServer --> Клиент : Возвращает кэшированный контент else Контент отсутствует в кэше CDNServer -> OriginServer : Запрашивает контент с исходного сервера OriginServer --> CDNServer : Возвращает запрашиваемый контент CDNServer -> CDNServer : Сохранение контента в кэше CDNServer --> Клиент : Возвращает контент end @enduml
@startuml actor Клиент participant "DNS-сервер" as DNS participant "Балансировщик CDN" as CDNBalancer participant "Сервер CDN" as CDNServer participant "Исходный сервер" as OriginServer == Запрос к DNS (DNS: уровень 7, UDP на уровне 4, IP на уровне 3) == Клиент -> DNS : DNS-запрос A-запись (www.youtube.ru) DNS -> Клиент : DNS-ответ с адресом балансировщика CDN (www.youtube.cdn.ru) == Запрос к CDN-балансировщику (HTTP/HTTPS: уровень 7, TCP на уровне 4, IP на уровне 3) == Клиент -> CDNBalancer : HTTP GET-запрос к балансировщику CDN CDNBalancer -> CDNServer : Выбор лучшего CDN-сервера (алгоритм балансировки нагрузки) CDNBalancer --> Клиент : Перенаправление на лучший CDN-сервер (HTTP 302 Found) == Запрос к CDN-серверу (HTTP/HTTPS) == Клиент -> CDNServer : HTTP GET-запрос на контент (уровень 7) alt Контент в кэше CDN note right of CDNServer : Проверка кэша (уровень 7) CDNServer --> Клиент : HTTP 200 OK с кэшированным контентом else Контент отсутствует в кэше CDNServer -> OriginServer : HTTP GET-запрос на контент (уровень 7) OriginServer --> CDNServer : HTTP 200 OK с запрашиваемым контентом note right of CDNServer : Сохранение контента в кэше CDN CDNServer --> Клиент : HTTP 200 OK с контентом end @enduml

Примеры использования

YouTube использует для передачи видео

Пример

AWS Cloud Front

Akamai

Cloud Flare

Fastly - меньшая база серверов

Max CDN- самй экономичный, нет некоторых функций

Плюсы

Позволяет грузить видео быстрее

Снижает нагрузку на сеть и основной сервер

Гарантирует надёжность при большой нагрузке