diff --git a/bazunov_andrew_lab_8/README.md b/bazunov_andrew_lab_8/README.md new file mode 100644 index 0000000..a2a6410 --- /dev/null +++ b/bazunov_andrew_lab_8/README.md @@ -0,0 +1,66 @@ +# Как Вы поняли, что называется распределенной системой и как она устроена? + +# Распределенные системы: принципы, инструменты и подходы + +Современные сложные системы, такие как социальные сети и крупные веб-приложения, часто строятся как распределенные. Это позволяет обеспечить их масштабируемость, отказоустойчивость и эффективность. В этом README рассматриваются основные аспекты распределённых систем. + +--- + +## Зачем системы пишутся в распределенном стиле? +В распределённых системах каждое приложение (или сервис) выполняет ограниченный спектр задач. Это позволяет: +- **Разделить ответственность**: каждый сервис фокусируется на своей задаче, что упрощает разработку и сопровождение. +- **Обеспечить масштабируемость**: можно увеличивать мощность отдельных сервисов без необходимости модификации всей системы. +- **Повысить отказоустойчивость**: сбой одного сервиса не приводит к остановке всей системы. +- Пример: в социальной сети ВКонтакте отдельные сервисы отвечают за отправку сообщений, хранение медиафайлов, обработку запросов API и рекламу. + +--- + +## Для чего нужны системы оркестрации? +Системы оркестрации, такие как **Kubernetes** или **Docker Swarm**, были созданы для управления контейнеризированными приложениями. Они: +- **Упрощают разработку**: обеспечивают автоматическое масштабирование, балансировку нагрузки и перезапуск сервисов. +- **Упрощают сопровождение**: помогают управлять зависимостями, обеспечивать резервное копирование и отслеживать состояние системы. +- **Усложняют начальную настройку**: требуют знания инфраструктуры и инструментов, но окупаются на стадии эксплуатации. +Пример: в крупной системе оркестрация позволяет автоматически перераспределять ресурсы между сервисами в зависимости от их нагрузки. + +--- + +## Зачем нужны очереди обработки сообщений? +Очереди сообщений (например, **RabbitMQ**, **Kafka**) используются для обмена данными между сервисами. Под сообщениями могут подразумеваться: +- Запросы на выполнение задач. +- Уведомления об изменении состояния. +- Данные для обработки (например, лог-файлы или транзакции). + +Очереди: +- **Развязывают взаимодействие сервисов**: отправитель и получатель могут работать независимо. +- **Обеспечивают устойчивость**: сохраняют сообщения до их обработки. + +--- + +## Преимущества и недостатки распределённых приложений + +### Преимущества: +- Масштабируемость. +- Устойчивость к сбоям. +- Локализация изменений (меньше шансов нарушить работу всей системы). + +### Недостатки: +- Увеличенная сложность разработки. +- Зависимость от сетевой инфраструктуры (задержки, потеря данных). +- Требуются дополнительные инструменты для мониторинга и управления. + +--- + +## Параллельные вычисления в распределенных системах + +### Когда это необходимо: +- **Обработка больших данных**: анализ логов, машинное обучение, трансляции видео. +- **Высоконагруженные системы**: расчёт рекомендаций, обновление новостных лент в реальном времени. + +### Когда это избыточно: +- Малые системы с низкой нагрузкой. +- Простые веб-приложения, где вычисления не требуют значительных ресурсов. + +--- + +## Заключение +Распределенные системы и связанные с ними инструменты играют важную роль в построении современных приложений. Однако их применение оправдано только там, где есть высокая нагрузка или необходимость в масштабировании. Успех разработки таких систем зависит от правильного выбора архитектуры, инструментов и методов разработки. \ No newline at end of file