Чтобы понять большие распределенные веб-сайты, вы должны знать эти понятия.

сервер алгоритм балансировки нагрузки DNS

1. Оптимизация ввода/вывода

Увеличьте кеш, чтобы уменьшить количество обращений к диску.

Оптимизируйте систему управления дисками, разработайте стратегию оптимального режима диска и стратегию адресации диска, которые рассматриваются на уровне базовой операционной системы.

Разумная конструкция блоков данных дискового хранилища и стратегии доступа к этим базам данных рассматриваются на уровне приложений. Например, мы можем разработать индексы для хранимых данных, ускорить или сократить доступ к диску за счет адресации индексов, а также ускорить доступ к диску асинхронным и неблокирующим образом.

Примените разумную стратегию RAID для улучшения дискового ввода-вывода.

2. Настройка веб-интерфейса

减少网络交互的次数(多次请求合并) 减少网络传输数据量的大小(压缩) 尽量减少编码(尽量提前将字符转化为字节,或者减少从字符到字节的转化过程。) 使用浏览器缓存 减少Cookie传输 合理布局页面 使用页面压缩 延迟加载页面 CSS在最上面,JS在最下面 CDN обратный прокси 页面静态化 异地部署

3. Деградация сервиса (автоматическая изящная деградация)

Отказ в обслуживании и отключение обслуживания

4. Идемпотентный план

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

(Примечание: идемпотентность — это обещание (а не реализация) интерфейса системы с внешним миром. Оно обещает, что до тех пор, пока интерфейс вызывается успешно, воздействие нескольких внешних вызовов на систему будет согласованным. Объявленный интерфейс поскольку идемпотент будет считать, что отказ внешнего вызова является нормой, и после отказа должен быть повтор.)

5. Отказоустойчивость

Если какой-либо сервер в кластере сервера данных опускается, все операции чтения и записи приложения на этом сервере должны быть перенаправлены на другие серверы, чтобы убедиться, что доступ к данным не будет выполнен. Этот процесс называется Failover.

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

Аварийное переключение гарантирует, что, когда копия данных недоступна, другие копии данных могут быть быстро переключены, чтобы обеспечить доступность системы.

6. Оптимизация производительности

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

  1. оптимизация производительности веб-интерфейса

Оптимизация доступа к браузеру: уменьшить HTTP-запросы; используйте кэширование браузера; включить сжатие; поместите CSS в верхнюю часть страницы и JavaScript в нижней части страницы; уменьшить передачу файла cookie Ускорение CDN обратный прокси

  1. Оптимизация производительности сервера приложений

Распределенный кеш (Redis и т. д.) Асинхронная работа (очередь сообщений) Использование кластера (балансировка нагрузки) Оптимизация кода

  1. Оптимизация производительности хранилища

Жесткий диск против твердотельного накопителя Дерево B+ против дерева LSM RAID против HDFS

7. Оптимизация кода

Многопоточность (В: Как обеспечить потокобезопасность? Каковы механизмы блокировки?) Повторное использование ресурсов (одиночный режим, пул соединений, пул потоков) структура данных вывоз мусора

8. Балансировка нагрузки

Балансировка нагрузки перенаправления HTTP

Когда пользователь отправляет запрос, веб-сервер возвращает новый URL-адрес, изменяя тег Location в заголовке ответа HTTP, а затем браузер продолжает запрашивать новый URL-адрес, что на самом деле является перенаправлением страницы. За счет перенаправления достигается цель «балансировки нагрузки». Например, когда мы загружаем исходный пакет PHP, когда мы нажимаем ссылку для скачивания, чтобы решить проблему скорости загрузки в разных странах и регионах, он вернет адрес загрузки, близкий к нам. Код возврата HTTP для перенаправления — 302.

Достоинства: относительно просто.

Недостатки: браузеру требуется два запроса к серверу для завершения одного посещения, а производительность низкая. Обрабатывающая способность самой службы перенаправления может стать узким местом, а масштабируемость всего кластера ограничена.Использование перенаправления кода ответа HTTP302 может привести к тому, что поисковые системы будут судить о мошенничестве SEO и понизят рейтинг поиска.

