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

Лабораторная работа №8: Устройство распределенных систем

Распределенные системы — это архитектура, где вычислительные задачи выполняются несколькими взаимодействующими между собой узлами (сервисами, приложениями). Каждый узел отвечает за свою область задач, что упрощает масштабирование, обеспечивает отказоустойчивость и улучшает производительность.

Зачем использовать распределенный стиль разработки?

Сложные системы, такие как социальные сети, требуют обработки огромного объема данных и высокой доступности. Разделение функционала на узкие сервисы упрощает разработку, тестирование и сопровождение. Например, один сервис может обрабатывать загрузку изображений, а другой — публикацию постов. Это позволяет масштабировать каждый компонент независимо, снижая нагрузку на всю систему.

Роль систем оркестрации

Системы оркестрации (например, Kubernetes) автоматизируют развертывание, управление и масштабирование приложений. Они упрощают сопровождение за счет централизованного управления, но добавляют сложность в настройке и требуют опыта для эффективного использования. Оркестрация помогает сохранять консистентность в сложной инфраструктуре и улучшает мониторинг.

Очереди обработки сообщений

Очереди сообщений (например, RabbitMQ или Kafka) обеспечивают асинхронное взаимодействие между сервисами. Сообщения — это данные, такие как запросы, события или команды. Очереди упрощают обработку высоких нагрузок и позволяют сервисам работать независимо друг от друга.

Преимущества и недостатки

Преимущества распределенных систем:

  • Масштабируемость: легко увеличивать ресурсы для отдельных компонентов.
  • Отказоустойчивость: сбой одного узла не влияет на всю систему.
  • Производительность: задачи распределяются между сервисами.

Недостатки:

  • Сложность разработки и отладки.
  • Увеличение задержек из-за сетевого взаимодействия.
  • Требования к инструментам управления и мониторинга.

Параллельные вычисления в распределенных системах

Параллельные вычисления целесообразны, если задачи можно разбить на независимые блоки. Например, обработка больших объемов данных в аналитике или видеокодировании. Однако их использование не нужно для последовательных задач, таких как запись транзакций в базу данных, где важна консистентность.