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