Введение в знания CDN об архитектуре с высокой степенью параллелизма

Архитектура

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

Архитектура развертывания

Для крупномасштабных веб-сервисов наша архитектура развертывания обычно выглядит так, как показано ниже. Сначала прикинь, а потом объясни.

大流量架构图

Вот объяснение того, почему он структурирован таким образом. Сначала запрос клиента пройдетDNSПолучите соответствующий IP-адрес сервера (фактически IP-адрес LB), этот уровень будет иметьБалансировка нагрузки DNS, а если это ресурс статического сайта, то он войдет в CDN.Здесь то, как DNS и CDN завершают процесс захвата, будет подробно объяснено позже. Когда запрос достигает уровня LB (протокол прикладного уровня — это протокол HTTP), этот уровень снова выполняет балансировку нагрузки (возможно, с помощью LVS или Nginx). Здесь у нас есть два разных метода обработки, один путь будет входить в кластер агентов, а другой — напрямую входить в кластер приложений. это почему?

LB в прокси-кластер

После достижения прокси-машины через балансировку нагрузки LB верхнего уровня он не входит напрямую вступает непосредственно кластер приложений, и цель наличия слоя прокси в основном для облегчения выполнения различных расширенных (соусных) операций в кластере прокси.

Например: сбор журнала запросов, настраиваемый кеш, настраиваемая балансировка нагрузки, формулировка настраиваемого правила маршрутизации (межмашинное помещение, группировка маршрутизации).

LB в кластер приложений

Прокси-уровень имеет так много преимуществ, почему существует способ обойти прокси-уровень? В основном это услуги с высоким трафиком. Поскольку прокси-уровень имеет много дополнительных операций, ответ станет длиннее, путь увеличится, и будет еще одна передача по сети туда и обратно к следующему кластеру.

Поэтому, как правило, для сервисов с большим трафиком, чтобы предотвратить переполнение прокси-сервера и быстрее реагировать, нагрузка будет напрямую загружаться на внешний сетевой LB в кластер приложений.

После описанной выше сегментации он в конечном итоге достигнет кластера приложений, и мы развернем его на каждой машине.NginxДля перехода на соответствующий сервис по доменному имени, конечно, его тут может вообще не бытьNginx, такие как микросервисы, здесь может бытьSideCardиграет роль. Это в основном для удобства объяснения, что позже мы все будем рассматривать его как Nginx. сервисный звонокDB Cacheи т. д., все через доменное имя, это для балансировки нагрузки, когда запрос будет сделан, разрешение доменного имени будет завершено через службу DNS интрасети, а затем будет получен интранет.LBИП. Затем здесь выполняется балансировка нагрузки интрасети, и он проверяет, являетесь ли вы операцией записи или операции чтения, в соответствии с портом доменного имени и возвращает IP-адрес. В общем, будет гарантирована одноточечная запись и многоточечное чтение. для обеспечения согласованности данных.

Весь процесс такой, давайте поговорим о нем подробно далееDNSиCDNРодственный принцип работы.

Как DNS реализует поиск IP

Чтобы уточнить CDN позже, вот процесс разрешения DNS. Конечно, таких статей в Интернете уже много. Но я все же хочу рассказать о том, как работает DNS в моем понимании.

Во всем процессе DNS есть четыре важных понятия, которые объясняются ниже.

DNS Resolver- Рекурсивный преобразователь, в основном для получения запроса на разрешение доменного имени, отправленного клиентом, и отправки запроса запроса DNS. Для клиента это не требует никаких усилий, просто подождите, пока DNS Resolver сам скажет результат IP передачи доменного имени.

Root Server- Это первый запрос для выполнения преобразования IP-адресов.Корневой сервер не хранит информацию о сопоставлении IP-адресов конкретных доменных имен. Это как индексный сервер, который говорит вам, куда идти дальше.TLD ServerЗапрос.

TLD Server- Это сервер доменных имен верхнего уровня, который является вторым шагом для выполнения поиска IP, который покажетDNS ResolverАдрес полномочного сервера имен.

Authoriative Server- Авторитетный сервер доменных имен — это доменное имя, содержащее полное имя машины, например: www.example.com, и IP-адрес, соответствующий этому конкретному доменному имени, хранится на этой машине.

dns-lookup-diagram

Давайте поговорим о том, что делает каждый шаг, исходя из десяти шагов на рисунке.

  1. Пользователь вводит: example.com в браузере, затем будет сгенерирован DNS-запрос для входа в DNS Resolver;
  2. Резолвер войдет на корневой сервер для запроса;
  3. Корневой сервер возвращает адрес сервера TLD, а запрос запроса отправляется службе доменных имен верхнего уровня, здесь сервер .com.
  4. Рекурсивный преобразователь отправляет запрос на сервер .com;
  5. После того, как сервер TLD получит запрос, он вернет адрес авторитетного сервера example.com;
  6. Рекурсивный синтаксический анализатор отправляет другой запрос полномочному серверу, и авторитетный сервер запрашивает свою собственную таблицу сопоставления, чтобы получить IP-адрес;
  7. Запрошенный IP-адрес возвращается DNS Resolver;
  8. DNS Resolver возвращает IP-адрес браузеру, и браузер будет использовать этот IP-адрес для установления соединения и инициирования запроса;
  9. Клиент инициирует HTTP-запрос через этот IP-адрес;
  10. Сервер анализирует запрос и возвращает данные браузеру.

