DAS_2024_1/kurushina_ksenia_lab_8/README.md
2024-12-09 20:16:17 +04:00

47 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №8: Устройство распределенных систем
Распределенные системы — это архитектура, где вычислительные задачи выполняются несколькими взаимодействующими
между собой узлами (сервисами, приложениями). Каждый узел отвечает за свою область задач,
что упрощает масштабирование, обеспечивает отказоустойчивость и улучшает производительность.
### Зачем использовать распределенный стиль разработки?
Сложные системы, такие как социальные сети, требуют обработки огромного объема данных и высокой доступности.
Разделение функционала на узкие сервисы упрощает разработку, тестирование и сопровождение.
Например, один сервис может обрабатывать загрузку изображений, а другой — публикацию постов.
Это позволяет масштабировать каждый компонент независимо, снижая нагрузку на всю систему.
### Роль систем оркестрации
Системы оркестрации (например, Kubernetes) автоматизируют развертывание, управление и масштабирование приложений.
Они упрощают сопровождение за счет централизованного управления, но добавляют сложность
в настройке и требуют опыта для эффективного использования. Оркестрация помогает сохранять консистентность
в сложной инфраструктуре и улучшает мониторинг.
### Очереди обработки сообщений
Очереди сообщений (например, RabbitMQ или Kafka) обеспечивают асинхронное взаимодействие между сервисами.
Сообщения — это данные, такие как запросы, события или команды.
Очереди упрощают обработку высоких нагрузок и
позволяют сервисам работать независимо друг от друга.
### Преимущества и недостатки
Преимущества распределенных систем:
- Масштабируемость: легко увеличивать ресурсы для отдельных компонентов.
- Отказоустойчивость: сбой одного узла не влияет на всю систему.
- Производительность: задачи распределяются между сервисами.
Недостатки:
- Сложность разработки и отладки.
- Увеличение задержек из-за сетевого взаимодействия.
- Требования к инструментам управления и мониторинга.
### Параллельные вычисления в распределенных системах
Параллельные вычисления целесообразны, если задачи можно разбить на независимые блоки.
Например, обработка больших объемов данных в аналитике или видеокодировании.
Однако их использование не нужно для последовательных задач,
таких как запись транзакций в базу данных, где важна консистентность.