Веб-сайт Техасский Интернет-консалтинг .
Жив с 1987 года, страница - 7 Килобайт. Помните время, когда домашняя страница размером более 90 килобайт считалась расточительной? С тех пор Интернет стал толстым.
А нам нужны были инструменты, позволяющие правильно распределять трафик сразу с нескольких узлов.
Например, во время очередного обновления Fortnite CDN Akamai удалось переварить трафик емкостью 106 Терабит в секунду .
Давайте рассмотрим основные принципы этой технологии и потенциальные проблемы.
И о том, почему Майнкрафт тормозит в Казани, если не развернуть сервер в черте города.
Вот современный Веб-сайт , что укладывается в разумные пределы: 1,7 Мегабайта.
Пример относительно тяжелого сайт с видеоконтентом и анимацией: 39,5 Мегабайт радости и движения.
Сейчас, когда 100 Мегабит домашнего Интернета воспринимаются как вполне привычное явление, все меньше дизайнеров заморачиваются кропотливым сжатием каждого изображения и экономией на мелких деталях.
Ситуации, когда кто-то умный наложил на основное изображение PNG-изображение весом 30 Мегабайт, случаются чаще, чем хотелось бы.
Взяты исторические данные Здесь .
А если посмотреть на статистику, то тенденция к увеличению объемов становится еще более очевидной.
Например, за 10 лет размер средней страницы, предназначенной для мобильных устройств, вырос в семь раз (с 233 до 1864 Кбайт).
Проблема с шириной канала
У вас много иллюстраций и видео, которые нужно передать клиенту.Передать несколько мегабайт за раз не очень сложно: современные каналы связи позволяют сделать это за считанные секунды.
Ситуация становится намного хуже, когда ваш сайт посещают сначала несколько десятков, а затем и тысячи посетителей одновременно.
Давай посчитаем.
Допустим, у вас один сервер и ваша типичная страница весит 1,8 мегабайта.
Клиенты приходят к вам впервые и с «холодным» кешем, то есть в браузере нет ранее скачанных материалов с вашего ресурса.
Чтобы обслужить страницу за приемлемые три секунды, нам нужна ширина канала 4,8 Мегабит на посетителя.
Если их приедет 100, то это уже 480 Мегабит. А если вдруг нам понадобится передать этим же людям небольшой видеофайл размером 10 Мегабайт, то нам понадобится канал 2,7 Гигабита.
В результате у вас останется два основных типа контента: динамический и статический.
Статический контент, как следует из названия, не меняется или меняется очень редко.
Например, это логотип сайта.
Или загрузили образы с дистрибутивами ПО.
Динамический контент отличается тем, что он генерируется сервером «на лету».
Обычно это происходит во время самого запроса.
Например, при нажатии на кнопку генерируется плейлист, уникальный для конкретного пользователя.
Именно для решения проблемы кэширования статического контента были созданы CDN. Но, как мы увидим позже, CDN также могут помочь с динамическим контентом.
Почему чистая многоадресная рассылка не получила развития?
Схема работы многоадресной рассылки.
Мультикаст — это очень хорошо.
В отличие от одноадресной рассылки, он позволяет исходному серверу отправлять клиентам только один пакет, который будет ретранслироваться строго тем, кто его ожидает. В отличие от вещания, он не будет рассылать пакеты всем, кому он нужен и не нужен, засоряя Сеть мусором.
Одна из проблем — аппаратная поддержка.
Чтобы гарантировать, что многоадресный пакет достигнет каждого клиента, нам необходимо убедиться, что каждый промежуточный узел правильно настроен и готов доставить его дальше.
Иначе пакет «затухнет» где-то по пути на тупом роутере, и клиент не дождется своей вечерней трансляции на YouTube. Именно поэтому вместо более продвинутой многоадресной рассылки получила распространение географически распределенная сеть CDN, которая работает на более простой одноадресной рассылке.
Вторая проблема — 4К и предстоящий 8К.
Провайдеры уже нервно вздрагивают от объемов трафика, и дальше будет только хуже.
В варианте чистой многоадресной рассылки вы не можете регулировать качество трансляции.
В случае того же Google Global Cache, что и CDN, вы можете обслуживать локальных клиентов изображением в адаптивном битрейте.
GGC кэширует часть видео и передает своим клиентам в формате 4K. В данный момент у одного из клиентов возникли проблемы из-за перегрузки локальной сети.
GGC автоматически снизит битрейт с учетом изменившейся ширины клиентского канала и продолжит раздачу видео.
Тем не менее, технология очень привлекательна для IPTV, поэтому некоторые компании предлагают такие интересные решения, как nanoCDN Многоадресная рассылка ABR .
Концепция основана на добавлении в сеть провайдера дополнительного узла транскастера, который преобразует юникаст от видеоисточника вне сети в мультикаст конечному потребителю.
Мир без CDN
Итак, мы решили, что нам понадобится много ресурсов, чтобы обслуживать всех посетителей из одной точки.Давайте попробуем представить, как бы выглядела современная сеть без CDN. Каждая компания строит один огромный дата-центр и собирает все ресурсы в одной точке мира.
Централизованное распространение контента и распределенная схема через CDN.
Небольшие веб-ресурсы
Почти никакого вреда.Даже сейчас существует множество местных форумов, посвященных узкой теме разведения, например, алтайских перепелов.
Огромного наплыва посетителей практически никогда не бывает, тяжелого контента почти нет. Они жили так же, как в начале 2000-х годов, и продолжают жить так же в 2020 году, принося пользу своему небольшому сообществу.
Видеохостинг
Забудь это.Без CDN не будет YouTube, Vimeo и других ресурсов (важно: торрент-сеть, по сути, в такой ситуации тоже можно считать подвидом CDN, но работающей совсем на других принципах).
Без CDN вы можете смело вернуться в начало 2000-х, когда видео было доступно по прямым ссылкам и их нужно было скачивать.
Никакой потоковой передачи, FlashGet или других хардкорных менеджеров загрузок.
При этом о загрузке в реальном времени не могло быть и речи.
Уже сейчас, если верить статистика Только YouTube генерирует 37% всего мобильного трафика в мире.
Это миллиард часов видео в день.
Без географического распределения нагрузки такие сервисы просто не родились бы.
Точно Поэтому тот же Google предлагает установку своего оборудования в дата-центрах крупных провайдеров, что обеспечивает так называемый GGC — Google Global Cache. При клике на популярное видео на YouTube данные тянутся не из дата-центра в Калифорнии, а из ближайшего крупного центра связи вашего провайдера.
Если видео не пользуется большой популярностью, то трафик уже будет поступать извне внутренней сети провайдера, но будет кэшироваться.
Раньше провайдеры существенно экономили на трафике, используя кэши и локальные файловые ресурсы.
Тогда первый пользователь, скачавший новую песню Metallica, дал провайдеру возможность не платить за магистральный трафик еще 50 желающим, а выставлять счет пользователям как за обычный трафик.
Можно сказать, что это был еще один подтип CDN. Вот откуда растут уши идей retracker.local .
В 2010 году наг.
ру предложил оригинальную идею организация локальных ретрекеров под этим адресом для всех провайдеров для облегчения поиска локальных пиров и уменьшения внешнего трафика.
Идею поддержал rutracker.org, который начал добавлять этот адрес в дополнение к своим ретрекерам.
Мессенджеры
Выживут, но без всяких модных стикеров, трансляции геолокации и прочих радостей.А про push-уведомления от сервисов Google, скорее всего, можно забыть.
То есть вы будете онлайн только во время работы приложения, а это означает постоянный расход заряда батареи.
Можно вспомнить ностальгические времена ICQ и Jabber. Между прочим, он и его федеральная система были не так уж и плохи.
В некоторых местах его используют до сих пор.
Магазины
Мы бы остались исключительно в формате страницы местной мясной лавки с картой проезда и номером телефона.А еще придется вспомнить старые добрые бумажные распечатки прайс-листов в магазинах компьютерных комплектующих.
Amazon и Aliexpress просто не могли существовать.
Даже сейчас при всех современных технологиях у них запредельные пиковые нагрузки в периоды распродаж, что требует чрезвычайно сложной балансировки и сложной облачной архитектуры.
Однако в парадигме «один дата-центр на магазин» можно было бы организовать продажи.
Они просто будут идти медленнее.
В случае отказоустойчивости в виде двух сайтов часть проблем с резервированием была бы решена, но каждый запрос пользователя шел бы через всю страну к ним без локального кеша.
А если мы собираемся делать локальный кэш, то почему бы сразу не сделать там на узле серверные приложения?
Удаленные регионы
Если вы живете в отдаленных регионах, куда не проходят широкие кабельные линии, то вам будет совсем грустно.В начале 2000-х годов для жителей Сахалина было вполне характерно ждать загрузки обычной веб-страницы по пять минут. В современном вебе все было бы еще хуже: многие ресурсы просто отключались бы, не загружаясь.
Проблема с длинным пингом
Вторая проблема, которую решает CDN — ускорение запросов.Рядом с вами есть локальный сервер, который кэширует статический контент, а иногда сам может создавать динамический контент. Если вы знакомы с тормозами 1С при беге из Владивостока в Москву или особенностями работы с SAP через какой-нибудь корпоративный VPN в Европе из Новосибирска, то понимаете всю глубину боли.
Сотни запросов незаметны при обычных задержках сети в черте города, но при увеличении расстояний всё начинает тормозить.
Россия в этом плане выделяется тем, что у нас есть страна такого размера, где расстояние от случайного города до столицы может быть дальше, чем от того же города до столицы другой страны.
Это порождает интересные особенности туннелирования трафика от серверных приложений той же MS.
Так что же внутри современной CDN?
CDN — это общее название для множества различных технологий, предназначенных для доставки статического контента как можно ближе и быстрее к клиенту.Например, торрент-раздача новая версия Ubuntu также является CDN. И вы становитесь одним из узлов раздачи, помогая другим пользователям быстрее получить новую версию раздачи и не нагружать основной сайт. В случае классического понимания речь идет о сетях, специально созданных и предназначенных только для решения подобных задач.
Часто собственность.
Если вам нужен CDN общего назначения, то вы обращаетесь к одному из крупных поставщиков с серверами по всему миру и достаточными каналами связи.
Крупнейшие из них, такие как Amazon и Google, прокладывают собственные кабели связи, чтобы обеспечить необходимую пропускную способность и сократить задержки.
1. Выберите ближайший узел
Для начала пользователю во время DNS-запроса выдается адрес ближайшего к нему узла.Это необходимо для того, чтобы ваш браузер не загружал фотографию откуда-то из Ванкувера, когда копия ближайшего к вам файла кэшируется на сервере в вашем городе.
Обычно это делается с помощью ГеоДНС , но иногда используется специально настроенный Anycast. Например, всем известный 8.8.8.8 от Google приведет к ближайшему узлу, который чаще всего находится во внутренней сети вашего провайдера.
Это возможно благодаря правильной рекламе сетей, посредством которой роутеры провайдера выбирают кратчайший маршрут.
2. Кэширование
Это ключевой момент в работе CDN. Кэширование очень важно для сокращения трансграничного трафика, каналы для которого совсем не резиновые.При этом очень важно, чтобы кэширование происходило строго в соответствии с географией пользователей.
Например, местный Google Global Cache не должен хранить видеоролики YouTube с рекламой российского сотового оператора на серверах в Нью-Йорке.
Вряд ли оно там кому-то понадобится.
Точно так же нет смысла кэшировать рецепты приготовления лягушачьих лапок на французском языке где-то в Перми.
Итак, основной принцип довольно прост. Первый пользователь, запросивший контент, дольше всех ждет, пока он не прибудет откуда-нибудь из дата-центра Франкфурта.
Но все последующие звонки будут происходить с минимальными задержками и нагрузками на сеть провайдера.
Более того, у крупных вендоров схема очень похожа на работу классического DNS. Сначала мы спрашиваем ближайший к нам узел, есть ли у него требуемая картинка.
Тогда он идет не к корневому узлу, а к географически ближайшим.
И если он не сможет найти там то, что ему нужно, то только тогда он отправится к первоисточнику на другой континент. Таким образом, мы получаем максимально эффективное хранение тяжелых файлов максимально близко к локальным клиентам с учетом их потребностей.
3. Мы обеспечиваем динамику
Динамический контент генерируется на стороне вашего исходного сервера.Например, создается страница с новостями, отсортированными по конкретному клиенту.
Кешировать все это очень сложно, поскольку контент по сути уникален.
В большинстве случаев динамический контент, такой как текст «В Лондоне +23 градуса», доставляется с исходного сервера, а статический контент, такой как изображение Биг-Бена, поступает из CDN. Чтобы еще больше повысить скорость загрузки страниц, некоторые компании предлагают динамическое кэширование контента, переложив выполнение скриптов на свою инфраструктуру.
Например, такой вариант предлагает сервис Рабочие Cloudflare .
В то же время код кэшируется и выполняется быстро и в географически соответствующих местах.
При этом Cloudflare использует собственную технологию маршрутизации трафика Argo Smart Routing, которая позволяет оптимизировать доставку запросов пользователей по самым быстрым маршрутам внутри своих сетей.
4. Реализуем протокол OPES
ОПЕС ( Открытые подключаемые пограничные службы ) — протокол, предназначенный для адаптации одного и того же контента к потребностям конкретного клиента.Это работает примерно так.
Есть куча клиентов в интернете, сервер-оригинал с оригинальным контентом, сервер кэширования CDN и специальный сервер-выноска, отвечающий за адаптацию контента:
- Клиент ПК запрашивает контент из CDN.
- CDN берет его с исходного сервера, кэширует и передает клиенту.
- Клиент с мобильного телефона запрашивает тот же ресурс из CDN.
- CDN не беспокоит исходный сервер; он отправляет свой кэш на сервер вызовов для обработки.
- Сервер вызовов адаптирует контент для мобильного клиента и доставляет его в CDN.
- CDN кэширует новую версию ресурса и передает ее мобильному клиенту.
5. Мы корректно подаем изображения, Image CDN
CDN — это нечто большее, чем просто кеш для файлов.Хорошим примером является правильная работа с изображениями.
Типичный CDN общего назначения не обращает внимания на характеристики клиента, который с ним связался.
Если бы его попросили дать ему картинку, он бы вернул ее, независимо от того, запросил ли он ее с Samsung Galaxy, iPad или ПК с дисплеем 8K. Правильный CDN изображений вернет изображение в требуемом формате, сжимая его до размера дисплея клиента.
Это экономит большой объем трафика и ускоряет загрузку страниц на тех устройствах, которым не нужна графика высокого разрешения.
6. Делаем кучу других необходимых вещей
Помимо доставки контента, узлы CDN могут обеспечивать терминацию HTTPS-трафика, WAF (брандмауэр веб-приложений), защиту от DDoS и множество других задач.
Что нужно для подключения к CDN?
Каждый проект уникален.Но в целом в минималистическом варианте задача сводится к нескольким этапам:
- Отделите статический контент и переместите его в отдельный домен, например static.mydomain.com.
- Создайте отдельный домен для распространения контента из CDN, например, cdn.mydomain.com.
- Заключите соглашение с провайдером CDN и сообщите ему, откуда он будет получать исходный контент (static.mydomain.com) и откуда он будет предоставлять его клиентам (cdn.mydomain.com).
- Установите cdn.mydomain.com в своем DNS на IP-адреса вашего интернет-провайдера.
Управление кэшированием
CDN — это сложный интеллектуальный кеш.Кроме того, каждый клиентский браузер также старается запрашивать только тот контент, который изменился, чтобы снизить нагрузку на интернет-канал.
Проблема любого кэша в том, что недостаточно регулировать скорость его разрушения.
Вам необходимо убедиться, что ни промежуточные узлы, ни браузер не думают о кэшировании особо конфиденциальных данных.
Например, данные банковской карты.
Замечали ли вы, что вам приходится каждый раз вводить их заново? Вот как это работает. Для этого необходимо использовать специальные валидаторы в заголовках веб-страниц.
контроль кэша: частный
Заголовок указывает, что контент может кэшироваться только конечным клиентом, а не промежуточным узлом, таким как прокси-сервер или CDN.контроль кэша: общедоступный
Контент может кэшироваться кем угодно.
контроль кэша: без хранения
Контент никогда и никому не должен кэшироваться.Чаще всего используется для страниц с особо конфиденциальной информацией, например, формы ввода данных банковской карты.
контроль кэша: без кэша
Контент не следует использовать до тех пор, пока клиент не убедится, что он просматривает последнюю версию.Это реализуется через заголовок ETag, который является идентификатором, уникальным для конкретного ресурса.
По сути, это хеш.
При выполнении запроса клиент посмотрит, что находится в его кеше, и вернет ETag в заголовке.
Если ETag от клиента соответствует текущей версии сервера, то он ответит клиенту, что можно использовать кеш.
В противном случае он пришлет новую версию.
кэш-контроль: максимальный возраст
Этот заголовок определяет время жизни ресурса в секундах с момента его первого получения.
Помимо управления кешированием через заголовки, владелец ресурса всегда может внести дополнительные изменения через панель управления или сбросить кеш, продав CDN через API.
Кому выгодна CDN?
Почти все.Клиент получает самые низкие пинги при обращении к ресурсу и не требует ожидания при массовой нагрузке на сервис, например, при выходе очередного дистрибутива ОС или игры.
Источник контента получает конкурентное преимущество.
Современная сеть научила людей тому, что страница, которая не загружается более нескольких секунд, вероятно, не работает, и они могут просто перейти к следующей ссылке.
Google также заинтересован в том, чтобы его поиск был хотя бы таким же медленным, как у конкурентов, и чтобы видео и реклама воспроизводились без задержек.
В противном случае клиентура быстро перейдет к кому-то другому.
Фактически монополия таких крупных гигантов во многом построена на очень широких каналах связи и множестве CDN по всему миру.
Вы можете быть очень крутой компанией с точки зрения технологий, но запустить второй YouTube без многомиллиардных инвестиций в дата-центры вы не сможете.
И наконец, провайдер.
Он будет только рад максимально ограничить пользовательский трафик внутри своей сети и минимизировать свои затраты на пиринг с другими провайдерами в точках обмена трафиком.
Это особенно актуально с учетом того, что видеоконтент сейчас является одним из основных потребителей мобильного и стационарного трафика.
Не зря Netflix и другие компании согласились принудительно снизить качество своих видео с 4К до 1080p, чтобы разгрузить сети европейских провайдеров во время пандемии коронавируса.
Многие люди ушли в вынужденный простой, перегружая сети потоковым видео, мешая всем остальным нормально работать удаленно.
Жуткая олигополия
CDN, несомненно, очень крутая технология.Проблема в том, что это требует больших капитальных затрат и закладывает потенциальную мину под будущее Всемирной паутины.
По сути, если вы достаточно крупная компания, то почти неизбежно вам придется обратиться к кому-то из небольшого списка компаний.
Крупнейшие сети:
В результате в случае программной ошибки на любом из них вы просто потеряете многие сервисы, размещенные на их объектах, например, Сбой Cloudflare в 2019 году.Затем они загрузили кривое правило в брандмауэр веб-приложений Cloudflare и распространили его по всему миру.
В результате они получили 100% загрузку ЦП на своих узлах.
В это время клиенты по всему миру на сотнях ресурсов массово получали 502 ошибки (Bad Gateway).
Основными затронутыми ресурсами стали Discord, Reddit, Twitch и другие.
Или можно вспомнить массовое падение кучи сервисов в России при блокировке IP-адресов Amazon по приказу Роскомнадзора (перебои в работе Вайбер , некоторые платежные системы, сервисы регистрации на рейсы, системы продажи электронных полисов ОСАГО , Сеть научных контактов ResearchGate , центральное хранилище Java-библиотек, сайты Сколтеха, МГУ, Высшей школы экономики и других университетов, научные архивы, система подачи заявок в РФФИ и другие).
Таким образом, теряется главное преимущество, сделавшее Интернет глобальным – децентрализация.
Кроме того, есть еще одна очень важная проблема.
Зашифрованный мусор не может быть кэширован должным образом.
Поэтому в большинстве реализаций вам придется предоставить CDN-провайдеру самое ценное — шифрование трафика между вами и клиентом.
По сути, вы соглашаетесь на классический подход «Человек посередине» для оптимизации доставки контента.
Это создает дополнительные риски концентрации частной информации пользователей в одних руках.
Остановимся на проблеме олигополии более подробно.
показано здесь .
Можно ли обойтись без CDN?
Да, ты можешь.Если ваша потенциальная аудитория находится в том же регионе и не будет страдать от высокого пинга, то CDN вам не нужен.
Что делать, если я хочу просто играть локально или обеспечить высокий пинг людям не в Москве? Вы можете ограничиться локальным сервером.
На самом деле VDS у нас часто покупают в Екатеринбурге, Новосибирске, Казани и Санкт-Петербурге просто для игровых серверов или для проектов для локальных офисов.
А VDS во Франкфурте, Лондоне или Амстердаме нужны тем, кто пользуется теми же торговыми ботами или что-то парсит: они ближе к биржам и источникам данных.
Услуга локальных для города игровых серверов настолько востребована, что у нас уже есть возможность создать такой же клиент сервера Майнкрафт сразу вместе с заказом нового сервера, уже предустановленного на свежей VPS машине.
Если на вашем сервере Майнкрафт есть ограничение в 30 игроков, то вы будете получать вполне предсказуемый трафик между вами и клиентами.
Причем статическими данными в этом случае будут только пользовательские текстуры, наборы серверных плагинов или что-то подобное.
Все остальное будет обрабатываться на стороне клиента.
В зависимости от выбранного вами типа сервера вам нужно будет развернуть либо полностью ванильную версию игры на виртуальной машине, либо, что более вероятно, использовать платформу, поддерживающую сторонние моды, например.
Буккит .
Для 30-50 игроков вам понадобится около 6 ГБ оперативной памяти, в зависимости от количества модов, которые вы добавляете на свой сервер, и размера карты.
К процессору также предъявляются высокие требования.
Из-за архитектуры игры вы сможете использовать для вычислений только одно ядро, поэтому высокие тактовые частоты предпочтительнее большего количества ядер.
И самое интересное — это сеть.
В целом достаточно скромного канала в 10–20 Мегабит/с будет вполне достаточно.
Гораздо важнее сразу предусмотреть размещение игровых серверов как можно ближе к игрокам.
Поверьте, крипер, убивающий вас через секунду после того, как вы успешно от него сбежали, или провалившийся сквозь блок из-за большой задержки, гарантированно вызовет массу ненормативной лексики со стороны игроков.
Поэтому близкие к вашей аудитории серверы с низкими пингами в некоторых случаях являются вполне альтернативой CDN. Например, у нас есть свободные мощности в Новосибирске и Казани с хорошей связностью.
Общий
Вероятно, вам не нужен CDN, если:- У вас очень легкие данные и нет тяжелого фото/видео контента.
- Для ваших клиентов задержки в несколько дополнительных секунд при первом подключении не критичны.
- Вы не планируете внезапных пиковых нагрузок во время обновлений или распродаж.
- У вас есть ценные личные данные, и вы не можете делегировать шифрование HTTPS третьим лицам.
На что обратить внимание при переходе на CDN:
- География присутствия.
Ваш поставщик должен иметь узлы в точках наибольшей концентрации ваших клиентов.
Проанализируйте свои журналы и свою аудиторию.
Вы должны охватить максимальный процент посетителей региональными узлами.
- Связь.
Если CDN-провайдер имеет узел в Москве, но отправляет туда трафик странными петлями через Австралию, то это не решит проблем вашего бизнеса.
- Стек технологий.
Убедитесь, что провайдер предоставляет все необходимые вам технологии обработки трафика: HTTP/2, TLS 1.3, IPv6 и другие детали.
- Всегда проводите тщательное тестирование перед перемещением производственного трафика в новую инфраструктуру.
Идеально, если у вас есть резервная схема, к которой можно откатиться в первый раз: так вы сможете избежать неприятных сюрпризов.
готовый .
Теги: #Сетевые технологии #сервер #Хостинг #ИТ-инфраструктура #cdn #данные #vds #оптимизация #автоматизация #кэширование #сервис #cdn-провайдер #веб-страница
-
11 Советов Для Себя В Июне Прошлого Года
19 Oct, 24 -
Моральный Аспект «Барминской Нашивки»
19 Oct, 24 -
Исповедь Графомана
19 Oct, 24 -
Пишем Приложения Для Google Glass
19 Oct, 24 -
Hp Покупает 3Com За $2,7 Млрд.
19 Oct, 24