From a3a7c8bf71a1bd26a0b99a3f47a9201e6f15e79a Mon Sep 17 00:00:00 2001 From: margarita-krasnova Date: Mon, 30 Dec 2024 22:56:12 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9bcacc8 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ + 1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение +(или сервис) функционально выполняет только ограниченный спектр задач? + +Их пишут в таком стиле, чтобы если один из серверов "упадет", то другие смогут поддерживать работу приложения. Таким образом, если бы +ВКонтакте писался на монолите, то все приложение со всеми функциями не было бы доступно. В случае же с распределенным, какой-то отдельный +функционал или мини-приложение может не работать, но это не так глобально и не так ощущается пользователями, как если бы приложение +не работало целиком. Такие системы отказоустойчивы, а также более надежны и производительны. + + 2. Для чего были созданы системы оркестрации приложений? +Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем? + +Оркестрация - автоматическое размещение, координация и управление сложными компьютерными системами и службами. Условно, определяют систему +в контейнеры и управляет ими, отслеживает, как они работают, управляет жизненным циклом контейнеров. + +Они были созданы для автоматизации процессов, управления инфраструктурой и масштабируемости. + +Упрощают развертывание и обновление приложений, помогают отслеживать зависимость между сервисами и обеспечивают их корректное взаимодействие. + +Усложняют из-за сложности настройки и постепенного увеличения числа компонентов. + + 3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями? + +Очереди обработки сообщений — это важный компонент архитектуры распределенных систем, который обеспечивает асинхронную и надежную передачу +данных между различными компонентами или сервисами. + +Очереди поддерживают асинхронность, то есть возможность работы компонентов независимо друг от друга, что значит, что один компонент может +отправить сообщение в очередь и продолжить свою работу, не дожидаясь его обработки. + +Надежность - использование очередей уменьшают вероятность потери сообщений. + +Также очереди помогают распределять нагрузку между приложениями. + +Под сообщениями могут подразумеваться: +События: Информация о том, что произошло в системе. Например, "пользователь зарегистрировался", "заказ был размещен", "файл был загружен". + +Команды: Указания другим компонентам системы выполнить какие-то действия, например, "обработать платеж", "выполнить задачу" или "отправить уведомление". + +Данные: Конкретные данные, которые необходимо передать, например, JSON-объект с информацией о заказе или текст сообщения. + +Запросы: Запросы на получение информации или выполнения определенных операций, которые могут быть обработаны позже. + +Ошибки или уведомления: Информация о проблемах или событиях, требующих внимания, например, "не удалось записать данные в базу" или "недостаточно прав". + + 4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд? + +Преимущества заключаются в масштабируемости, отказоустойчивости и производительности. Также важную роль играет гибкость - можно разрабатывать +и тестировать компоненты независимо друг от друга. Из этого также следует разделение ответственности - отдельные компоненты отвечают за +конкретные задачи. + +К недостаткам я бы отнесла сложность разработки, меньшую степень безопасности, а также проблемы с сетью. Из-за того, что компоненты разделены +по разным узлам, это может привести к задержкам в работе. Касательно безопасности, распределенные системы больше подвержены атакам из-за +большого количества узлов. + + + 5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? + Приведите примеры, когда это действительно нужно, а когда нет. + + Это нужно, когда существует необходимость в обработке больших данных, в научных вычислениях, сложных вычислительных задачах и + обработке событий в реальном времени. + + Это нецелесообразно внедрять в систему, когда существуют сложные алгоритмы с последовательной логикой или частыми взаимодействиями, + а также когда речь идет о небольших и простых в вычислении задач.