DAS_2024_1/bazunov_andrew_lab_8/README.md
Bazunov Andrew Igorevich c3b1e9157a ready
2024-11-29 00:24:45 +04:00

5.9 KiB
Raw Blame History

Как Вы поняли, что называется распределенной системой и как она устроена?

Распределенные системы: принципы, инструменты и подходы

Современные сложные системы, такие как социальные сети и крупные веб-приложения, часто строятся как распределенные. Это позволяет обеспечить их масштабируемость, отказоустойчивость и эффективность. В этом README рассматриваются основные аспекты распределённых систем.


Зачем системы пишутся в распределенном стиле?

В распределённых системах каждое приложение (или сервис) выполняет ограниченный спектр задач. Это позволяет:

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

Для чего нужны системы оркестрации?

Системы оркестрации, такие как Kubernetes или Docker Swarm, были созданы для управления контейнеризированными приложениями. Они:

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

Зачем нужны очереди обработки сообщений?

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

  • Запросы на выполнение задач.
  • Уведомления об изменении состояния.
  • Данные для обработки (например, лог-файлы или транзакции).

Очереди:

  • Развязывают взаимодействие сервисов: отправитель и получатель могут работать независимо.
  • Обеспечивают устойчивость: сохраняют сообщения до их обработки.

Преимущества и недостатки распределённых приложений

Преимущества:

  • Масштабируемость.
  • Устойчивость к сбоям.
  • Локализация изменений (меньше шансов нарушить работу всей системы).

Недостатки:

  • Увеличенная сложность разработки.
  • Зависимость от сетевой инфраструктуры (задержки, потеря данных).
  • Требуются дополнительные инструменты для мониторинга и управления.

Параллельные вычисления в распределенных системах

Когда это необходимо:

  • Обработка больших данных: анализ логов, машинное обучение, трансляции видео.
  • Высоконагруженные системы: расчёт рекомендаций, обновление новостных лент в реальном времени.

Когда это избыточно:

  • Малые системы с низкой нагрузкой.
  • Простые веб-приложения, где вычисления не требуют значительных ресурсов.

Заключение

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