Балансировка нагрузки разрешения доменных имен DNS

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

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

Преимущества: Работа балансировки нагрузки передается в DNS, что экономит проблему управления сайтами и обслуживания серверов балансировки нагрузки. В то же время многие DNS также поддерживают разрешение доменного имени на основе географического местоположения, то есть доменное имя будет Быть разрешена на адрес сервера, который является географически ближе всего к пользователю. Это ускоряет доступ пользователей и улучшает производительность.

Недостатки: правила не могут быть определены свободно, и очень проблематично изменить сопоставленный IP-адрес, или машина выходит из строя, а также существует проблема задержки проверки DNS. Кроме того, управление балансировкой нагрузки DNS находится у поставщика услуг доменных имен, и веб-сайт не может вносить больше улучшений и более мощное управление.

Балансировка нагрузки обратного прокси

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

Преимущества: он интегрирован с функцией обратного прокси-сервера, а развертывание простое.

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

LVS-NAT: изменить IP-адрес

LVS-TUN: технология инкапсуляции одного IP-пакета в другой IP-пакет.

LVS-DR: измените MAC-адрес фрейма данных на MAC-адрес выбранного сервера, а затем отправьте измененный фрейм данных в локальную сеть с группой серверов.

9. Кэш

Кэширование — это хранение данных в ближайшем месте к вычислению для ускорения обработки. Кэш — это первое средство для повышения производительности программного обеспечения.Одним из важных факторов для все более и более быстрого процессора является использование большего объема кеша.В сложном программном обеспечении кеш почти везде. Проекты крупномасштабной архитектуры веб-сайтов используют дизайн кэша разными способами.

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

Обратный прокси-сервер: Обратный прокси-сервер является частью внешней архитектуры веб-сайта и развертывается на передней части веб-сайта.Когда пользователь запрашивает центр обработки данных веб-сайта, обратный прокси-сервер является первым. Здесь статические ресурсы веб-сайта кэшируются, и нет необходимости хранить статические ресурсы веб-сайта.Запрос продолжает пересылаться на сервер приложений для возврата пользователю.

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

Распределенный кеш: объем данных на большом веб-сайте очень велик. Даже если кешируется лишь небольшая часть данных, требуемый объем памяти недоступен для одной машины. Поэтому в дополнение к локальному кешу используется распределенный кеш. также требуется кэшировать данные в специальном распределенном кеше.В кластере кеша приложения получают доступ к кэшированным данным через сетевое соединение.

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

10. Алгоритм балансировки нагрузки

Круговой опрос Улучшенный круговой алгоритм с весом опроса Случайный Усилить случайный Вес Случайный Наименьшее количество подключений Укрепляйте наименьшую связь хэш исходного адреса

другие алгоритмы

Самый быстрый алгоритм: передать соединение серверу, который отвечает быстрее всего. Когда один из серверов выходит из строя со 2-го по 7-й уровень, BIG-IP выводит его из очереди сервера и не участвует в распределении следующего пользовательского запроса, пока он не вернется в нормальное состояние.

Наблюдение: количество подключений и время отклика основаны на наилучшем балансе этих двух параметров в качестве нового сервера выбора запросов. Когда сервер имеет второй-седьмой этажи, BIG-IP берет его из очереди сервера и не участвует в назначении следующего пользовательского запроса, пока он не вернется в нормальное состояние.

Алгоритм прогнозирования (Predictive): BIG-IP использует собранные текущие показатели производительности сервера для проведения прогнозного анализа и выбирает сервер, производительность которого достигнет наилучшей производительности в следующем временном интервале, соответствующем запросу пользователя. (обнаружено BIG-IP)

Алгоритм динамического распределения производительности (Dynamic Ratio-APM): BIG-IP собирает различные параметры производительности приложений и серверов приложений для динамической настройки распределения трафика.

