DAS_2023_1/arutunyan_dmitry_lab_8/README.md

12 KiB
Raw Blame History

Лабораторная работа 8. Вариант 4.

Задание

Написать небольшое эссе на тему "Устройство распределенных систем" своими словами по вопросам из списка:

  • Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
  • Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
  • Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
  • Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
  • Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.

Эссе

Распределенная система это совокупность сервисов, приложений или устройств, которые работают вместе как единая система, обмениваясь информацией и ресурсами через сеть. В распределенной системе каждый сервис, приложение или устройство, называемые узлами, выполняют определенные задачи и взаимодействуют друг с другом для достижения общей цели.

Создание сложных систем, таких как социальная сеть ВКонтакте, в распределенном стиле производится поскольку распределенная архитектура позволяет системе масштабироваться горизонтально путем добавления новых узлов или сервисов. Это позволяет обрабатывать растущий объем данных и обеспечивать доступность системы для большого количества пользователей. Распределенные системы могут быть более надежными, поскольку отказ одного компонента или сервиса не приведет к полному сбою системы. В случае с социальной сетью, если одно приложение не работает, пользователи все равно могут использовать другие функции и сервисы. Распределенная архитектура позволяет выполнять различные задачи параллельно, что может улучшить общую производительность системы. Каждое отдельное приложение или сервис может быть оптимизировано для своей конкретной задачи, что позволяет достичь более эффективного использования ресурсов. Распределенная архитектура позволяет разделять функциональность на отдельные сервисы или приложения. Это делает систему более гибкой и модульной, позволяя легче вносить изменения и внедрять новые функции без значительного влияния на остальные компоненты системы. В распределенных системах данные могут быть распределены по различным узлам или сервисам, что позволяет хранить данные ближе к конечным пользователям или определенным географическим регионам. Это может улучшить скорость доступа к данным и снизить задержки в системе.

Системы оркестрации приложений были созданы для управления и координирования комплексных распределенных систем, состоящих из множества сервисов и компонентов. Они предоставляют средства автоматизации и контроля работы приложений, упрощая разработку, развертывание, масштабирование и сопровождение распределенных систем. Системы оркестрации позволяют автоматизировать процессы развертывания и управления приложениями. Они предоставляют средства для определения и описания требуемого состояния системы, а затем автоматически выполняют необходимые действия для достижения этого состояния. Системы оркестрации позволяют управлять и координировать работу множества сервисов, обеспечивая их взаимодействие и согласованную работу. Они могут управлять запуском, остановкой и масштабированием сервисов, а также обеспечивать балансировку нагрузки между ними. Системы оркестрации предоставляют инструменты для мониторинга и отслеживания состояния приложений. Они могут автоматически обнаруживать сбои или неполадки и принимать меры для их устранения, например, перезапускать сервисы или перенаправлять трафик на здоровые экземпляры. Однако, использование систем оркестрации приложений также может усложнить разработку и сопровождение распределенных систем. Внедрение и настройка таких систем требует изучения новых инструментов и понимания их принципов работы. Кроме того, настройка и поддержка систем оркестрации может потребовать дополнительных ресурсов и усилий со стороны разработчиков и администраторов системы.

Очереди обработки сообщений являются важным инструментом для асинхронной коммуникации и управления потоком данных в распределенных системах. Они используются для временного хранения и передачи сообщений между различными компонентами или сервисами системы. Что может подразумеваться под сообщениями в контексте очередей обработки зависит от конкретного применения и архитектуры системы. В общем случае, сообщения могут быть любыми данными или событиями, которые требуется передать или обработать в распределенной системе. Например, это может быть запрос на выполнение определенной операции, событие изменения состояния, уведомление о событии или любая другая информация, которая должна быть передана между компонентами системы.

На мой взгляд к преимуществам распределённых приложений можно отнести их лёгкость масштабирования, высокую надёжность и отказоустойчивость. На примере того же ВК можно наблюдать с какой скоростью растёт число сервисов в системе за последние года, а также насколько неполадки системы стали реже и локальнее. К недостаткам распределённых приложений я бы отнёс их дороговизну и ресурс-затратность разработки. Опять же, обращаясь к ВК, практически каждый пользователь заметил период перехода приложения от монолитной архитектуры к распределённой, в который у сервиса наблюдались сбои, повышенное время отклика и т.п. Распределённые системы необходимы только там, где это действительно нужно.

Внедрение параллельных вычислений в сложную распределенную систему может быть целесообразным в случаях, когда распределенная система обрабатывает большие объемы данных, в распределенной системе имеются задачи, которые могут выполняться независимо друг от друга или система высоко-нагружена (большое количество запросов к система поступает одновременно). В случаях, когда в распределённой системе задачи зависят друг от друга, или распределенная система имеет низкую нагрузку или небольшое количество запросов, либо внедрение параллельных вычислений является слишком сложным процессом разработки для системы, применение параллельных вычислений в распределенную систему нецелесообразно.

В целом, распределенный стиль разработки позволяет создавать сложные системы, которые обеспечивают высокую производительность, масштабируемость и отказоустойчивость, что особенно важно для систем с большим объемом данных и множеством пользователей, таких как социальные сети, а решение о внедрении параллельных вычислений в распределенную систему должно быть основано на конкретных требованиях, характеристиках системы и ожидаемой производительности.