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