DAS_2024_1/bazunov_andrew_lab_8/README.md
Bazunov Andrew Igorevich c3b1e9157a ready
2024-11-29 00:24:45 +04:00

66 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Как Вы поняли, что называется распределенной системой и как она устроена?
# Распределенные системы: принципы, инструменты и подходы
Современные сложные системы, такие как социальные сети и крупные веб-приложения, часто строятся как распределенные. Это позволяет обеспечить их масштабируемость, отказоустойчивость и эффективность. В этом README рассматриваются основные аспекты распределённых систем.
---
## Зачем системы пишутся в распределенном стиле?
В распределённых системах каждое приложение (или сервис) выполняет ограниченный спектр задач. Это позволяет:
- **Разделить ответственность**: каждый сервис фокусируется на своей задаче, что упрощает разработку и сопровождение.
- **Обеспечить масштабируемость**: можно увеличивать мощность отдельных сервисов без необходимости модификации всей системы.
- **Повысить отказоустойчивость**: сбой одного сервиса не приводит к остановке всей системы.
- Пример: в социальной сети ВКонтакте отдельные сервисы отвечают за отправку сообщений, хранение медиафайлов, обработку запросов API и рекламу.
---
## Для чего нужны системы оркестрации?
Системы оркестрации, такие как **Kubernetes** или **Docker Swarm**, были созданы для управления контейнеризированными приложениями. Они:
- **Упрощают разработку**: обеспечивают автоматическое масштабирование, балансировку нагрузки и перезапуск сервисов.
- **Упрощают сопровождение**: помогают управлять зависимостями, обеспечивать резервное копирование и отслеживать состояние системы.
- **Усложняют начальную настройку**: требуют знания инфраструктуры и инструментов, но окупаются на стадии эксплуатации.
Пример: в крупной системе оркестрация позволяет автоматически перераспределять ресурсы между сервисами в зависимости от их нагрузки.
---
## Зачем нужны очереди обработки сообщений?
Очереди сообщений (например, **RabbitMQ**, **Kafka**) используются для обмена данными между сервисами. Под сообщениями могут подразумеваться:
- Запросы на выполнение задач.
- Уведомления об изменении состояния.
- Данные для обработки (например, лог-файлы или транзакции).
Очереди:
- **Развязывают взаимодействие сервисов**: отправитель и получатель могут работать независимо.
- **Обеспечивают устойчивость**: сохраняют сообщения до их обработки.
---
## Преимущества и недостатки распределённых приложений
### Преимущества:
- Масштабируемость.
- Устойчивость к сбоям.
- Локализация изменений (меньше шансов нарушить работу всей системы).
### Недостатки:
- Увеличенная сложность разработки.
- Зависимость от сетевой инфраструктуры (задержки, потеря данных).
- Требуются дополнительные инструменты для мониторинга и управления.
---
## Параллельные вычисления в распределенных системах
### Когда это необходимо:
- **Обработка больших данных**: анализ логов, машинное обучение, трансляции видео.
- **Высоконагруженные системы**: расчёт рекомендаций, обновление новостных лент в реальном времени.
### Когда это избыточно:
- Малые системы с низкой нагрузкой.
- Простые веб-приложения, где вычисления не требуют значительных ресурсов.
---
## Заключение
Распределенные системы и связанные с ними инструменты играют важную роль в построении современных приложений. Однако их применение оправдано только там, где есть высокая нагрузка или необходимость в масштабировании. Успех разработки таких систем зависит от правильного выбора архитектуры, инструментов и методов разработки.