DAS_2024_1/mochalov_danila_lab_7/readme.md

37 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Балансировка нагрузки в распределенных системах
## Введение
Балансировка нагрузки является критически важной частью построения отказоустойчивых распределенных систем. Она позволяет эффективно распределять входящий трафик между несколькими серверами или другими ресурсами, предотвращая перегрузку и обеспечивая бесперебойную работу приложения.
## Алгоритмы балансировки нагрузки
Для распределения запросов между серверами используются различные алгоритмы:
* **Round Robin:** Простейший алгоритм, распределяющий запросы последовательно по всем доступным серверам.
* **Weighted Round Robin:** Учитывает производительность каждого сервера, назначая им веса и распределяя запросы пропорционально этим весам.
* **Least Connections:** Направляет запрос на сервер с наименьшим количеством активных соединений, динамически адаптируясь к текущей нагрузке.
## Технологии балансировки нагрузки
Существует несколько технологий, которые помогают реализовать балансировку нагрузки:
* **Nginx:** Веб-сервер и реверс-прокси, широко используемый для балансировки нагрузки на HTTP и TCP уровнях. Обладает высокой производительностью.
* **Kubernetes Ingress:** Компонент Kubernetes, управляющий внешним доступом к сервисам внутри кластера и обеспечивающий балансировку нагрузки между ними.
## Балансировка нагрузки на базах данных
Балансировка нагрузки на базах данных представляет собой более сложную задачу и использует следующие подходы:
* **Репликация:** Создание нескольких синхронизированных копий базы данных, позволяющее распределять запросы между ними и снижать нагрузку на каждый отдельный сервер.
* **Шардинг:** Разделение данных на части и их размещение на разных серверах. Эффективно для работы с очень большими объемами данных.
СУБД, такие как PostgreSQL и MongoDB, поддерживают как репликацию, так и шардинг.
## Реверс-прокси и балансировка нагрузки
Реверс-прокси выступает в качестве единой точки входа для всех запросов, скрывая от клиентов внутреннюю структуру системы и упрощая взаимодействие с ней. Реверс-прокси (Nginx например) может выполнять балансировку нагрузки, выбирая сервер для каждого запроса.
## Заключение
Балансировка нагрузки — необходимый компонент распределенных систем, обеспечивающий отказоустойчивость. Выбор алгоритмов и технологий балансировки нагрузки зависит от конкретных требований проекта и характеристик системы.