DAS_2024_1/lazarev_andrey_lab_8
2024-11-10 21:01:36 +04:00
..
README.md lazarev_andrey_lab_8 2024-11-10 21:01:36 +04:00

Лабораторная работа №8

Задание

Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:

  1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
  2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
  3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
  4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
  5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.

Результат

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

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

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

Например, тотже ВКонтакте может разделять сервисы для хранения фотографий, обработку сообщений и прочее.

Для чего были созданы системы оркестрации сообщений.

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

  • Автоматически перезапускать или перемещать сервисы при сбоях;
  • Упрощать масштабирование сервисов при увеличении нагрузки;
  • Упрощать обновление и откат изменений;
  • Мониторить состояние всех контейнеров и сервисов.

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

Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями.

Сообщения — это данные или события, которые передаются между сервисами для выполнения задач.

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

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

Например, сообщение может представлять собой запрос на отправку уведомления, сохранение данных или запуск какой-либо задачи.

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

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

Каждый сервис можно развивать независимо, подбирая для него оптимальные технологии. Это ускоряет разработку и внедрение изменений.

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

Целесообразно ли внедрять параллельные вычисления в сложную распределенную систему.

Параллельные вычисления могут быть полезны, когда задачи могут выполняться независимо и параллельно, например:

  • Анализ данных и машинное обучение;
  • Потоковая обработка данных, в которых система работает с частыми событиями (обработка транзакций и прочее).

Однако параллельные вычисления могут быть излишними для задач, которые:

  • Содержат много зависимостей и требуют синхронизации;
  • Тяжелы для разделения на независимые части, то есть все идет последовательно и следующая часть зависит от результатов предыдущей.