From 5120eec932d83731cd6f969bdcf012dafb9b5307 Mon Sep 17 00:00:00 2001 From: DmitriyAntonov Date: Sat, 9 Dec 2023 21:40:16 +0400 Subject: [PATCH] antonov_dmitry_lab_8_ready --- antonov_dmitry_lab_8/README.md | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 antonov_dmitry_lab_8/README.md diff --git a/antonov_dmitry_lab_8/README.md b/antonov_dmitry_lab_8/README.md new file mode 100644 index 0000000..49ace51 --- /dev/null +++ b/antonov_dmitry_lab_8/README.md @@ -0,0 +1,42 @@ +# Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена + +**Задание** +Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных систем". + +1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, +где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач? +Так как такие сервисы обладают очень большим числом пользователей и соответствующей нагрузкой на сервисы, то целесообразно +разбить монолитное приложение на несколько микросервисов (монолит). Критерием того стоит ли разбивать систему на микросервисы +или нет служит неформальная метрика в 10 000 запросов в секунду, эти сервисы это число точно превосходят, поэтому нужно +поднапрячься и создавать распределенную систему. +2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение +распределенных систем? +Системы оркестрации приложений помогают нам упростить развертывание приложений. +Смысл особый в докер контейнерах есть, если таких приложений на хостовой машине много, каждому нужны свои зависимости и ресурсы. +Система оркестрации помогает нам управлять всеми контейнерами сразу. Например, этих микросервисов может быть очень много, +и нам нужно всеми ими управлять, выделять под них ресурсы, кому-то больше, кому-то меньше, настраивать производительность и ограничения. +3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями? +Очереди обработки сообщений позволяют нам управлять потоком задач так, чтобы система не ломалась под натиском большого +количества одновременных запросов. +Сообщения в этом контексте – это просто данные или команды, которые передаются между компонентами системы для выполнения +определенных действий. Например, заказ пользователя может быть представлен как сообщение в очереди обработки заказов. +Когда поступает новый заказ, система помещает его в очередь. Затем, по мере возможности, заказы извлекаются из очереди +и обрабатываются. Это позволяет равномерно распределять нагрузку на систему и обеспечивать более стабильную работу. +4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд? +К преимуществам распределенных приложений относится их способность обработать большее число запросов, +обеспечить производительность огромных систем, которые обеспечивают жизнь очень большому количеству пользователей. +Если отваливается какой-то из микросервисов, то другие подхватят их работу и сбалансируют нагрузку между собой. +Но у распределенных приложений есть большой минус в том, что они требуют большой сложности и внимательности при реализации. +Нужно сто раз подумать прежде чем распиливать монолит. +5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, +когда это действительно нужно, а когда нет. +Параллельные вычисления, их внедрение зависит от конкретного кейса, не всегда такое нам может помочь, если допустим запрос от +пользователя требует последовательного выполнения, ответа от бд, другого пользователя. +Но иногда это возможно. Например, если мы периодически формируем детальные отчеты на пользователей, просчитываем им какую-то +сложную статистику, то почему бы и не распараллелить это? +Но параллельные вычисления достаточно сложны и могут привести к дополнительным ошибкам и сбоям, например, если статистика одного +пользователя каким-то образом зависит от других пользователей. В данном случае нужно уже соизмерять выгоду от подсчета/вычисления +параллельного и последовательного. +Но параллельные вычисления могут нам значительно поднять скорость выполнения какой-либо операции, например, обсчет матриц или +детерминанта. В реальной жизни не всегда бывает просто найти ситуации в которых такие алгоритмы можно применить +