klyushenkova_ksenia_lab_8 is ready
This commit is contained in:
parent
5dd9e26f07
commit
07d4182f7d
71
klyushenkova_ksenia_lab_8/README.md
Normal file
71
klyushenkova_ksenia_lab_8/README.md
Normal 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. В системах, где важна высокая степень согласованности данных, параллелизм может создавать дополнительные проблемы с управлением конкурентным доступом.
|
Loading…
Reference in New Issue
Block a user