DAS_2024_1/artamonova_tatyana_lab_8/README.md

37 lines
4.2 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 ПИбд-42 Артамоновой Татьяны
### Эссе на тему "Устройство распределенных систем"
Сложные системы строятся по принципу распределенных приложений,
где каждый сервис отвечает за свою узкую специализацию. Это повышает масштабируемость,
надежность и удобство разработки. Разделение на отдельные сервисы позволяет независимо
масштабировать отдельные компоненты системы. Это упростит их обновление, замену и
повышает отказоустойчивость: выход из строя одного сервиса не обязательно
парализует всю систему.
Системы оркестрации, такие, как Kubernetes, были созданы для упрощения управления и
масштабирования распределенных систем. Они автоматизируют развертывание, масштабирование и
мониторинг приложений, работающих в контейнерах. С одной стороны, оркестраторы значительно
упрощают разработку, предоставляя готовые инструменты для управления инфраструктурой.
С другой стороны, они добавляют сложность требуется освоение новых инструментов и концепций,
а сама система оркестрации может стать узким местом.
Очереди сообщений (RabbitMQ, Kafka) используются для асинхронной передачи данных
между сервисами. Сообщения могут представлять собой любые данные: запросы на выполнение
действия, уведомления о событиях, результаты обработки. Асинхронная обработка позволяет
повысить производительность и отказоустойчивость, так как сервисы не зависят от мгновенного
ответа друг друга. Если один сервис временно недоступен, сообщения накапливаются в очереди и
обрабатываются позже.
Преимущества распределенных приложений очевидны: масштабируемость, отказоустойчивость,
гибкость разработки. Но есть и недостатки. Распределенная система гораздо сложнее в разработке,
тестировании и отладке, чем монолитная. Возникают проблемы с согласованностью данных,
распределёнными транзакциями и мониторингом.
Внедрение параллельных вычислений в сложную распределенную систему имеет смысл,
если есть задачи, которые можно разбить на независимые подзадачи, решаемые параллельно.
Например, обработка больших объемов данных или выполнение ресурсоемких
вычислений. Однако, если система ограничена I/O операциями,
параллельные вычисления могут не дать значительного выигрыша
в производительности из-за "узких мест" в других частях системы. В таких случаях,
оптимизация I/O операций может быть эффективнее, чем добавление параллелизма.