# Лабораторная работа 7. Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах

### Задание
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :).

  1. Какие алгоритмы и методы используются для балансировки нагрузки?

  2. Какие открытые технологии существуют для балансировки нагрузки?

  3. Как осуществляется балансировка нагрузки на базах данных?

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

ЭССЕ
---

**Балансировка нагрузки в распределённых системах**

Балансировка нагрузки — это процесс распределения запросов или задач между несколькими серверами или вычислительными ресурсами для оптимизации производительности и предотвращения перегрузок. Для реализации этой задачи применяются различные алгоритмы и методы, среди которых наиболее популярными являются: **круговой метод (round-robin)**, **наибольшая нагрузка** и **по наименьшей нагрузке**. Круговой метод равномерно распределяет запросы между серверами, в то время как методы по нагрузке основываются на вычислениях текущей загрузки серверов и направляют запросы на менее загруженные узлы.

Существует множество открытых технологий для балансировки нагрузки. Одной из самых популярных является **Nginx**, который может выполнять роль реверс-прокси и балансировщика нагрузки, распределяя входящий трафик между несколькими серверами. Также существует **HAProxy**, специализированный инструмент для балансировки нагрузки с высокими возможностями настройки и поддержкой различных алгоритмов. **Keepalived** используется для обеспечения отказоустойчивости системы путём управления виртуальными IP-адресами, что помогает поддерживать доступность сервисов даже в случае сбоя одного из серверов.

Балансировка нагрузки в базах данных отличается от обычной балансировки веб-запросов. Здесь она осуществляется на уровне запросов к базе данных, и чаще всего используется **репликация** и **шардинг**. Репликация позволяет создать несколько копий базы данных, и запросы могут направляться на менее загруженные реплики. Шардинг подразумевает разделение данных по нескольким серверам таким образом, что каждый сервер отвечает за часть данных, что позволяет распределить нагрузку и ускорить обработку запросов.

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

---