Merge pull request 'kadyrov_aydar_lab_8' (#179) from kadyrov_aydar_lab_8 into main

Reviewed-on: #179
This commit is contained in:
Alexey 2024-12-03 22:16:33 +04:00
commit b63718633c

View File

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