Merge pull request 'zhimolostnova lab 8 complete' (#97) from zhimolostnova_anna_lab_8 into main
Reviewed-on: #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