Алгоритм динамического пополнения серверов (Dynamic Server Act.): когда количество ферм основных серверов уменьшается из-за сбоев, резервные серверы динамически добавляются к ферме основных серверов.

Алгоритм качества обслуживания (QoS): распределение потоков данных в соответствии с различными приоритетами.

Алгоритм типа службы (ToS): балансировка нагрузки распределяет потоки данных в соответствии с различными типами службы (указанными в поле типа).

Алгоритм режима правил: установите направляющие правила для различных потоков данных, пользователи могут

11. Разница между масштабируемостью и масштабируемостью

Масштабируемость: относится к способности постоянно расширять или заменять системные функции с минимальным воздействием на существующую систему. Он показывает, что инфраструктура системы стабильна и не требует частых изменений, между приложениями меньше зависимость и связь, и она может быстро реагировать на изменения спроса. Это открытый и закрытый принцип на уровне проектирования системной архитектуры (открытый для расширения, закрытый для модификации).

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

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

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

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

12. Последовательное перемешивание распределенных кэшей

Конкретный процесс алгоритма: сначала построить целочисленное кольцо (это кольцо называется кольцом HASH согласованности) в соответствии со значением HASH имени узла (его диапазон распределения [0, 2 ^ 32 - 1]), в соответствии с именем узла. Сцена устанавливается в этом кольце HASH. Затем значение KEY данных, которые необходимо кэшировать (диапазон распределения также [0, 2 ^ 32 - 1]) в соответствии с требуемыми кэшированными данными, а затем смотрит по часовой стрелке по часовой стрелке по часовой стрелке Узел сервера кэширования Завершите поиск отображения HASH ключа к серверу.

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

Сколько узлов виртуальных серверов подходит для физического сервера? Очки опыта: 150.

13. Кибербезопасность

  1. XSS-атака

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

Превентивные средства: Лечение (XSS-атака обычно не используется в общем пользовательском вводе, если обработка фильтрации и лечения выполняется фильтрацией и лечением, то есть для некоторых опасных символов HTML, таких как «>», переведенных в «>» ); только http (предотвращает кражу файлов cookie злоумышленниками XSS).

  1. Атаки путем внедрения: внедрение SQL и внедрение ОС

Предотвращение SQL: подготовленный оператор PreparedStatement; ORM; избегайте хранения паролей в виде обычного текста; обрабатывайте соответствующие исключения.

  1. CSRF (подделка межсайтовых запросов, подделка межсайтовых запросов). Звучит немного похоже на XSS, но на самом деле они очень разные: XSS использует доверенных пользователей на сайте, а CSRF использует доверенные веб-сайты, маскируя запросы от доверенных пользователей.

Предотвращение: httpOnly; увеличение токена; идентификация по Referer.

  1. Уязвимость при загрузке файлов

  2. DDoS-атака

14. Криптография

Дайджест-шифрование: MD5, SHA Симметричное шифрование: алгоритм DES, алгоритм RC, AES Асимметричное шифрование: RSA

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

15. Управление потоком (управление потоком)

падение трафика

Просто и грубо выполнять ограниченное ожидание через очередь памяти одной машины и напрямую отбрасывать пользовательские запросы, а если это приложение с интенсивным вводом-выводом (включая сетевой ввод-вывод и дисковый ввод-вывод), узким местом обычно является больше нет ЦП и ввода/вывода.ОЗУ. Таким образом, соответствующее ожидание может не только улучшить взаимодействие с пользователем, но и улучшить использование ресурсов.

Асинхронные пользовательские запросы через распределенные очереди сообщений.

использованная литература

  1. LVS: сравнение трех методов балансировки нагрузки + еще трех методов балансировки нагрузки
  2. «Техническая архитектура больших веб-сайтов — основные принципы и технический анализ», Ли Чжихуэй.
  3. Создание веб-системы на 100 миллионов уровней: от одной машины до распределенного кластера
  4. «Проектирование и реализация архитектуры больших распределенных веб-сайтов», Чен Кансянь.