Это систем серверов, расположенных в разных честях мира, работающих вместе для быстрой доставки контента на устройства
Иерархия серверов
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