Здесь необходимо добавить, что каждый шаг, описанный выше, фактически имеет дизайн кэша DNS. Например:

  • Браузер кэширует результаты DNS (chrome://net-internals/#dns).
  • DNS-модуль операционной системы будет кэшировать
  • Каждый последующий уровень также имеет кэш

Столько раз наш процесс синтаксического анализа не выполнял эти 8 шагов последовательно. Это то же самое, что и служба приложений, которую мы разработали сами.Кэш кешируется слой за слоем.Если есть кеш, будет прочитан кешированный результат, и реализация кеша выполнит весь процесс.

Классификация разрешения DNS

DNS имеет множество записей разрешения, которые можно установить.Здесь я представлю три очень распространенных схемы.

Запись- Это называется IP-указанием, пользователь устанавливает доменное имя так, чтобы оно указывало на соответствующий IP-хост. Если вы хотите использовать запись A для достижениябалансировки нагрузкиТребуется поддержка хостинговой компании.CNAME-запись- Это эквивалентно установке псевдонима для имени хоста, и запись не может напрямую использовать IP, это может быть только псевдоним другого хоста. CDN в основном использует эту запись для завершения. Если одновременно есть запись A и запись CNAME, запись A будет использоваться первой, другими словами, запись CNAME не вступит в силу.NS записи- Используется для установки пути полномочного сервера для доменного имени.Эта запись будет действовать только для субдоменов. В этом месте можно установить IP или доменное имя другого авторитетного сервера. Важно отметить, что его приоритет выше, чем у записи A, и он пропускает шаги 2, 3, 4 и 5 в процессе разрешения DNS.

После понимания шагов DNS следующим шагом будет ввод анализа части CDN.

Ускорение доступа к CDN

Что такое CDN? Китайский перевод — это сеть распространения контента. Смотрите картинку.

2circles

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

Далее нам нужно ответить на два вопроса.

  1. Какие преимущества дает CDN.
  2. Как разрешить CDN.

Преимущества CDN

Прежде чем что-то понять, лучше узнать, что оно может делать и каковы преимущества. Потом посмотрим, как это работает. У CDN есть несколько преимуществ.

Улучшить скорость загрузки страницы

Это самое очевидное преимущество.По приведенной выше картинке вы также можете интуитивно почувствовать, что скорость доступа пользователей к ближайшей машине определенно самая высокая. И чем быстрее скорость загрузки веб-сайта, тем лучше пользовательский опыт, и тем больше ваш веб-сайт будет любим соответствующими пользователями. Что касается того, как получить ближайший доступ, основная часть будет представлена ​​позже.

Избыточный контент

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

экономить пропускную способность

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

Гарантия безопасности услуги

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

В настоящее время CDN способны кэшировать не только статический HTML, CSS, JS и VIDEO, но и CDN, которые могут кэшировать содержимое динамического интерфейса, что дает нам больше возможностей для выбора при создании сервисов с высокой степенью параллелизма.

Как работают CDN

При представлении DNS мы рассказали, как клиент получает IP-адрес. Итак, после того, как у вас есть CDN, как следует управлять этим процессом?

CDN на самом деле больше похож на слой кеша, размещенный между сервером приложений и пользователем. Поэтому, если DNS возвращает клиенту IP-адрес машины CDN вместо IP-адреса приложения, то он, естественно, перейдет к машине CDN.

Для достижения вышеуказанной цели мы настроимCNAME(все обращают внимание на приоритет упомянутых выше записей CNAME и A), то как же в итоге этот CNAME резолвится на соответствующую машину CDN? По сути, процесс такой же, как и разрешение DNS. Когда обнаруживается, что доменное имя имеет набор CNAME, преобразователь DNS продолжит разрешать псевдоним CNAME (фактически другое доменное имя). При синтаксическом анализе этого CNAME будет использоваться синтаксический анализ DNS глобальной нагрузки, и он вернет соответствующий IP-адрес (IP-адрес компьютера CDN) в соответствии с информацией о географическом местоположении посетителя. Таким образом, клиент на самом деле получает IP-адрес ближайшей к нему машины CDN.

Что делать, если пользователь обращается к CDN, но в CDN нет соответствующего контента? В это время машина CDN фактически получит IP-адрес исходного сайта в соответствии с доменным именем в соответствии со своей собственной выделенной службой разрешения DNS, а затем отправит запрос на исходный сайт для получения данных и кэширует данные локально для последующего use; в то же время он возвращает результат этого времени, полный доступ к этому запросу.

Следует сказать, что CDN на самом деле являются многоуровневыми. Ближайший к пользователю узел называется граничным узлом. Кластер центрального сервера CDN называется кешем второго уровня. Выше приведен исходный сайт для развертывания приложения. Как правило, граничные узлы переходят к кэшу второго уровня, если нет данных, и переходят к исходной станции, если в кэше второго уровня нет данных (так называемый возврат к источнику).

резюме

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

Личный общедоступный номер:dayuTalk