начало
Эта статья была распространена через FCC Шанхай в автономном режиме и Chengdu WeChat, и была организована в виде письменного черновика для обновления.Учитывая, что читатели, которые едят дыню, не знают, сколько они знают, и моя личность как научно-популярного автора (определенная себя), я решаю представить от входа до отказа, который примерно включает в себя:
- Что такое CDN
- Почему мы используем CDN
- Принцип доступа
- Архитектура
- Применение и шаг
- CDN реального мира
Потому что подробно рассказывать о каждом месте очень трудоемко, легко пропустить билеты, и это приведет к слишком долго, так что это фактически научно-популярная тема.Если вы хотите углубиться, ссылки будут даны в каждом месте , вы можете перейти к целевому углубленному чтению.
Если что-то не так, пожалуйста, укажите мне,жирныйНекоторые из них являются гиперссылками.
Что такое CDN
Начните с простого каштана:
«Сельское хозяйство в Африке слаборазвито, и все должны за него платить» — я думаю, что все видели в основном видео из Сан-Диего, США, где американцы, африканцы и японцы сцепились друг с другом. Если Jinkela будет производиться только в одном месте, то стоимость транспортировки в Африке и давление на производственные мощности производителей будут очень высокими.
Все очень просто: у нас есть литейные заводы в каждой стране мира, которая нуждается в Jinkela и производит Jinkela — наша CDN — это компания, производящая Jinkela, а каждый «узел» — это литейный цех.
CDN, китайское имя является «сеть распределения контента», его роль - уменьшитьЗадержка распространения, найти ближайший узел.На самом деле, хотя Интернет помог нам реализовать глобальную деревню, задержка из Китая в Японию и из Китая в Тайвань все же отличается.Это видно изpingа такжеtracerouteвидел в.
Преимущества CDN
Ускорение доступа
CDN как классическое средство производительности переднего плана, я считаю, что у нас нет мозга, используемого, как я уже говорил, сокращение времени задержки, в значительной степени может использоваться в качестве средства для ускорения. На самом деле пример реального перед узлом CDN будет не страна, и даже не один оператор, не одна провинция и даже не регион будет иметь узел.

Уменьшите нагрузку на источник (сервер)
Очень простая проблема, которую можно понять, если CDN уже может помочь мне вернуть данные, то запрос не дойдет до исходного сайта, и нагрузка на исходный сайт (сервер) будет снижена.
противостоять атаке
Теперь, когда нагрузка на исходный сайт снижена, можно болтать и смеяться, подвергаясь DDOS-атаке.
Когда г-н Руан столкнулся с DDOS, г-н Руан позже переместил контент на GayHub...
Тогда мне не нужно было обновлять контент.Недавно г-н Руан выпустил руководство по защите от DDOS, а потом его снова атаковали и парализовало.В руководстве по защите говорилось, что он был поражен CC, а затем мигрировал в Tencent Cloud. Моё лицо... Конечно, СС на самом деле не так уж и сложно защищать, но это не в тему шеринга, да и поболтать можно потом, если интересно...
Вдохновленный г-ном Руаном, я составил диаграмму архитектуры и диаграмму идеи системы блогов, в основном таких же, как Jekyll и Hexo на рынке.В то время моя идея заключалась в том, чтобы вытащить все комментарии и так далее. в большинстве случаев висящие комментарии и тому подобное не окажут никакого влияния на сам пост в блоге. Позже я вернулся, проверил и обнаружил, что это не то же самое, что на рынке - неплохо!
Итак, поскольку статические ресурсы могут передаваться в CDN, могут ли наш API и наши страницы MVC также передаваться в CDN? Ответ да, ключ в этомУскорение всего сайтас вещами.
Что за игра? По сути, CDN — это кеш, разница в том, что кеш размещается на узле поставщика сетевых услуг.
Простейшая модель подобна этой картинке из книги «Основные принципы и анализ конкретных случаев технологической архитектуры больших веб-сайтов».
Принцип доступа
С момента, когда мы инициируем запрос, до прибытия узла CDN, что прошло и как CDN ускоряет наш запрос?

