43 lines
6.9 KiB
Markdown
43 lines
6.9 KiB
Markdown
|
# Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена
|
|||
|
|
|||
|
**Задание**
|
|||
|
Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных систем".
|
|||
|
|
|||
|
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле,
|
|||
|
где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
|||
|
Так как такие сервисы обладают очень большим числом пользователей и соответствующей нагрузкой на сервисы, то целесообразно
|
|||
|
разбить монолитное приложение на несколько микросервисов (монолит). Критерием того стоит ли разбивать систему на микросервисы
|
|||
|
или нет служит неформальная метрика в 10 000 запросов в секунду, эти сервисы это число точно превосходят, поэтому нужно
|
|||
|
поднапрячься и создавать распределенную систему.
|
|||
|
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение
|
|||
|
распределенных систем?
|
|||
|
Системы оркестрации приложений помогают нам упростить развертывание приложений.
|
|||
|
Смысл особый в докер контейнерах есть, если таких приложений на хостовой машине много, каждому нужны свои зависимости и ресурсы.
|
|||
|
Система оркестрации помогает нам управлять всеми контейнерами сразу. Например, этих микросервисов может быть очень много,
|
|||
|
и нам нужно всеми ими управлять, выделять под них ресурсы, кому-то больше, кому-то меньше, настраивать производительность и ограничения.
|
|||
|
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
|||
|
Очереди обработки сообщений позволяют нам управлять потоком задач так, чтобы система не ломалась под натиском большого
|
|||
|
количества одновременных запросов.
|
|||
|
Сообщения в этом контексте – это просто данные или команды, которые передаются между компонентами системы для выполнения
|
|||
|
определенных действий. Например, заказ пользователя может быть представлен как сообщение в очереди обработки заказов.
|
|||
|
Когда поступает новый заказ, система помещает его в очередь. Затем, по мере возможности, заказы извлекаются из очереди
|
|||
|
и обрабатываются. Это позволяет равномерно распределять нагрузку на систему и обеспечивать более стабильную работу.
|
|||
|
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
|||
|
К преимуществам распределенных приложений относится их способность обработать большее число запросов,
|
|||
|
обеспечить производительность огромных систем, которые обеспечивают жизнь очень большому количеству пользователей.
|
|||
|
Если отваливается какой-то из микросервисов, то другие подхватят их работу и сбалансируют нагрузку между собой.
|
|||
|
Но у распределенных приложений есть большой минус в том, что они требуют большой сложности и внимательности при реализации.
|
|||
|
Нужно сто раз подумать прежде чем распиливать монолит.
|
|||
|
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры,
|
|||
|
когда это действительно нужно, а когда нет.
|
|||
|
Параллельные вычисления, их внедрение зависит от конкретного кейса, не всегда такое нам может помочь, если допустим запрос от
|
|||
|
пользователя требует последовательного выполнения, ответа от бд, другого пользователя.
|
|||
|
Но иногда это возможно. Например, если мы периодически формируем детальные отчеты на пользователей, просчитываем им какую-то
|
|||
|
сложную статистику, то почему бы и не распараллелить это?
|
|||
|
Но параллельные вычисления достаточно сложны и могут привести к дополнительным ошибкам и сбоям, например, если статистика одного
|
|||
|
пользователя каким-то образом зависит от других пользователей. В данном случае нужно уже соизмерять выгоду от подсчета/вычисления
|
|||
|
параллельного и последовательного.
|
|||
|
Но параллельные вычисления могут нам значительно поднять скорость выполнения какой-либо операции, например, обсчет матриц или
|
|||
|
детерминанта. В реальной жизни не всегда бывает просто найти ситуации в которых такие алгоритмы можно применить
|
|||
|
|