Merge pull request 'bogdanov_dmitry_lab_8' (#167) from bogdanov_dmitry_lab_8 into main
Reviewed-on: #167
This commit is contained in:
commit
5dbc6a294b
65
bogdanov_dmitry_lab_8/README.md
Normal file
65
bogdanov_dmitry_lab_8/README.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Сложные системы и распределенная архитектура
|
||||||
|
|
||||||
|
Сложные системы, такие как социальная сеть ВКонтакте, используют распределенную архитектуру для достижения нескольких целей:
|
||||||
|
|
||||||
|
- Улучшения масштабируемости. Распределенные системы могут легко добавлять новые узлы для увеличения нагрузки и роста.
|
||||||
|
|
||||||
|
- Повышения отказоустойчивости. Дублирование критических компонентов предотвращает сбои на одном месте, а при сбое отдельного компонента вся остальная система может продолжать функционировать.
|
||||||
|
|
||||||
|
- Оптимизации использования ресурсов. Разделение работы между узлами позволяет эффективнее использовать разнообразные ресурсы.
|
||||||
|
|
||||||
|
- Улучшения производительности. Параллельная обработка задач на разных узлах ускоряет выполнение.
|
||||||
|
|
||||||
|
Распределенная архитектура позволяет создавать гибкие и масштабируемые системы, способные обрабатывать большие объемы данных и высокие нагрузки.
|
||||||
|
|
||||||
|
## Системы оркестрации приложений
|
||||||
|
|
||||||
|
Системы оркестрации приложений (например, Kubernetes) были созданы для управления распределенными приложениями. Они упрощают разработку и сопровождение за счет:
|
||||||
|
|
||||||
|
- Автоматизации развертывания и масштабирования приложений.
|
||||||
|
|
||||||
|
- Обеспечения высокой доступности через автоматическое восстановление после сбоев.
|
||||||
|
|
||||||
|
- Управления ресурсами между контейнерами.
|
||||||
|
|
||||||
|
Однако они также усложняют систему за счет необходимости настройки и управления оркестратором.
|
||||||
|
|
||||||
|
## Очереди обработки сообщений
|
||||||
|
|
||||||
|
Очереди обработки сообщений используются для асинхронной передачи данных между компонентами системы. Они позволяют:
|
||||||
|
|
||||||
|
- Разделять ответственности между сервисами.
|
||||||
|
|
||||||
|
- Обрабатывать задач в фоновом режиме без блокировки основного потока работы.
|
||||||
|
|
||||||
|
- Повысить отказоустойчивост за счет декларативных очередей.
|
||||||
|
|
||||||
|
Примеры сообщений могут включать пользовательские действия, уведомления или результаты вычислений.
|
||||||
|
|
||||||
|
## Преимущества и недостатки распределенных приложений
|
||||||
|
|
||||||
|
К преимуществам распределенных приложений можно отнести:
|
||||||
|
|
||||||
|
- Масштабируемость и отказоустойчивость
|
||||||
|
- Эффективное использование ресурсов
|
||||||
|
- Гибкость и адаптивность
|
||||||
|
- Возможность географического распределения
|
||||||
|
|
||||||
|
В то время как недостатками будут являться:
|
||||||
|
|
||||||
|
- Увеличение сложности разработки и сопровождения
|
||||||
|
- Потенциальные проблемы с согласованностью данных
|
||||||
|
- Увеличение накладных расходов на коммуникацию между узлами
|
||||||
|
- Сложности с обеспечением безопасности
|
||||||
|
|
||||||
|
## Параллельные вычисления в распределенных системах
|
||||||
|
|
||||||
|
Внедрение параллельных вычислений в сложную распределенную систему звучит целесообразно, однако на практике далеко не всегда применимо. Например не стоит распараллеливать абсолютно каждое вычисление, ведь в большой части случаев будет проигрыш по времени за счёт надобности менеджмента потоков. Внедрять параллельные вычисления целесообразно следующих случаях:
|
||||||
|
|
||||||
|
- При обработке больших объемов данных или вычислительных задач.
|
||||||
|
|
||||||
|
- Для ускорения выполнения ресурсоемких операций.
|
||||||
|
|
||||||
|
- В случае необходимости повышения производительности критических компонентов системы.
|
||||||
|
|
||||||
|
Необходимо тщательно оценивать необходимость и эффективность использования параллелизма для каждого конкретного случая.
|
Loading…
Reference in New Issue
Block a user