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