Эта фотография также была найдена в сети.
Сначала в адресной строке набираем URL-адрес, браузер обнаруживает, что для этого URL-адреса нет локального кэша DNS, поэтому делает запрос к DNS-серверу сайта.
DNS-сервер веб-сайта настроен с CNAME, указывающим на сервер CDN, который является нашим общим облаком Alibaba, Tencent Cloud, Cloudflare и т. д., для запроса интеллектуальной системы балансировки нагрузки DNS в CDN.
Система балансировки нагрузки разрешает доменное имя, возвращает пользователю узел с самым быстрым ответом пользователю, а затем пользователь отправляет запрос узлу.
Если это первый раз, чтобы получить доступ к контенту, сервер CDN запрашивает данные с сайта происхождения и кэшируйте его; в противном случае данные будут найдены непосредственно в узле кэша, и результат запроса будет отправлен пользователю.
Для простейшей системы CDN требуется только один сервер планирования DNS и один сервер узла, но в сложных приложениях будут многоуровневые кэши, и несколько кэшей будут работать вместе.
Вот о чем я писал в своем блоге раньшепохожий контент(на самом деле выдержка)
Принцип возведения
Если вы хотите настроить CDN, вы берете участие в том, как сделать? Помните, что мы только что описали, фокусируясь, CDN все еще является кэшем.

Возьмите схему архитектуры Alibaba Cloud CDN и расскажите о ней. Я никогда ее не создавал. Если объяснение неверно, укажите на это.
Поскольку это кеш, очевидно, что это комбинация балансировки нагрузки и планирования кеша.Согласно принципу доступа, который мы только что упомянули, на самом деле основное внимание уделяется центральному планировщику DNS, помимо балансировки нагрузки и кеша.
На самом деле, подобно многоуровневому дизайну кеша компьютера и многоуровневому дизайну кеша бэкенда, кеш каждого уровня больше, чем первый уровень, и может хранить больше ресурсов, но требуется время, чтобы реагировать один за другим. , Если он попадет, то мы отправимся на L2, чтобы найти его.Если L2 не попадет, мы вернемся на исходную станцию, что может эффективно избежать проблемы слишком частого возвращения на исходную станцию.

Следующая картинка, больше не могу.На али LVS+Tengine в основном используется для балансировки нагрузки, а потом Swift используется для кэширования HTTP. Это то, что они сказали, но это не имеет никакого отношения ко мне Я в основном говорю о непротиворечивом Хэше фигурной скобки слева.
Консистентный хэш — это сопоставление объектов в 232 пространствах ведра, как в замкнутом кольце.Конечно, на самом деле мы также сопоставляем машины с этим кольцом, например, используя псевдонимы или IP, для хранения содержимого объектов по часовой стрелке То же самое верно для удаления и добавление узлов на ближайшую к вам машину.После добавления и удаления узлов исходные объекты будут пересчитаны в соответствии с миграцией по часовой стрелке.
Для получения более подробной информации об этом см.blog.CSDN.net/Дай мне бояться/Аретти…

Поговорив об этом ключевом алгоритме, мы почти переварили его — как его придумала соседняя облачная CDN Alibaba.
Конечно, это все еще не имеет к нам никакого отношения...
Применение и шаг
Самое распространенное применение — ускорение статических ресурсов фронтенда, на самом деле, используя CDN, мы можем даже сделать свой набор.jsDelivr.
Однако при использовании CDN необходимо понимать некоторые основные законы.
настройки кеша
Во-первых, настройка кеша, мы использовали max-age, который часто используется для управления кешем в Cache-Control, но кеш, установленный max-age, будет применяться к каждому уровню запроса. Я делаю? Это s-maxage, который используется для установки времени кеша прокси-сервера и переопределяет параметр max-age, чтобы мы могли использовать max-age для локального кеша и s-maxage для времени кеша CDN, чтобы избежать грязных данных. , производить.
частота попаданий в кэш
Для кеша еще одним важным моментом является полезность вашего кеша или нет. Если это просто статические ресурсы, то после обновления кеша процент попаданий может упасть, поэтому ресурсы CDN не подходят для частого обновления, другими словами, если результат запроса часто меняется, то CDN в принципе не имеет смысла.
Определить, нужно ли попадать в кеш
Будь то процесс собственной разработки или процесс помощи клиентам в отладке, мы будем рассматривать одно — попадает ли этот ресурс в CDN, и является ли это проблемой, вызванной CDN, в этот раз мы покажем волну операций.

