DAS_2023_1/antonov_dmitry_lab_8/README.md

43 lines
6.9 KiB
Markdown
Raw Normal View History

2023-12-09 21:40:16 +04:00
# Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена
**Задание**
Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных систем".
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле,
где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
Так как такие сервисы обладают очень большим числом пользователей и соответствующей нагрузкой на сервисы, то целесообразно
разбить монолитное приложение на несколько микросервисов (монолит). Критерием того стоит ли разбивать систему на микросервисы
или нет служит неформальная метрика в 10 000 запросов в секунду, эти сервисы это число точно превосходят, поэтому нужно
поднапрячься и создавать распределенную систему.
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение
распределенных систем?
Системы оркестрации приложений помогают нам упростить развертывание приложений.
Смысл особый в докер контейнерах есть, если таких приложений на хостовой машине много, каждому нужны свои зависимости и ресурсы.
Система оркестрации помогает нам управлять всеми контейнерами сразу. Например, этих микросервисов может быть очень много,
и нам нужно всеми ими управлять, выделять под них ресурсы, кому-то больше, кому-то меньше, настраивать производительность и ограничения.
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
Очереди обработки сообщений позволяют нам управлять потоком задач так, чтобы система не ломалась под натиском большого
количества одновременных запросов.
Сообщения в этом контексте это просто данные или команды, которые передаются между компонентами системы для выполнения
определенных действий. Например, заказ пользователя может быть представлен как сообщение в очереди обработки заказов.
Когда поступает новый заказ, система помещает его в очередь. Затем, по мере возможности, заказы извлекаются из очереди
и обрабатываются. Это позволяет равномерно распределять нагрузку на систему и обеспечивать более стабильную работу.
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
К преимуществам распределенных приложений относится их способность обработать большее число запросов,
обеспечить производительность огромных систем, которые обеспечивают жизнь очень большому количеству пользователей.
Если отваливается какой-то из микросервисов, то другие подхватят их работу и сбалансируют нагрузку между собой.
Но у распределенных приложений есть большой минус в том, что они требуют большой сложности и внимательности при реализации.
Нужно сто раз подумать прежде чем распиливать монолит.
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры,
когда это действительно нужно, а когда нет.
Параллельные вычисления, их внедрение зависит от конкретного кейса, не всегда такое нам может помочь, если допустим запрос от
пользователя требует последовательного выполнения, ответа от бд, другого пользователя.
Но иногда это возможно. Например, если мы периодически формируем детальные отчеты на пользователей, просчитываем им какую-то
сложную статистику, то почему бы и не распараллелить это?
Но параллельные вычисления достаточно сложны и могут привести к дополнительным ошибкам и сбоям, например, если статистика одного
пользователя каким-то образом зависит от других пользователей. В данном случае нужно уже соизмерять выгоду от подсчета/вычисления
параллельного и последовательного.
Но параллельные вычисления могут нам значительно поднять скорость выполнения какой-либо операции, например, обсчет матриц или
детерминанта. В реальной жизни не всегда бывает просто найти ситуации в которых такие алгоритмы можно применить