DAS_2024_1/chernyshov_nikita_lab_8/README.md
Никита Чернышов dd58bf5357 chernyshov_nikita_lab_8 is ready
2024-12-15 17:16:57 +04:00

29 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа 8. Как Вы поняли, что называется распределенной системой и как она устроена?
## Задание
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) на тему "Устройство распределенных систем".
  1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
  2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
  3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
  4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
  5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
***
# Эссе:
## **Что называется распределенной системой и как она устроена**
**Распределённые системы** создаются, чтобы справляться с большим количеством задач и пользователей, не теряя в производительности. Например, если взять социальную сеть вроде ВКонтакте, то там есть сообщения, новости, фото, видео и многое другое. Чтобы всё это работало быстро, каждую задачу обрабатывает отдельный сервис. Один сервис отвечает за отправку сообщений, другой — за хранение фото, третий — за рекомендации. Это позволяет системе быть масштабируемой: если нагрузка на какой-то конкретный сервис растёт, его можно отдельно усилить, не трогая остальные.
Системы оркестрации, такие как **Kubernetes**, помогают управлять распределёнными приложениями. Они автоматизируют запуск, мониторинг и масштабирование сервисов, что сильно упрощает жизнь разработчиков и администраторов. Вместо того чтобы вручную следить за каждым сервисом, оркестратор сам запускает нужное количество экземпляров, распределяет их по серверам и перезапускает, если что-то пошло не так. Но есть и обратная сторона: освоение таких систем требует времени и опыта, что может усложнить начальную разработку.
Очереди обработки сообщений — это инструмент, который помогает сервисам взаимодействовать друг с другом. Представьте, что один сервис должен отправить задачу другому, но тот пока занят. В этом случае задача помещается в очередь и ждёт своей обработки. Сообщениями может быть всё, что угодно: от запроса на отправку письма до информации о новом заказе в интернет-магазине. Очереди делают системы более устойчивыми, потому что даже при перегрузке задачи не теряются.
У распределённых приложений есть как плюсы, так и минусы. Среди плюсов — высокая надёжность (если один сервис выйдет из строя, остальные продолжат работать), лёгкость масштабирования и возможность использовать разные технологии для каждого сервиса. Минусы — это сложность разработки и сопровождения, а также необходимость мониторинга и обеспечения безопасности всех частей системы.
**Параллельные вычисления** в сложных распределённых системах часто необходимы. Например, при обработке большого объёма данных, как в системах рекомендаций или аналитике, где параллельные алгоритмы ускоряют процесс. Однако для простых задач, вроде проверки логина и пароля, параллельность может быть избыточной и усложнить систему без реальной выгоды. Всё зависит от того, какую именно задачу нужно решить.