В данных, возвращаемых CDN крупных производителей, будет X-Cache, то есть Hit or Miss, и будет добавлена аббревиатура, такая как Memory или Disk, для обозначения памяти или диска.Если появляется Upstream или Miss, это означает, что удара нет.
Разогрев ресурсов
В дизайне кеша очень важной частью является предварительный прогрев.При первом запуске CDN не было кешированных данных на CDN.На данный момент большое количество запросов все направлено на исходный сайт, что однозначно приведет к зависанию Достигается предварительный нагрев Кешируйте популярные данные, чтобы, когда бизнес выходит в интернет, необходимые данные уже были доступны в CDN.
Vary
Кроме того, многие CDN не поддерживают заголовки Vary, поэтому не может быть гарантировано наличие Vary: Origin, требуемого CORS.В этом случае, например, если вы обнаружите, что заголовок Origin кэширован, вы можете изменить только междоменный заголовок на * соответствовать.
Range
Кроме того, если это большой файл, он часто загружается с фрагментами заголовка RANGE, но если CDN не выполняет фрагментацию, он будет неоднократно запрашивать полные ресурсы с исходного сайта, и CDN будет напрасным. -to-source, вы можете Чтобы уменьшить потери трафика и правильно установить RANGE обратно к источнику, можно правильно попасть в кеш CDN.
Частные бессмысленные HTTPS.
Кроме того, давайте сосредоточимся на этом: HTTPS уже является обычным основным законом в наши дни, а неиспользование HTTPS является точкой распыления.Во избежание подделки и перехвата CDN также должны использовать HTTPS, но это приводит к тому, что мы передаем сертификат и закрытый ключ.Переход на платформу CDN представляет собой скрытую опасность для безопасности.
Следовательно, существует решение без закрытого ключа: пользователь создает сервер закрытого ключа, а сторона CDN запрашивает подпись. На рисунке показана реализация Alibaba Cloud, если вы развернете KeyServer и настроите его на своем собственном сервере, вы можете его использовать.

Здесь, когда я поделился в Шанхайской FCC, некоторые студенты хотели узнать об этом больше. В частности, это связано с большим количеством шифрования HTTPS. Я пока не буду расширять его. Вы можете взглянуть на статью, опубликованную CloudFlare. Я только что нашел переведенную версию:Woohoo. Сын наследует бизнес отца. Цао Цао/статья/ может…
CDN реального мира
Например, если нода выйдет из строя, это напрямую приведет к потере пользователей, особенно когда крупная компания полагается на CDN для управления статическими ресурсами, последствия такого события будут очень серьезными.
Во-вторых, дешево не хорошо: изначально, в эпоху только Wangsu, но не Alibaba Cloud, сети доставки контента были очень дорогими.В то время как Alibaba и Tencent снизили цену на сети доставки контента, они также снизили качество сетей доставки контента и качество доступа к некоторым узлам. был не очень хорошим Высокий может привести к тому, что некоторые пользователи получат доступ к сети очень плохого качества.
Затем немного популярной науки: что такое гибридная CDN — термин гибридная CDN выглядит очень высококлассно, но на самом деле мы используем CDN от нескольких производителей, возможно, включая созданные нами, а затем выбираем того, кто лучше, но в в некоторых случаях это приведет к тому, что услуга станет неуправляемой, что еще больше ухудшит качество CDN.
Суммировать
Суть CDN — это кеш, но этот кеш очень близок вам.Как пользователь или разработчик, вы можете пользоваться некоторыми преимуществами от него, но как разработчик, обслуживающий предприятие, вы должны не только учитывать преимущества CDN, но также знайте яму, которую приносит нам CDN, чтобы мы могли быть надежными пользователями CDN.