Merge pull request 'kashin_maxim_lab_7' (#127) from kashin_maxim_lab_7 into main

Reviewed-on: Alexey/DAS_2024_1#127
This commit is contained in:
Alexey 2024-11-25 20:57:52 +04:00
commit f08e5d0ea2

View File

@ -0,0 +1,60 @@
# Кашин Максим ПИбд-42
## Введение
Балансировка нагрузки является важным аспектом проектирования распределенных систем, который позволяет равномерно распределять запросы и ресурсы между несколькими серверами или компонентами. Это помогает улучшить производительность, доступность и надежность систем.
## Алгоритмы и Методы Балансировки Нагрузки
Существует несколько основных алгоритмов и методов, применяемых для балансировки нагрузки:
| Алгоритм | Описание | Пример использования |
|---------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------|
| **Круговая Робин** | Запросы направляются по очереди на каждый сервер, что обеспечивает равномерное распределение нагрузки. | Подходит для небольших систем с равномерной нагрузкой. |
| **Наименьшая Загруженность** | Запросы направляются на наименее загруженный сервер, что увеличивает скорость обработки. | Используется в системах с разной производительностью серверов. |
| **На основе IP-адреса** | Запросы от одного и того же клиента направляются на один и тот же сервер. | Полезно для сохранения состояния сессии пользователей. |
## Открытые Технологии для Балансировки Нагрузки
Среди открытых технологий для балансировки нагрузки выделяются:
### 1. HAProxy
- **Описание:** Высокопроизводительная балансировка нагрузки и управление трафиком.
- **Протоколы:** HTTP, TCP.
- **Применение:** Используется в крупных веб-приложениях для равномерного распределения запросов.
### 2. Nginx
- **Описание:** Веб-сервер и реверс-прокси, обеспечивающий эффективную балансировку нагрузки и кэширование контента.
- **Протоколы:** HTTP, HTTPS.
- **Применение:** Часто используется для обеспечения высокой доступности веб-сайтов.
## Балансировка Нагрузки на Базах Данных
Балансировка нагрузки на базах данных может осуществляться через:
### Репликацию
- **Описание:** Данные копируются на несколько серверов, и запросы направляются к репликам в зависимости от их загруженности.
- **Преимущества:**
- Увеличение скорости обработки запросов.
- Повышение доступности данных.
### Пример таблицы репликации
| Сервер | Тип | Статус |
|--------------|-----------|----------------|
| DB-Replica-1 | Master | Активен |
| DB-Replica-2 | Slave | Ожидание |
| DB-Replica-3 | Slave | Ожидание |
## Роль Реверс-прокси в Балансировке Нагрузки
Реверс-прокси выполняет следующие функции:
- **Прием запросов:** Принимает запросы от клиентов и перенаправляет их на соответствующие серверы.
- **Скрытие архитектуры:** Позволяет скрыть внутреннюю архитектуру системы.
- **Кэширование:** Обеспечивает кэширование контента для повышения скорости загрузки.
- **Фильтрация трафика:** Позволяет фильтровать входящий трафик и защищать внутренние сервисы.
## Заключение
Балансировка нагрузки играет критически важную роль в обеспечении высокой доступности и производительности распределенных систем. Использование современных технологий и методов позволяет эффективно управлять ресурсами в условиях растущих требований пользователей. Применение различных алгоритмов, открытых технологий и методов балансировки на базах данных способствует созданию надежных и высокопроизводительных систем.