Merge pull request 'mochalov_danila_lab_7' (#185) from mochalov_danila_lab_7 into main
Reviewed-on: #185
This commit is contained in:
commit
5b6a3e7971
37
mochalov_danila_lab_7/readme.md
Normal file
37
mochalov_danila_lab_7/readme.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Балансировка нагрузки в распределенных системах
|
||||||
|
|
||||||
|
## Введение
|
||||||
|
|
||||||
|
Балансировка нагрузки является критически важной частью построения отказоустойчивых распределенных систем. Она позволяет эффективно распределять входящий трафик между несколькими серверами или другими ресурсами, предотвращая перегрузку и обеспечивая бесперебойную работу приложения.
|
||||||
|
|
||||||
|
## Алгоритмы балансировки нагрузки
|
||||||
|
|
||||||
|
Для распределения запросов между серверами используются различные алгоритмы:
|
||||||
|
|
||||||
|
* **Round Robin:** Простейший алгоритм, распределяющий запросы последовательно по всем доступным серверам.
|
||||||
|
* **Weighted Round Robin:** Учитывает производительность каждого сервера, назначая им веса и распределяя запросы пропорционально этим весам.
|
||||||
|
* **Least Connections:** Направляет запрос на сервер с наименьшим количеством активных соединений, динамически адаптируясь к текущей нагрузке.
|
||||||
|
|
||||||
|
## Технологии балансировки нагрузки
|
||||||
|
|
||||||
|
Существует несколько технологий, которые помогают реализовать балансировку нагрузки:
|
||||||
|
|
||||||
|
* **Nginx:** Веб-сервер и реверс-прокси, широко используемый для балансировки нагрузки на HTTP и TCP уровнях. Обладает высокой производительностью.
|
||||||
|
* **Kubernetes Ingress:** Компонент Kubernetes, управляющий внешним доступом к сервисам внутри кластера и обеспечивающий балансировку нагрузки между ними.
|
||||||
|
|
||||||
|
## Балансировка нагрузки на базах данных
|
||||||
|
|
||||||
|
Балансировка нагрузки на базах данных представляет собой более сложную задачу и использует следующие подходы:
|
||||||
|
|
||||||
|
* **Репликация:** Создание нескольких синхронизированных копий базы данных, позволяющее распределять запросы между ними и снижать нагрузку на каждый отдельный сервер.
|
||||||
|
* **Шардинг:** Разделение данных на части и их размещение на разных серверах. Эффективно для работы с очень большими объемами данных.
|
||||||
|
|
||||||
|
СУБД, такие как PostgreSQL и MongoDB, поддерживают как репликацию, так и шардинг.
|
||||||
|
|
||||||
|
## Реверс-прокси и балансировка нагрузки
|
||||||
|
|
||||||
|
Реверс-прокси выступает в качестве единой точки входа для всех запросов, скрывая от клиентов внутреннюю структуру системы и упрощая взаимодействие с ней. Реверс-прокси (Nginx например) может выполнять балансировку нагрузки, выбирая сервер для каждого запроса.
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
Балансировка нагрузки — необходимый компонент распределенных систем, обеспечивающий отказоустойчивость. Выбор алгоритмов и технологий балансировки нагрузки зависит от конкретных требований проекта и характеристик системы.
|
Loading…
Reference in New Issue
Block a user