forked from Alexey/DAS_2024_1
Merge pull request 'yakovleva_yulia_lab_8 is ready' (#122) from yakovleva_yulia_lab_8 into main
Reviewed-on: Alexey/DAS_2024_1#122
This commit is contained in:
commit
354ee2679e
25
yakovleva_yulia_lab_8/README.md
Normal file
25
yakovleva_yulia_lab_8/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
## Лабораторная работа №8. Как Вы поняли, что называется распределенной системой и как она устроена?
|
||||||
|
|
||||||
|
# Задание
|
||||||
|
|
||||||
|
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :)) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:
|
||||||
|
|
||||||
|
Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
||||||
|
Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
|
||||||
|
Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
||||||
|
Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
||||||
|
Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
|
||||||
|
|
||||||
|
# Эссе
|
||||||
|
Для начала дадим определение. Распределенные системы - это группа компьютеров или серверов, которые работают вместе как единое целое. Каждый из них выполняет свою часть работы и обменивается данными с другими.
|
||||||
|
|
||||||
|
В случае с ВКонтакте приложение реализовано в "распределенном" стиле по следующим причинам, это - отзаоустойчивость (если откажет один сервис, это не повлияет на всю систему, остальные сервисы продолжат работать), распределение ресурсов (например, если запросов к новостной ленте стало больше, можно просто увеличить число серверов, отвечающих за эту функциональность) и ускорение разработки и развертывания (каждая команда разработчиков может может параллельно работать над своим сервисом, практически независимо друг от друга).
|
||||||
|
|
||||||
|
Системы оркестрации необходимы для распределения ресурсов и помогают автоматизировать развертывание, управление и масштабирование контейнеризованных приложений в распределённых системах. Для оркестрации используются такие приложения как Kubernetes или Docker Swarm.
|
||||||
|
|
||||||
|
Из преимуществ распределенных систем это отказоустойчивость (описано выше), масштабируемость (описано выше) и повышение производительности.
|
||||||
|
Из недостатков это сложность разработки и сопровождения, задержки из-за сети и сложность мониторинга и отладки.
|
||||||
|
|
||||||
|
Для улучшения производительности можно внедрить параллельные вычисления в распределенную систему. Но не всегда внедрение параллельных вычислений может быть оправдано. Они внедряется в случаях когда в приложении используются большие задачи, обрабатывающие большой объем данных, например, в соц. сетях ускоряют ранжирование и индексацию огромных объёмов данных. Использование параллельных вычислений нецелесообразно, если в приложении используются малые задачи, как мы выяснили в лаб. работе 6, обычный алгоритм выполняет малые задачи быстрее, чем параллельный.
|
||||||
|
|
||||||
|
В итоге распределённые системы используются для обработки больших объёмов данных и обеспечения высокой доступности: они разделяют задачи между множеством серверов, что позволяет системе быть масштабируемой, надёжной и устойчивой к сбоям, обеспечивая быстрый отклик и высокую производительность.
|
Loading…
Reference in New Issue
Block a user