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

>Балансировка нагрузки - распределение сетевых или вычислительных нагрузок между несколькими серверами или ресурсами для оптимизации производительности, надежности и времени отклика.

Существуют такие **алгоритмы** для балансировки нагрузки, как:

- **Round Robin** — запросы идут по очереди на серверы.
- **Least Connections** — запрос направляется на сервер с наименьшей загрузкой.
- **Weighted Round Robin** — учитывает мощность серверов.

Ну и одними из популярных **технологий**, являются:

- **NGINX** и **HAProxy** — балансировщики на уровне HTTP/TCP.
- **Kubernetes Ingress** — управляет балансировкой в контейнерных средах.

Также можно осуществить балансировку нагрузки на **базах данных**, с помощью:

- **Чтение/Запись с репликами** — чтение с реплик, запись в мастер.
- **Шардинг** — деление данных по узлам.
- **PgBouncer** — управление пулами соединений.

Для балансировки нагрузки также можно использовать **реверс-прокси**.

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