DAS_2024_1/yakovleva_yulia_lab_8
2024-10-27 15:10:30 +04:00
..
README.md yakovleva_yulia_lab_8 is ready 2024-10-27 15:10:30 +04:00

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

Задание

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

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

Эссе

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

В случае с ВКонтакте приложение реализовано в "распределенном" стиле по следующим причинам, это - отзаоустойчивость (если откажет один сервис, это не повлияет на всю систему, остальные сервисы продолжат работать), распределение ресурсов (например, если запросов к новостной ленте стало больше, можно просто увеличить число серверов, отвечающих за эту функциональность) и ускорение разработки и развертывания (каждая команда разработчиков может может параллельно работать над своим сервисом, практически независимо друг от друга).

Системы оркестрации необходимы для распределения ресурсов и помогают автоматизировать развертывание, управление и масштабирование контейнеризованных приложений в распределённых системах. Для оркестрации используются такие приложения как Kubernetes или Docker Swarm.

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

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

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