forked from Alexey/DAS_2024_1
63 lines
8.6 KiB
Markdown
63 lines
8.6 KiB
Markdown
# Отчет по лабораторной работе №8
|
||
|
||
## Задание:
|
||
|
||
Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных
|
||
систем". А помогут Вам в этом вопросы из списка:
|
||
|
||
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где
|
||
каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
||
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют
|
||
разработку и сопровождение распределенных систем?
|
||
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
||
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
||
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры,
|
||
когда это действительно нужно, а когда нет.
|
||
|
||
## Эссе на тему: "Устройство распределенных систем"
|
||
|
||
Как было рассмотрено ранее на лекциях, распределённые системы – это архитектура, в которой компоненты
|
||
приложения работают на разных серверах и взаимодействуют друг с другом через сеть. В такой системе
|
||
есть разные сервисы отвечают за конкретные задачи. К примеру, один отвечает за обработку сообщений,
|
||
другой – за управление пользователями, третий – за работу с медиафайлами.
|
||
|
||
Однако почему используется именно этот подход? Основная причина заключается в масштабируемости и надёжности
|
||
подобных систем. Когда каждая функциональная часть системы – это отдельный сервис, можно
|
||
легко масштабировать только ту часть, которая испытывает большую нагрузку. К примеру, если в системе
|
||
возрастает количество запросов на загрузку фото, можно увеличить количество серверов, обрабатывающих
|
||
изображения, не затрагивая при этом другие сервисы. Еще одно важное преимущество распределённой системы:
|
||
если один сервис выйдет из строя, остальные продолжат работать.
|
||
|
||
Управление подобными системами требует от разработчика знание механизма оркестрации. Системы оркестрации,
|
||
такие, как Kubernetes, были созданы для управления и автоматизации развертывания, масштабирования и
|
||
поддержки приложений, состоящих из множества микросервисов. Данный механизм упрощает разработку и
|
||
сопровождение распределённых приложений, позволяя автоматизировать задачи, такие как восстановление при
|
||
сбоях, обновление сервисов и распределение нагрузки. Несомненно, использование оркестраторов усложнит
|
||
начальную настройку и обучение, так как потребует глубокого понимания инфраструктуры и сетевой безопасности.
|
||
|
||
Еще одна технология, которой необходимо владеть прежде чем приступить к работе с распределенными системами,
|
||
это обработка сообщений. Она имеет очереди обработки сообщений – инструмент для асинхронной коммуникации
|
||
между различными компонентами системы. Под "сообщениями" могут подразумеваться данные или задачи, которые
|
||
один сервис отправляет другому для обработки. Очереди помогают разгрузить систему, позволяя сервисам не
|
||
ожидать немедленного ответа. Например, при загрузке фото сервис, принимающий файл, может поместить задачу
|
||
обработки изображения в очередь, а другой сервис обработает её позже. Это повышает надёжность и упрощает
|
||
управление пиковыми нагрузками.
|
||
|
||
Рассмотрев основные аспекты распределенных систем, можно выявить как негативные, так и позитивные черты.
|
||
К преимуществам распределённых систем можно отнести гибкость, масштабируемость, отказоустойчивость и
|
||
возможность использования разных технологий для каждого сервиса. Однако такие системы сложны в разработке
|
||
и сопровождении. Появляются проблемы с координацией между сервисами, отладкой, сетевой задержкой и
|
||
безопасностью данных. Балансировка этих недостатков является ключевым вызовом для распределённых систем.
|
||
|
||
Что же касается параллельных вычислений, то их целесообразно использовать в системах с большими объёмами
|
||
данных или задачами, которые могут быть обработаны одновременно. В этом помогли убедиться 5 и 6
|
||
лабораторные работы, где собиралась временная метрика и по которой были сделаны аналогичные выводы.
|
||
В системах машинного обучения или анализе больших данных параллельная обработка данных позволяет
|
||
существенно ускорить выполнение задач. Однако в некоторых сценариях это может быть излишним, особенно если
|
||
система работает с небольшими объёмами данных или требует строгой последовательности действий, где
|
||
параллелизм может только усложнить реализацию.
|
||
|
||
Таким образом, можно сделать следующий вывод: распределённые системы предоставляют большие возможности для
|
||
масштабирования и надёжности, но требуют тщательного планирования и грамотного управления. Оркестрация,
|
||
очереди сообщений и параллельные вычисления являются важными инструментами, которые помогают решать задачи
|
||
таких систем, однако их использование должно быть оправдано потребностями проекта. |