.. | ||
README.md |
Лабораторная работа 8. Как Вы поняли, что называется распределенной системой и как она устроена?
Задание
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) на тему "Устройство распределенных систем".
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
Эссе
Распределенные системы — это такие системы, которые состоят из множества независимых компонентов, работающих в разных местах, но взаимодействующих друг с другом. Такой подход позволяет решать задачи, которые невозможно выполнить с помощью одной машины или приложения, например, обработка огромных объемов данных или обслуживание большого числа пользователей одновременно. Системы, такие как социальные сети или интернет-магазины, разрабатываются в распределенном стиле, потому что каждый отдельный сервис может выполнять лишь ограниченный набор задач. Это повышает гибкость и масштабируемость системы, позволяет быстрее реагировать на изменения и снижает риски отказов, так как один сбой не затрагивает всю систему.
Для эффективного управления такими сложными приложениями были созданы системы оркестрации, например, Kubernetes. Эти системы автоматизируют развертывание, масштабирование и управление сервисами, что значительно упрощает их поддержку и улучшает надежность. Тем не менее, использование оркестраторов требует от разработчиков знаний и дополнительных усилий на настройку, особенно в начале работы.
Одним из ключевых аспектов распределенных систем являются очереди обработки сообщений. Они позволяют организовать асинхронное взаимодействие между компонентами, что особенно важно в условиях высоких нагрузок. Сообщения в таких очередях могут содержать запросы на обработку данных или команду на выполнение задачи, и благодаря очередям можно избежать перегрузки отдельных частей системы.
Преимущества распределенных систем очевидны: возможность масштабирования, отказоустойчивость и гибкость. Однако у них есть и недостатки, такие как сложность разработки и поддержания, проблемы с синхронизацией и возможные задержки в обработке данных. Все эти проблемы необходимо учитывать при проектировании системы.
Параллельные вычисления, внедряемые в распределенные системы, могут значительно ускорить выполнение сложных задач, например, при обработке больших объемов данных или в научных вычислениях. Однако не всегда стоит использовать параллельность, так как она усложняет архитектуру и не всегда оправдана, если задача не требует интенсивной обработки данных.