From 07d4182f7d50421f16a7c92bdc8b81d012e09644 Mon Sep 17 00:00:00 2001 From: Pineapple Date: Mon, 23 Dec 2024 22:32:46 +0400 Subject: [PATCH] klyushenkova_ksenia_lab_8 is ready --- klyushenkova_ksenia_lab_8/README.md | 71 +++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 klyushenkova_ksenia_lab_8/README.md diff --git a/klyushenkova_ksenia_lab_8/README.md b/klyushenkova_ksenia_lab_8/README.md new file mode 100644 index 0000000..3b46690 --- /dev/null +++ b/klyushenkova_ksenia_lab_8/README.md @@ -0,0 +1,71 @@ +# Клюшенкова Ксения ПИбд-42 +# Лабораторная работа №8 Про устройство распределённых систем + +## Задание: +1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач? +2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем? +3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями? +4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд? +5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет. + +## Эссе + +***В чём смысл использования распределённых систем?*** + +Распределённая система — это система, в которой компоненты (или группы компонентов) находятся на разных узлах, а функции +и ресурсы распределены между ними. В таких системах нет единого центра управления, поэтому отказ одного узла не приводит +к остановке всей системы.. Можем выделить основные причины создания распределённых систем: +1. Масштабируемость. Каждый сервис можно масштабировать отдельно в зависимости от нагрузки. Например, если растёт количество пользователей, можно увеличить только сервис чатов. +2. Изоляция ошибок. Если один сервис выходит из строя, остальные продолжают работать. Это позволяет системе оставаться доступной даже при сбоях в работе некоторых компонентов. +3. Гибкость разработки. Команды могут работать над разными сервисами одновременно, используя различные технологии и языки программирования. Это ускоряет процесс разработки и улучшает качество кода. +4. Поддержка различных нагрузок. Некоторые функции могут требовать больше ресурсов (например, обработка медиафайлов), и их можно выделить в отдельные сервисы. + +***Зачем нужны системы оркестрации приложений?*** + +Системы оркестрации приложений — это инструменты, которые помогают автоматизировать развертывание, управление и +масштабирование облачных приложений. Они управляют множеством контейнеров, виртуальных машин и сервисов, чтобы обеспечить +их эффективную работу. Можем выделить основные функции систем оркестрации: +1. Развёртывание приложений. +2. Масштабирование. +3. Управление состоянием. +4. Балансировка нагрузки. +5. Мониторинг и логирование. +Системы оркестрации упрощают процессы развертывания и управления, позволяя командам сосредоточиться на разработке; +6. предоставляют высокую доступность приложений и автоматическое восстановление после сбоев; обеспечивают простое добавление +7. новых функции и масштабирование приложение без значительных затрат времени и ресурсов. + +***Зачем нужны очереди обработки сообщений?*** + +Система обработки сообщений представляет собой инструмент, который позволяет различным элементам распределённой системы +обмениваться информацией в асинхронном режиме. Это означает, что отправитель и получатель сообщений могут работать независимо +друг от друга. Сообщения собираются в очередь и обрабатываются по мере доступности. +Выделим основные свойства очереди обработки сообщений: +1. Асинхронность: Позволяют различным сервисам взаимодействовать без необходимости быть синхронизированными. Это упрощает архитектуру и уменьшает время ожидания. +2. Надёжность: Если один из компонентов выходит из строя, сообщения остаются в очереди и не теряются. После восстановления системы, они могут быть обработаны. +3. Управление нагрузкой: Позволяют распределять нагрузку между несколькими обработчиками сообщений, что увеличивает устойчивость и масштабируемость системы. +4. Обработка событий: Идеальны для событийного взаимодействия, где одно событие может инициировать ответ от нескольких других компонентов. + +***Преимущества распределённых приложений*** +1. Легко добавлять новые узлы или сервера для увеличения производительности. Это позволяет справляться с увеличением нагрузки без значительных затрат. +2. Если один компонент выходит из строя, остальные продолжают работать. Это обеспечивает высокую доступность и надёжность приложения. +3. Разные части системы могут использовать разные технологии и языки программирования. Команды могут выбирать инструменты, которые лучше всего подходят для их задач. +4. Можно оптимально распределять нагрузку между серверами, что снижает риск перегрузки и улучшает отклик системы. + +***Недостатки распределённых приложений*** +1. Проектирование и разработка распределённых приложений может быть значительно сложнее из-за необходимости учитывать различные аспекты, такие как сетевые задержки, согласованность данных и обработка ошибок. +2. Локализовать ошибки в распределённых системах может быть сложно, так как проблемы могут возникать на любом из узлов, а не только в приложении. +3. Распределённые приложения подвержены сетевым проблемам (потеря пакетов, задержки), что может негативно сказаться на производительности. +4. Управление согласованностью данных между различными узлами может быть трудной задачей. +5. Поддержка и управление распределённой системой могут потребовать больше ресурсов, что может отразиться на бюджете. + +***Параллельные вычисления*** — это способ обработки информации и выполнения задач, при котором несколько вычислительных операций осуществляются одновременно, а не последовательно. + +***Когда целесообразно использовать параллельные вычисления*** +1. Обработка больших объёмов данных: Параллельные вычисления могут значительно ускорить обработку больших объёмов данных, например в приложениях для анализа Big Data или машинного обучения. +2. Задачи, требующие большого количества вычислений, такие как моделирование, рендеринг графики или физические симуляции. +3. В системах, где важно обрабатывать множество параллельных запросов пользователей, таких как веб-серверы или API. + +***Когда параллельные вычисления нецелесообразны*** +1. Если объёмы данных небольшие и обработка не требует значительных ресурсов, то добавление параллельных вычислений может привести к ненужным накладным расходам на синхронизацию и управление потоками. +2. Если задачи зависят друг от друга и требуют последовательного выполнения, параллельные вычисления могут не дать прироста производительности. +3. В системах, где важна высокая степень согласованности данных, параллелизм может создавать дополнительные проблемы с управлением конкурентным доступом.