From 0021d411668d29ab37bc34721d61db36e127aad6 Mon Sep 17 00:00:00 2001 From: mochalov danila Date: Thu, 14 Nov 2024 17:22:28 +0400 Subject: [PATCH] mochalov_danila_lab_7 is ready --- mochalov_danila_lab_7/readme.md | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mochalov_danila_lab_7/readme.md diff --git a/mochalov_danila_lab_7/readme.md b/mochalov_danila_lab_7/readme.md new file mode 100644 index 0000000..7baa24a --- /dev/null +++ b/mochalov_danila_lab_7/readme.md @@ -0,0 +1,37 @@ +# Балансировка нагрузки в распределенных системах + +## Введение + +Балансировка нагрузки является критически важной частью построения отказоустойчивых распределенных систем. Она позволяет эффективно распределять входящий трафик между несколькими серверами или другими ресурсами, предотвращая перегрузку и обеспечивая бесперебойную работу приложения. + +## Алгоритмы балансировки нагрузки + +Для распределения запросов между серверами используются различные алгоритмы: + +* **Round Robin:** Простейший алгоритм, распределяющий запросы последовательно по всем доступным серверам. +* **Weighted Round Robin:** Учитывает производительность каждого сервера, назначая им веса и распределяя запросы пропорционально этим весам. +* **Least Connections:** Направляет запрос на сервер с наименьшим количеством активных соединений, динамически адаптируясь к текущей нагрузке. + +## Технологии балансировки нагрузки + +Существует несколько технологий, которые помогают реализовать балансировку нагрузки: + +* **Nginx:** Веб-сервер и реверс-прокси, широко используемый для балансировки нагрузки на HTTP и TCP уровнях. Обладает высокой производительностью. +* **Kubernetes Ingress:** Компонент Kubernetes, управляющий внешним доступом к сервисам внутри кластера и обеспечивающий балансировку нагрузки между ними. + +## Балансировка нагрузки на базах данных + +Балансировка нагрузки на базах данных представляет собой более сложную задачу и использует следующие подходы: + +* **Репликация:** Создание нескольких синхронизированных копий базы данных, позволяющее распределять запросы между ними и снижать нагрузку на каждый отдельный сервер. +* **Шардинг:** Разделение данных на части и их размещение на разных серверах. Эффективно для работы с очень большими объемами данных. + +СУБД, такие как PostgreSQL и MongoDB, поддерживают как репликацию, так и шардинг. + +## Реверс-прокси и балансировка нагрузки + +Реверс-прокси выступает в качестве единой точки входа для всех запросов, скрывая от клиентов внутреннюю структуру системы и упрощая взаимодействие с ней. Реверс-прокси (Nginx например) может выполнять балансировку нагрузки, выбирая сервер для каждого запроса. + +## Заключение + +Балансировка нагрузки — необходимый компонент распределенных систем, обеспечивающий отказоустойчивость. Выбор алгоритмов и технологий балансировки нагрузки зависит от конкретных требований проекта и характеристик системы. \ No newline at end of file