DAS_2024_1/bogdanov_dmitry_lab_8
2024-11-11 13:41:38 +04:00
..
README.md Lab8 2024-11-11 13:41:38 +04:00

Сложные системы и распределенная архитектура

Сложные системы, такие как социальная сеть ВКонтакте, используют распределенную архитектуру для достижения нескольких целей:

  • Улучшения масштабируемости. Распределенные системы могут легко добавлять новые узлы для увеличения нагрузки и роста.

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

  • Оптимизации использования ресурсов. Разделение работы между узлами позволяет эффективнее использовать разнообразные ресурсы.

  • Улучшения производительности. Параллельная обработка задач на разных узлах ускоряет выполнение.

Распределенная архитектура позволяет создавать гибкие и масштабируемые системы, способные обрабатывать большие объемы данных и высокие нагрузки.

Системы оркестрации приложений

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

  • Автоматизации развертывания и масштабирования приложений.

  • Обеспечения высокой доступности через автоматическое восстановление после сбоев.

  • Управления ресурсами между контейнерами.

Однако они также усложняют систему за счет необходимости настройки и управления оркестратором.

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

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

  • Разделять ответственности между сервисами.

  • Обрабатывать задач в фоновом режиме без блокировки основного потока работы.

  • Повысить отказоустойчивост за счет декларативных очередей.

Примеры сообщений могут включать пользовательские действия, уведомления или результаты вычислений.

Преимущества и недостатки распределенных приложений

К преимуществам распределенных приложений можно отнести:

  • Масштабируемость и отказоустойчивость
  • Эффективное использование ресурсов
  • Гибкость и адаптивность
  • Возможность географического распределения

В то время как недостатками будут являться:

  • Увеличение сложности разработки и сопровождения
  • Потенциальные проблемы с согласованностью данных
  • Увеличение накладных расходов на коммуникацию между узлами
  • Сложности с обеспечением безопасности

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

Внедрение параллельных вычислений в сложную распределенную систему звучит целесообразно, однако на практике далеко не всегда применимо. Например не стоит распараллеливать абсолютно каждое вычисление, ведь в большой части случаев будет проигрыш по времени за счёт надобности менеджмента потоков. Внедрять параллельные вычисления целесообразно следующих случаях:

  • При обработке больших объемов данных или вычислительных задач.

  • Для ускорения выполнения ресурсоемких операций.

  • В случае необходимости повышения производительности критических компонентов системы.

Необходимо тщательно оценивать необходимость и эффективность использования параллелизма для каждого конкретного случая.