antonov_dmitry_lab_8_ready
This commit is contained in:
parent
0227f5eaa0
commit
5120eec932
42
antonov_dmitry_lab_8/README.md
Normal file
42
antonov_dmitry_lab_8/README.md
Normal file
@ -0,0 +1,42 @@
|
||||
# Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена
|
||||
|
||||
**Задание**
|
||||
Написать небольшое эссе (буквально несколько абзацев) своими словами на тему "Устройство распределенных систем".
|
||||
|
||||
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле,
|
||||
где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
||||
Так как такие сервисы обладают очень большим числом пользователей и соответствующей нагрузкой на сервисы, то целесообразно
|
||||
разбить монолитное приложение на несколько микросервисов (монолит). Критерием того стоит ли разбивать систему на микросервисы
|
||||
или нет служит неформальная метрика в 10 000 запросов в секунду, эти сервисы это число точно превосходят, поэтому нужно
|
||||
поднапрячься и создавать распределенную систему.
|
||||
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение
|
||||
распределенных систем?
|
||||
Системы оркестрации приложений помогают нам упростить развертывание приложений.
|
||||
Смысл особый в докер контейнерах есть, если таких приложений на хостовой машине много, каждому нужны свои зависимости и ресурсы.
|
||||
Система оркестрации помогает нам управлять всеми контейнерами сразу. Например, этих микросервисов может быть очень много,
|
||||
и нам нужно всеми ими управлять, выделять под них ресурсы, кому-то больше, кому-то меньше, настраивать производительность и ограничения.
|
||||
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
||||
Очереди обработки сообщений позволяют нам управлять потоком задач так, чтобы система не ломалась под натиском большого
|
||||
количества одновременных запросов.
|
||||
Сообщения в этом контексте – это просто данные или команды, которые передаются между компонентами системы для выполнения
|
||||
определенных действий. Например, заказ пользователя может быть представлен как сообщение в очереди обработки заказов.
|
||||
Когда поступает новый заказ, система помещает его в очередь. Затем, по мере возможности, заказы извлекаются из очереди
|
||||
и обрабатываются. Это позволяет равномерно распределять нагрузку на систему и обеспечивать более стабильную работу.
|
||||
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
||||
К преимуществам распределенных приложений относится их способность обработать большее число запросов,
|
||||
обеспечить производительность огромных систем, которые обеспечивают жизнь очень большому количеству пользователей.
|
||||
Если отваливается какой-то из микросервисов, то другие подхватят их работу и сбалансируют нагрузку между собой.
|
||||
Но у распределенных приложений есть большой минус в том, что они требуют большой сложности и внимательности при реализации.
|
||||
Нужно сто раз подумать прежде чем распиливать монолит.
|
||||
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры,
|
||||
когда это действительно нужно, а когда нет.
|
||||
Параллельные вычисления, их внедрение зависит от конкретного кейса, не всегда такое нам может помочь, если допустим запрос от
|
||||
пользователя требует последовательного выполнения, ответа от бд, другого пользователя.
|
||||
Но иногда это возможно. Например, если мы периодически формируем детальные отчеты на пользователей, просчитываем им какую-то
|
||||
сложную статистику, то почему бы и не распараллелить это?
|
||||
Но параллельные вычисления достаточно сложны и могут привести к дополнительным ошибкам и сбоям, например, если статистика одного
|
||||
пользователя каким-то образом зависит от других пользователей. В данном случае нужно уже соизмерять выгоду от подсчета/вычисления
|
||||
параллельного и последовательного.
|
||||
Но параллельные вычисления могут нам значительно поднять скорость выполнения какой-либо операции, например, обсчет матриц или
|
||||
детерминанта. В реальной жизни не всегда бывает просто найти ситуации в которых такие алгоритмы можно применить
|
||||
|
Loading…
Reference in New Issue
Block a user