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

65 lines
5.5 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.

# Сложные системы и распределенная архитектура
Сложные системы, такие как социальная сеть ВКонтакте, используют распределенную архитектуру для достижения нескольких целей:
- Улучшения масштабируемости. Распределенные системы могут легко добавлять новые узлы для увеличения нагрузки и роста.
- Повышения отказоустойчивости. Дублирование критических компонентов предотвращает сбои на одном месте, а при сбое отдельного компонента вся остальная система может продолжать функционировать.
- Оптимизации использования ресурсов. Разделение работы между узлами позволяет эффективнее использовать разнообразные ресурсы.
- Улучшения производительности. Параллельная обработка задач на разных узлах ускоряет выполнение.
Распределенная архитектура позволяет создавать гибкие и масштабируемые системы, способные обрабатывать большие объемы данных и высокие нагрузки.
## Системы оркестрации приложений
Системы оркестрации приложений (например, Kubernetes) были созданы для управления распределенными приложениями. Они упрощают разработку и сопровождение за счет:
- Автоматизации развертывания и масштабирования приложений.
- Обеспечения высокой доступности через автоматическое восстановление после сбоев.
- Управления ресурсами между контейнерами.
Однако они также усложняют систему за счет необходимости настройки и управления оркестратором.
## Очереди обработки сообщений
Очереди обработки сообщений используются для асинхронной передачи данных между компонентами системы. Они позволяют:
- Разделять ответственности между сервисами.
- Обрабатывать задач в фоновом режиме без блокировки основного потока работы.
- Повысить отказоустойчивост за счет декларативных очередей.
Примеры сообщений могут включать пользовательские действия, уведомления или результаты вычислений.
## Преимущества и недостатки распределенных приложений
К преимуществам распределенных приложений можно отнести:
- Масштабируемость и отказоустойчивость
- Эффективное использование ресурсов
- Гибкость и адаптивность
- Возможность географического распределения
В то время как недостатками будут являться:
- Увеличение сложности разработки и сопровождения
- Потенциальные проблемы с согласованностью данных
- Увеличение накладных расходов на коммуникацию между узлами
- Сложности с обеспечением безопасности
## Параллельные вычисления в распределенных системах
Внедрение параллельных вычислений в сложную распределенную систему звучит целесообразно, однако на практике далеко не всегда применимо. Например не стоит распараллеливать абсолютно каждое вычисление, ведь в большой части случаев будет проигрыш по времени за счёт надобности менеджмента потоков. Внедрять параллельные вычисления целесообразно следующих случаях:
- При обработке больших объемов данных или вычислительных задач.
- Для ускорения выполнения ресурсоемких операций.
- В случае необходимости повышения производительности критических компонентов системы.
Необходимо тщательно оценивать необходимость и эффективность использования параллелизма для каждого конкретного случая.