diff --git a/artamonova_tatyana_lab_8/README.md b/artamonova_tatyana_lab_8/README.md new file mode 100644 index 0000000..e459eea --- /dev/null +++ b/artamonova_tatyana_lab_8/README.md @@ -0,0 +1,37 @@ +## Лабораторная работа №8 ПИбд-42 Артамоновой Татьяны + +### Эссе на тему "Устройство распределенных систем" + +Сложные системы строятся по принципу распределенных приложений, +где каждый сервис отвечает за свою узкую специализацию. Это повышает масштабируемость, +надежность и удобство разработки. Разделение на отдельные сервисы позволяет независимо +масштабировать отдельные компоненты системы. Это упростит их обновление, замену и +повышает отказоустойчивость: выход из строя одного сервиса не обязательно +парализует всю систему. + +Системы оркестрации, такие, как Kubernetes, были созданы для упрощения управления и +масштабирования распределенных систем. Они автоматизируют развертывание, масштабирование и +мониторинг приложений, работающих в контейнерах. С одной стороны, оркестраторы значительно +упрощают разработку, предоставляя готовые инструменты для управления инфраструктурой. +С другой стороны, они добавляют сложность – требуется освоение новых инструментов и концепций, +а сама система оркестрации может стать узким местом. + +Очереди сообщений (RabbitMQ, Kafka) используются для асинхронной передачи данных +между сервисами. Сообщения могут представлять собой любые данные: запросы на выполнение +действия, уведомления о событиях, результаты обработки. Асинхронная обработка позволяет +повысить производительность и отказоустойчивость, так как сервисы не зависят от мгновенного +ответа друг друга. Если один сервис временно недоступен, сообщения накапливаются в очереди и +обрабатываются позже. + +Преимущества распределенных приложений очевидны: масштабируемость, отказоустойчивость, +гибкость разработки. Но есть и недостатки. Распределенная система гораздо сложнее в разработке, +тестировании и отладке, чем монолитная. Возникают проблемы с согласованностью данных, +распределёнными транзакциями и мониторингом. + +Внедрение параллельных вычислений в сложную распределенную систему имеет смысл, +если есть задачи, которые можно разбить на независимые подзадачи, решаемые параллельно. +Например, обработка больших объемов данных или выполнение ресурсоемких +вычислений. Однако, если система ограничена I/O операциями, +параллельные вычисления могут не дать значительного выигрыша +в производительности из-за "узких мест" в других частях системы. В таких случаях, +оптимизация I/O операций может быть эффективнее, чем добавление параллелизма. \ No newline at end of file