DAS_2024_1/kadyrov_aydar_lab_8/README.md
2024-11-12 22:59:57 +04:00

5.6 KiB
Raw Blame History

Лабораторная работа 8. Как Вы поняли, что называется распределенной системой и как она устроена?

Задание

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

  1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?

  2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?

  3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?

  4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?

  5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.

Эссе

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

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

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

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

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