From 5e522fbcc076121818c1b952f61d155f3812a885 Mon Sep 17 00:00:00 2001 From: JulYakJul <137865717+JulYakJul@users.noreply.github.com> Date: Sun, 27 Oct 2024 15:10:30 +0400 Subject: [PATCH] yakovleva_yulia_lab_8 is ready --- yakovleva_yulia_lab_8/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 yakovleva_yulia_lab_8/README.md diff --git a/yakovleva_yulia_lab_8/README.md b/yakovleva_yulia_lab_8/README.md new file mode 100644 index 0000000..dfee14b --- /dev/null +++ b/yakovleva_yulia_lab_8/README.md @@ -0,0 +1,25 @@ +## Лабораторная работа №8. Как Вы поняли, что называется распределенной системой и как она устроена? + +# Задание + +Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :)) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка: + +Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач? +Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем? +Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями? +Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд? +Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет. + +# Эссе +Для начала дадим определение. Распределенные системы - это группа компьютеров или серверов, которые работают вместе как единое целое. Каждый из них выполняет свою часть работы и обменивается данными с другими. + +В случае с ВКонтакте приложение реализовано в "распределенном" стиле по следующим причинам, это - отзаоустойчивость (если откажет один сервис, это не повлияет на всю систему, остальные сервисы продолжат работать), распределение ресурсов (например, если запросов к новостной ленте стало больше, можно просто увеличить число серверов, отвечающих за эту функциональность) и ускорение разработки и развертывания (каждая команда разработчиков может может параллельно работать над своим сервисом, практически независимо друг от друга). + +Системы оркестрации необходимы для распределения ресурсов и помогают автоматизировать развертывание, управление и масштабирование контейнеризованных приложений в распределённых системах. Для оркестрации используются такие приложения как Kubernetes или Docker Swarm. + +Из преимуществ распределенных систем это отказоустойчивость (описано выше), масштабируемость (описано выше) и повышение производительности. +Из недостатков это сложность разработки и сопровождения, задержки из-за сети и сложность мониторинга и отладки. + +Для улучшения производительности можно внедрить параллельные вычисления в распределенную систему. Но не всегда внедрение параллельных вычислений может быть оправдано. Они внедряется в случаях когда в приложении используются большие задачи, обрабатывающие большой объем данных, например, в соц. сетях ускоряют ранжирование и индексацию огромных объёмов данных. Использование параллельных вычислений нецелесообразно, если в приложении используются малые задачи, как мы выяснили в лаб. работе 6, обычный алгоритм выполняет малые задачи быстрее, чем параллельный. + +В итоге распределённые системы используются для обработки больших объёмов данных и обеспечения высокой доступности: они разделяют задачи между множеством серверов, что позволяет системе быть масштабируемой, надёжной и устойчивой к сбоям, обеспечивая быстрый отклик и высокую производительность.