DAS_2024_1/artamonova_tatyana_lab_8
2024-11-17 22:30:37 +04:00
..
README.md artamonova_tatyana_lab_8 is ready 2024-11-17 22:30:37 +04:00

Лабораторная работа №8 ПИбд-42 Артамоновой Татьяны

Эссе на тему "Устройство распределенных систем"

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

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

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

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

Внедрение параллельных вычислений в сложную распределенную систему имеет смысл, если есть задачи, которые можно разбить на независимые подзадачи, решаемые параллельно. Например, обработка больших объемов данных или выполнение ресурсоемких вычислений. Однако, если система ограничена I/O операциями, параллельные вычисления могут не дать значительного выигрыша в производительности из-за "узких мест" в других частях системы. В таких случаях, оптимизация I/O операций может быть эффективнее, чем добавление параллелизма.