nikolaeva_yana_lab_7 #341
34
nikolaeva_yana_lab_7/README.md
Normal file
34
nikolaeva_yana_lab_7/README.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
## Эссе: Балансировка нагрузки в распределённых системах
|
||||||
|
|||||||
|
|
||||||
|
### Алгоритмы и методы для балансировки нагрузки
|
||||||
|
Балансировка нагрузки — это процесс распределения входящего трафика или задач между несколькими серверами
|
||||||
|
для оптимизации использования ресурсов, повышения производительности и обеспечения отказоустойчивости.
|
||||||
|
|
||||||
|
Наиболее популярные алгоритмы включают:
|
||||||
|
|
||||||
|
1. **Round Robin** (Циклический алгоритм): запросы распределяются равномерно по кругу между серверами.
|
||||||
|
2. **Least Connections** (Минимум подключений): запросы направляются на сервер с наименьшим числом активных соединений.
|
||||||
|
3. **Weighted Round Robin** (Взвешенный цикл): учитывает производительность серверов, направляя больше трафика на более мощные машины.
|
||||||
|
4. **Hash-Based Methods**: трафик распределяется на основе хэша данных, например, IP-адреса клиента.
|
||||||
|
|
||||||
|
### Открытые технологии для балансировки нагрузки
|
||||||
|
|
||||||
|
Среди открытых решений популярны:
|
||||||
|
|
||||||
|
- **NGINX**: мощный реверс-прокси, поддерживающий балансировку на основе различных алгоритмов.
|
||||||
|
- **HAProxy**: высокопроизводительный прокси-сервер, предназначенный для распределения трафика и работы с высокими нагрузками.
|
||||||
|
- **Traefik**: современный инструмент для балансировки в микросервисах, интегрирующийся с оркестраторами, такими как Kubernetes.
|
||||||
|
|
||||||
|
### Балансировка нагрузки на базах данных
|
||||||
|
|
||||||
|
Для распределения нагрузки на базах данных часто применяются репликация и шардирование:
|
||||||
|
|
||||||
|
- **Репликация**: данные копируются между несколькими серверами. Запросы на чтение направляются на реплики, а записи — на основной сервер.
|
||||||
|
- **Шардирование**: данные делятся на части (шарды), каждая из которых обрабатывается отдельным сервером, что снижает нагрузку на каждый из них.
|
||||||
|
|
||||||
|
### Реверс-прокси как элемент балансировки нагрузки
|
||||||
|
|
||||||
|
Реверс-прокси играет ключевую роль в балансировке нагрузки, так как он находится между клиентами и серверами.
|
||||||
|
Он не только распределяет запросы, но и может кэшировать ответы, сжимать данные и обеспечивать безопасность.
|
||||||
|
NGINX и HAProxy являются классическими примерами реверс-прокси.
|
||||||
|
|
62
nikolaeva_yana_lab_8/README.md
Normal file
62
nikolaeva_yana_lab_8/README.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Лабораторная работа №8: Устройство распределенных систем
|
||||||
|
|
||||||
|
## Что такое распределенная система?
|
||||||
|
|
||||||
|
Распределенная система — это комплекс взаимодействующих компонентов, которые расположены на разных узлах сети
|
||||||
|
и работают вместе для достижения общей цели.
|
||||||
|
Узлы могут быть как физически раздельными серверами, так и виртуальными средами, выполняющими определенные задачи.
|
||||||
|
|
||||||
|
### Зачем использовать "распределенный" стиль?
|
||||||
|
|
||||||
|
Сложные системы, такие как социальные сети, требуют высокой производительности,
|
||||||
|
масштабируемости и отказоустойчивости. Разделяя функционал на отдельные сервисы
|
||||||
|
(например, один отвечает за обработку сообщений, другой за рекомендации), мы можем:
|
||||||
|
|
||||||
|
1. Уменьшить нагрузку на отдельные компоненты.
|
||||||
|
2. Легче масштабировать узкие места.
|
||||||
|
3. Быстрее внедрять изменения, не затрагивая всю систему.
|
||||||
|
|
||||||
|
Кроме того, такая структура облегчает разработку,
|
||||||
|
так как каждая команда может сосредоточиться на своем микросервисе.
|
||||||
|
|
||||||
|
### Для чего нужны системы оркестрации?
|
||||||
|
|
||||||
|
Системы оркестрации, такие как Kubernetes, управляют распределенными приложениями, упрощая развертывание, масштабирование и мониторинг. Они:
|
||||||
|
- Автоматизируют процессы, такие как распределение ресурсов и перезапуск упавших узлов.
|
||||||
|
- Обеспечивают гибкость управления сложными системами.
|
||||||
|
-
|
||||||
|
Однако, такие системы добавляют сложность на этапе настройки и требуют новых навыков от разработчиков.
|
||||||
|
|
||||||
|
### Роль очередей сообщений
|
||||||
|
|
||||||
|
Очереди сообщений (например, RabbitMQ, Kafka) используются для асинхронной передачи данных между сервисами.
|
||||||
|
|
||||||
|
Сообщения могут быть запросами, данными для обработки или событиями. Это позволяет:
|
||||||
|
|
||||||
|
- Разгрузить сервисы, обеспечив буферизацию данных.
|
||||||
|
- Повысить отказоустойчивость, так как потерянные сообщения можно повторно отправить.
|
||||||
|
|
||||||
|
### Преимущества и недостатки
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
|
||||||
|
- Масштабируемость: можно добавлять новые сервисы без значительных изменений.
|
||||||
|
- Отказоустойчивость: сбой одного узла не приводит к полной остановке системы.
|
||||||
|
- Гибкость: легче экспериментировать с новыми технологиями в отдельных сервисах.
|
||||||
|
|
||||||
|
**Недостатки:**
|
||||||
|
|
||||||
|
- Сложность разработки и поддержки: требуется настройка взаимодействия между сервисами.
|
||||||
|
- Задержки: из-за сетевых вызовов возрастает время ответа.
|
||||||
|
|
||||||
|
### Параллельные вычисления в распределенных системах
|
||||||
|
|
||||||
|
Параллельные вычисления позволяют обрабатывать задачи быстрее, разделяя их между несколькими узлами.
|
||||||
|
Это полезно в задачах с большими объемами данных (анализ логов, построение рекомендаций).
|
||||||
|
Однако, если задача не требует значительных вычислительных ресурсов (например, обработка простых запросов), их внедрение может быть избыточным.
|
||||||
|
|
||||||
|
Примеры:
|
||||||
|
|
||||||
|
- Нужны: распределенные базы данных, машинное обучение.
|
||||||
|
- Не нужны: системы авторизации, где важнее скорость отклика, чем объем данных.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user
PR оформлен неверно, почему тут 2 л/р?