forked from Alexey/DAS_2024_1
Merge pull request 'zhimolostnova lab 8 complete' (#97) from zhimolostnova_anna_lab_8 into main
Reviewed-on: Alexey/DAS_2024_1#97
This commit is contained in:
commit
daf3742ce6
63
zhimolostnova_anna_lab_8/README.md
Normal file
63
zhimolostnova_anna_lab_8/README.md
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Отчет по лабораторной работе №8
|
||||||
|
|
||||||
|
## Задание:
|
||||||
|
|
||||||
|
Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных
|
||||||
|
систем". А помогут Вам в этом вопросы из списка:
|
||||||
|
|
||||||
|
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где
|
||||||
|
каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
||||||
|
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют
|
||||||
|
разработку и сопровождение распределенных систем?
|
||||||
|
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
||||||
|
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
||||||
|
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры,
|
||||||
|
когда это действительно нужно, а когда нет.
|
||||||
|
|
||||||
|
## Эссе на тему: "Устройство распределенных систем"
|
||||||
|
|
||||||
|
Как было рассмотрено ранее на лекциях, распределённые системы – это архитектура, в которой компоненты
|
||||||
|
приложения работают на разных серверах и взаимодействуют друг с другом через сеть. В такой системе
|
||||||
|
есть разные сервисы отвечают за конкретные задачи. К примеру, один отвечает за обработку сообщений,
|
||||||
|
другой – за управление пользователями, третий – за работу с медиафайлами.
|
||||||
|
|
||||||
|
Однако почему используется именно этот подход? Основная причина заключается в масштабируемости и надёжности
|
||||||
|
подобных систем. Когда каждая функциональная часть системы – это отдельный сервис, можно
|
||||||
|
легко масштабировать только ту часть, которая испытывает большую нагрузку. К примеру, если в системе
|
||||||
|
возрастает количество запросов на загрузку фото, можно увеличить количество серверов, обрабатывающих
|
||||||
|
изображения, не затрагивая при этом другие сервисы. Еще одно важное преимущество распределённой системы:
|
||||||
|
если один сервис выйдет из строя, остальные продолжат работать.
|
||||||
|
|
||||||
|
Управление подобными системами требует от разработчика знание механизма оркестрации. Системы оркестрации,
|
||||||
|
такие, как Kubernetes, были созданы для управления и автоматизации развертывания, масштабирования и
|
||||||
|
поддержки приложений, состоящих из множества микросервисов. Данный механизм упрощает разработку и
|
||||||
|
сопровождение распределённых приложений, позволяя автоматизировать задачи, такие как восстановление при
|
||||||
|
сбоях, обновление сервисов и распределение нагрузки. Несомненно, использование оркестраторов усложнит
|
||||||
|
начальную настройку и обучение, так как потребует глубокого понимания инфраструктуры и сетевой безопасности.
|
||||||
|
|
||||||
|
Еще одна технология, которой необходимо владеть прежде чем приступить к работе с распределенными системами,
|
||||||
|
это обработка сообщений. Она имеет очереди обработки сообщений – инструмент для асинхронной коммуникации
|
||||||
|
между различными компонентами системы. Под "сообщениями" могут подразумеваться данные или задачи, которые
|
||||||
|
один сервис отправляет другому для обработки. Очереди помогают разгрузить систему, позволяя сервисам не
|
||||||
|
ожидать немедленного ответа. Например, при загрузке фото сервис, принимающий файл, может поместить задачу
|
||||||
|
обработки изображения в очередь, а другой сервис обработает её позже. Это повышает надёжность и упрощает
|
||||||
|
управление пиковыми нагрузками.
|
||||||
|
|
||||||
|
Рассмотрев основные аспекты распределенных систем, можно выявить как негативные, так и позитивные черты.
|
||||||
|
К преимуществам распределённых систем можно отнести гибкость, масштабируемость, отказоустойчивость и
|
||||||
|
возможность использования разных технологий для каждого сервиса. Однако такие системы сложны в разработке
|
||||||
|
и сопровождении. Появляются проблемы с координацией между сервисами, отладкой, сетевой задержкой и
|
||||||
|
безопасностью данных. Балансировка этих недостатков является ключевым вызовом для распределённых систем.
|
||||||
|
|
||||||
|
Что же касается параллельных вычислений, то их целесообразно использовать в системах с большими объёмами
|
||||||
|
данных или задачами, которые могут быть обработаны одновременно. В этом помогли убедиться 5 и 6
|
||||||
|
лабораторные работы, где собиралась временная метрика и по которой были сделаны аналогичные выводы.
|
||||||
|
В системах машинного обучения или анализе больших данных параллельная обработка данных позволяет
|
||||||
|
существенно ускорить выполнение задач. Однако в некоторых сценариях это может быть излишним, особенно если
|
||||||
|
система работает с небольшими объёмами данных или требует строгой последовательности действий, где
|
||||||
|
параллелизм может только усложнить реализацию.
|
||||||
|
|
||||||
|
Таким образом, можно сделать следующий вывод: распределённые системы предоставляют большие возможности для
|
||||||
|
масштабирования и надёжности, но требуют тщательного планирования и грамотного управления. Оркестрация,
|
||||||
|
очереди сообщений и параллельные вычисления являются важными инструментами, которые помогают решать задачи
|
||||||
|
таких систем, однако их использование должно быть оправдано потребностями проекта.
|
Loading…
Reference in New Issue
Block a user