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