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