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

28 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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