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

26 lines
5.6 KiB
Markdown
Raw Permalink 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. Как Вы поняли, что называется распределенной системой и как она устроена?
# Задание
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :)) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:
Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
# Эссе
Для начала дадим определение. Распределенные системы - это группа компьютеров или серверов, которые работают вместе как единое целое. Каждый из них выполняет свою часть работы и обменивается данными с другими.
В случае с ВКонтакте приложение реализовано в "распределенном" стиле по следующим причинам, это - отзаоустойчивость (если откажет один сервис, это не повлияет на всю систему, остальные сервисы продолжат работать), распределение ресурсов (например, если запросов к новостной ленте стало больше, можно просто увеличить число серверов, отвечающих за эту функциональность) и ускорение разработки и развертывания (каждая команда разработчиков может может параллельно работать над своим сервисом, практически независимо друг от друга).
Системы оркестрации необходимы для распределения ресурсов и помогают автоматизировать развертывание, управление и масштабирование контейнеризованных приложений в распределённых системах. Для оркестрации используются такие приложения как Kubernetes или Docker Swarm.
Из преимуществ распределенных систем это отказоустойчивость (описано выше), масштабируемость (описано выше) и повышение производительности.
Из недостатков это сложность разработки и сопровождения, задержки из-за сети и сложность мониторинга и отладки.
Для улучшения производительности можно внедрить параллельные вычисления в распределенную систему. Но не всегда внедрение параллельных вычислений может быть оправдано. Они внедряется в случаях когда в приложении используются большие задачи, обрабатывающие большой объем данных, например, в соц. сетях ускоряют ранжирование и индексацию огромных объёмов данных. Использование параллельных вычислений нецелесообразно, если в приложении используются малые задачи, как мы выяснили в лаб. работе 6, обычный алгоритм выполняет малые задачи быстрее, чем параллельный.
В итоге распределённые системы используются для обработки больших объёмов данных и обеспечения высокой доступности: они разделяют задачи между множеством серверов, что позволяет системе быть масштабируемой, надёжной и устойчивой к сбоям, обеспечивая быстрый отклик и высокую производительность.