diff --git a/balakhonov_danila_lab_7/README.md b/balakhonov_danila_lab_7/README.md new file mode 100644 index 0000000..3372afb --- /dev/null +++ b/balakhonov_danila_lab_7/README.md @@ -0,0 +1,32 @@ +# Лабораторная работа номер 7 + +> Здравствуйте меня зовут Балахонов Данила группа ПИбд-42 +> +> *— Балахонов Данила ПИбд-42* + +# Вопросы лабораторной работы номер 7 +## Какие алгоритмы и методы используются для балансировки нагрузки? +Существует два вида балансировки, которые используются на практике: +1. Статическая балансировка +2. Динамическая балансировка + +Идея статической балансировки заключается в фиксировании количества работ, которых может выполнять поток. Динамическая же, напротив, предоставляет возможность изменять объем работ во времени. Если поток закончит выполнение работы, то ему предоставляется новая работа. +Алгоритмы, которые применяются для балансировки: + - Круговой алгоритм. Это самый простой и распространенный алгоритм. Работает по принципу кругового распределения задач. Каждый запрос отправляется на следующий сервер в порядке, установленном заранее. + - Наименьшее количество соединений. Этот алгоритм выбирает сервер с наименьшим количеством активных соединений. + - Случайный выбор. Выбирает случайным образом некоторое количество серверов и отправляет запрос на менее загруженный из них. + - Хеш. Использует хеш-функцию для распределения запросов между серверами на основе определенного параметра. Этот алгоритм позволяет отправлять запросы от одного и того же клиента на один и тот же сервер. +## Какие открытые технологии существуют для балансировки нагрузки? +Для балансировки используются такие популярные технологии, как Nginx, Traefik, HAProxy. +## Как осуществляется балансировка нагрузки на базах данных? +Балансировка нагрузки на базах данных осуещствляется с помощью различных методов, таких как: +- Репликация. Копирует базу данных на несколько серверов. +- Чтение данных из копий базы данных, запись - в основную базу данных. +- Шардинг. Распределяет между несколькими серверами части одной базы данных по определенному критерию (например ID). +- Кеширование. Позволяет снизить нагрузку на основную базу данных, вытащив наиболее часто используемые данные. Обычно перед запуском производят "прогрев кеша", то есть передача популярных данных в кеш заранее. +- Прокси балансировщики для распределения нагрузки между репликами базы данных. +## Реверс-прокси как один из элементов балансировки нагрузки. +Реверс-прокси - это прокси сервер, который запросы клиентов перенаправляет на сервера внутренней сети. +Реверс-прокси используется для предоставления фасада, объединения нескольких сервисов, балансировки нагрузки. +Балансировка нагрузки реверс-прокси происходит с помощью алгоритмов, которые были написаны выше. Также для повышения работоспособности он имеет встроенный кеш. Используя реверс-прокси можно централизованно управлять нагрузкой системы, проводить мониторинг. +Пример реверс-прокси: Nginx. \ No newline at end of file