arutunyan_dmitry_lab_8 is ready

This commit is contained in:
Arutunyan-Dmitry 2024-01-17 22:40:03 +04:00
parent 7de577eadc
commit 923ff7578d

View File

@ -0,0 +1,27 @@
## Лабораторная работа 8. Вариант 4.
### Задание
Написать небольшое эссе на тему "Устройство распределенных систем" своими словами по вопросам из списка:
- Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
- Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
- Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
- Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
- Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
### Эссе
`Распределенная система` это совокупность сервисов, приложений или устройств, которые работают вместе как единая система, обмениваясь информацией и ресурсами через сеть. В распределенной системе каждый сервис, приложение или устройство, называемые узлами, выполняют определенные задачи и взаимодействуют друг с другом для достижения общей цели.
Создание сложных систем, таких как социальная сеть ВКонтакте, в распределенном стиле производится поскольку распределенная архитектура позволяет системе `масштабироваться` горизонтально путем добавления новых узлов или сервисов. Это позволяет обрабатывать растущий объем данных и обеспечивать доступность системы для большого количества пользователей. Распределенные системы могут быть более `надежными`, поскольку отказ одного компонента или сервиса не приведет к полному сбою системы. В случае с социальной сетью, если одно приложение не работает, пользователи все равно могут использовать другие функции и сервисы. Распределенная архитектура позволяет выполнять различные задачи `параллельно`, что может улучшить общую производительность системы. Каждое отдельное приложение или сервис может быть `оптимизировано` для своей конкретной задачи, что позволяет достичь более эффективного использования ресурсов. Распределенная архитектура позволяет `разделять функциональность на отдельные сервисы` или приложения. Это делает систему более гибкой и модульной, позволяя легче вносить изменения и внедрять новые функции без значительного влияния на остальные компоненты системы. В распределенных системах `данные могут быть распределены` по различным узлам или сервисам, что позволяет хранить данные ближе к конечным пользователям или определенным географическим регионам. Это может улучшить скорость доступа к данным и снизить задержки в системе.
Системы `оркестрации` приложений были созданы для управления и координирования комплексных распределенных систем, состоящих из множества сервисов и компонентов. Они предоставляют средства `автоматизации и контроля` работы приложений, упрощая разработку, развертывание, масштабирование и сопровождение распределенных систем. Системы оркестрации позволяют `автоматизировать процессы развертывания и управления` приложениями. Они предоставляют средства для определения и описания требуемого состояния системы, а затем автоматически выполняют необходимые действия для достижения этого состояния. Системы оркестрации `позволяют управлять и координировать работу` множества сервисов, обеспечивая их взаимодействие и согласованную работу. Они могут `управлять запуском, остановкой и масштабированием` сервисов, а также обеспечивать балансировку нагрузки между ними. Системы оркестрации `предоставляют инструменты для мониторинга и отслеживания состояния` приложений. Они могут автоматически обнаруживать сбои или неполадки и принимать меры для их устранения, например, перезапускать сервисы или перенаправлять трафик на здоровые экземпляры. Однако, использование систем оркестрации приложений также может `усложнить` разработку и сопровождение распределенных систем. Внедрение и настройка таких систем требует `изучения новых инструментов` и понимания их принципов работы. Кроме того, настройка и поддержка систем оркестрации может потребовать `дополнительных ресурсов` и усилий со стороны разработчиков и администраторов системы.
`Очереди` обработки сообщений являются важным инструментом для асинхронной коммуникации и управления потоком данных в распределенных системах. Они используются для `временного хранения и передачи сообщений между различными компонентами или сервисами системы`. Что может подразумеваться под сообщениями в контексте очередей обработки зависит от конкретного применения и архитектуры системы. В общем случае, сообщения могут быть любыми данными или событиями, которые требуется передать или обработать в распределенной системе. Например, это может быть запрос на выполнение определенной операции, событие изменения состояния, уведомление о событии или любая другая информация, которая должна быть передана между компонентами системы.
На мой взгляд к `преимуществам` распределённых приложений можно отнести их `лёгкость масштабирования, высокую надёжность и отказоустойчивость`. На примере того же ВК можно наблюдать с какой скоростью растёт число сервисов в системе за последние года, а также насколько неполадки системы стали реже и локальнее. К `недостаткам` распределённых приложений я бы отнёс их `дороговизну и ресурс-затратность разработки`. Опять же, обращаясь к ВК, практически каждый пользователь заметил период перехода приложения от монолитной архитектуры к распределённой, в который у сервиса наблюдались сбои, повышенное время отклика и т.п. Распределённые системы необходимы только там, где это действительно нужно.
Внедрение `параллельных вычислений` в сложную распределенную систему может быть `целесообразным` в случаях, когда распределенная система `обрабатывает большие объемы данных`, в распределенной системе имеются `задачи, которые могут выполняться независимо друг от друга` или `система высоко-нагружена` (большое количество запросов к система поступает одновременно). В случаях, когда в распределённой системе з`адачи зависят друг от друга`, или распределенная `система имеет низкую нагрузку` или небольшое количество запросов, либо `внедрение параллельных вычислений является слишком сложным процессом` разработки для системы, применение параллельных вычислений в распределенную систему `нецелесообразно`.
В целом, распределенный стиль разработки позволяет создавать сложные системы, которые обеспечивают высокую производительность, масштабируемость и отказоустойчивость, что особенно важно для систем с большим объемом данных и множеством пользователей, таких как социальные сети, а решение о внедрении параллельных вычислений в распределенную систему должно быть основано на конкретных требованиях, характеристиках системы и ожидаемой производительности.