.. | ||
README.md |
Клюшенкова Ксения ПИбд-42
Лабораторная работа №8 Про устройство распределённых систем
Задание:
- Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
- Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
- Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
- Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
- Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
Эссе
В чём смысл использования распределённых систем?
Распределённая система — это система, в которой компоненты (или группы компонентов) находятся на разных узлах, а функции и ресурсы распределены между ними. В таких системах нет единого центра управления, поэтому отказ одного узла не приводит к остановке всей системы.. Можем выделить основные причины создания распределённых систем:
- Масштабируемость. Каждый сервис можно масштабировать отдельно в зависимости от нагрузки. Например, если растёт количество пользователей, можно увеличить только сервис чатов.
- Изоляция ошибок. Если один сервис выходит из строя, остальные продолжают работать. Это позволяет системе оставаться доступной даже при сбоях в работе некоторых компонентов.
- Гибкость разработки. Команды могут работать над разными сервисами одновременно, используя различные технологии и языки программирования. Это ускоряет процесс разработки и улучшает качество кода.
- Поддержка различных нагрузок. Некоторые функции могут требовать больше ресурсов (например, обработка медиафайлов), и их можно выделить в отдельные сервисы.
Зачем нужны системы оркестрации приложений?
Системы оркестрации приложений — это инструменты, которые помогают автоматизировать развертывание, управление и масштабирование облачных приложений. Они управляют множеством контейнеров, виртуальных машин и сервисов, чтобы обеспечить их эффективную работу. Можем выделить основные функции систем оркестрации:
- Развёртывание приложений.
- Масштабирование.
- Управление состоянием.
- Балансировка нагрузки.
- Мониторинг и логирование. Системы оркестрации упрощают процессы развертывания и управления, позволяя командам сосредоточиться на разработке;
- предоставляют высокую доступность приложений и автоматическое восстановление после сбоев; обеспечивают простое добавление
- новых функции и масштабирование приложение без значительных затрат времени и ресурсов.
Зачем нужны очереди обработки сообщений?
Система обработки сообщений представляет собой инструмент, который позволяет различным элементам распределённой системы обмениваться информацией в асинхронном режиме. Это означает, что отправитель и получатель сообщений могут работать независимо друг от друга. Сообщения собираются в очередь и обрабатываются по мере доступности. Выделим основные свойства очереди обработки сообщений:
- Асинхронность: Позволяют различным сервисам взаимодействовать без необходимости быть синхронизированными. Это упрощает архитектуру и уменьшает время ожидания.
- Надёжность: Если один из компонентов выходит из строя, сообщения остаются в очереди и не теряются. После восстановления системы, они могут быть обработаны.
- Управление нагрузкой: Позволяют распределять нагрузку между несколькими обработчиками сообщений, что увеличивает устойчивость и масштабируемость системы.
- Обработка событий: Идеальны для событийного взаимодействия, где одно событие может инициировать ответ от нескольких других компонентов.
Преимущества распределённых приложений
- Легко добавлять новые узлы или сервера для увеличения производительности. Это позволяет справляться с увеличением нагрузки без значительных затрат.
- Если один компонент выходит из строя, остальные продолжают работать. Это обеспечивает высокую доступность и надёжность приложения.
- Разные части системы могут использовать разные технологии и языки программирования. Команды могут выбирать инструменты, которые лучше всего подходят для их задач.
- Можно оптимально распределять нагрузку между серверами, что снижает риск перегрузки и улучшает отклик системы.
Недостатки распределённых приложений
- Проектирование и разработка распределённых приложений может быть значительно сложнее из-за необходимости учитывать различные аспекты, такие как сетевые задержки, согласованность данных и обработка ошибок.
- Локализовать ошибки в распределённых системах может быть сложно, так как проблемы могут возникать на любом из узлов, а не только в приложении.
- Распределённые приложения подвержены сетевым проблемам (потеря пакетов, задержки), что может негативно сказаться на производительности.
- Управление согласованностью данных между различными узлами может быть трудной задачей.
- Поддержка и управление распределённой системой могут потребовать больше ресурсов, что может отразиться на бюджете.
Параллельные вычисления — это способ обработки информации и выполнения задач, при котором несколько вычислительных операций осуществляются одновременно, а не последовательно.
Когда целесообразно использовать параллельные вычисления
- Обработка больших объёмов данных: Параллельные вычисления могут значительно ускорить обработку больших объёмов данных, например в приложениях для анализа Big Data или машинного обучения.
- Задачи, требующие большого количества вычислений, такие как моделирование, рендеринг графики или физические симуляции.
- В системах, где важно обрабатывать множество параллельных запросов пользователей, таких как веб-серверы или API.
Когда параллельные вычисления нецелесообразны
- Если объёмы данных небольшие и обработка не требует значительных ресурсов, то добавление параллельных вычислений может привести к ненужным накладным расходам на синхронизацию и управление потоками.
- Если задачи зависят друг от друга и требуют последовательного выполнения, параллельные вычисления могут не дать прироста производительности.
- В системах, где важна высокая степень согласованности данных, параллелизм может создавать дополнительные проблемы с управлением конкурентным доступом.