DAS_2024_1/lazarev_andrey_lab_7
2024-11-10 02:24:30 +04:00
..
README.md lazarev_andrey_lab_7 2024-11-10 02:24:30 +04:00

Лабораторная работа №7

Задание

Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :). А помогут Вам в этом вопросы из списка:

  1. Какие алгоритмы и методы используются для балансировки нагрузки?
  2. Какие открытые технологии существуют для балансировки нагрузки?
  3. Как осуществляется балансировка нагрузки на базах данных?
  4. Реверс-прокси как один из элементов балансировки нагрузки.

Результат

Для вводной части стоит ввести толкование.

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

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

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

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

Кроме проблемы ресурсов RR, которую может исправить WRR, есть и проблема учета количества активных подключений, заключающаяся в перегрузке сервера с длительными активными подключениями. Проблему можно решить с помощью алгоритма Least Connections. Он учитывает количество подключений, поддерживаемых серверами в текующий момент времени, перенаправляя запросы на менее нагруженные сервера. Для этого алгоритма также существует и весовой вариант Weighted Least Connections.

Открытые технологии балансировки нагрузки

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

Например, Nginx - веб-сервер и реверс прокси с функциями балансировщика нагрузки. Поддерживающий алгоритмы RR, leastconn и IP Hash.

Также для контейнеризированных приложений есть Kubernetes Ingress Controller - контроллер, который управляет входящими запросами и балансирует нагрузку приложений, размещенных в kubernetes

Балансировка нагрузки на базах данных

Балансировка нагрузки базы данных требует к себе особого подхода, так как базы данных требуют согласованность и синхронизацию данных.

Для решения проблемы используют:

  • Шардинг - распределение данных между несколькими БД по определенному ключу;
  • Запись с репликами - подход, при котором запросы на запись отправляются в мастер базу, а чтение уже на реплики;
  • Прокси-серверы - управляют соединениями, обеспечивают балансировку нагрузки и другие функции для повышения производительности и отказоустойчивости. Например, Pgpool-II для PostgresSQL или MySQL Proxy для MySQL.

Реверс-прокси как элемент балансировки нагрузки.

Выше уже были представлены примеры реверс-прокси, однако не были рассмотрены предоставляемые функции:

  • Маршрутизация запросов - передача запросов на соответствующие сервера в зависимости от алгоритма балансировки;
  • Кеширование - хранение часто запрашиваемых данных;
  • SSL-терминация - шифрование и расшифровка данных на уровне прокси;
  • Сжатие и оптимизация трафика - уменьшение объема передаваемых данных.