nikolaeva_yana_lab_7 #341

Open
NikolaevaYana wants to merge 3 commits from nikolaeva_yana_lab_7 into nikolaeva_yana_lab_6
Showing only changes of commit 63205ba88c - Show all commits

View File

@ -0,0 +1,62 @@
# Лабораторная работа №8: Устройство распределенных систем
## Что такое распределенная система?
Распределенная система — это комплекс взаимодействующих компонентов, которые расположены на разных узлах сети
и работают вместе для достижения общей цели.
Узлы могут быть как физически раздельными серверами, так и виртуальными средами, выполняющими определенные задачи.
### Зачем использовать "распределенный" стиль?
Сложные системы, такие как социальные сети, требуют высокой производительности,
масштабируемости и отказоустойчивости. Разделяя функционал на отдельные сервисы
(например, один отвечает за обработку сообщений, другой за рекомендации), мы можем:
1. Уменьшить нагрузку на отдельные компоненты.
2. Легче масштабировать узкие места.
3. Быстрее внедрять изменения, не затрагивая всю систему.
Кроме того, такая структура облегчает разработку,
так как каждая команда может сосредоточиться на своем микросервисе.
### Для чего нужны системы оркестрации?
Системы оркестрации, такие как Kubernetes, управляют распределенными приложениями, упрощая развертывание, масштабирование и мониторинг. Они:
- Автоматизируют процессы, такие как распределение ресурсов и перезапуск упавших узлов.
- Обеспечивают гибкость управления сложными системами.
-
Однако, такие системы добавляют сложность на этапе настройки и требуют новых навыков от разработчиков.
### Роль очередей сообщений
Очереди сообщений (например, RabbitMQ, Kafka) используются для асинхронной передачи данных между сервисами.
Сообщения могут быть запросами, данными для обработки или событиями. Это позволяет:
- Разгрузить сервисы, обеспечив буферизацию данных.
- Повысить отказоустойчивость, так как потерянные сообщения можно повторно отправить.
### Преимущества и недостатки
**Преимущества:**
- Масштабируемость: можно добавлять новые сервисы без значительных изменений.
- Отказоустойчивость: сбой одного узла не приводит к полной остановке системы.
- Гибкость: легче экспериментировать с новыми технологиями в отдельных сервисах.
**Недостатки:**
- Сложность разработки и поддержки: требуется настройка взаимодействия между сервисами.
- Задержки: из-за сетевых вызовов возрастает время ответа.
### Параллельные вычисления в распределенных системах
Параллельные вычисления позволяют обрабатывать задачи быстрее, разделяя их между несколькими узлами.
Это полезно в задачах с большими объемами данных (анализ логов, построение рекомендаций).
Однако, если задача не требует значительных вычислительных ресурсов (например, обработка простых запросов), их внедрение может быть избыточным.
Примеры:
- Нужны: распределенные базы данных, машинное обучение.
- Не нужны: системы авторизации, где важнее скорость отклика, чем объем данных.