klyushenkova_ksenia_lab_8 is ready

This commit is contained in:
Pineapple 2024-12-23 22:32:46 +04:00
parent 5dd9e26f07
commit 07d4182f7d

View File

@ -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. В системах, где важна высокая степень согласованности данных, параллелизм может создавать дополнительные проблемы с управлением конкурентным доступом.