bazunov andrew lab 8 ready #239
66
bazunov_andrew_lab_8/README.md
Normal file
66
bazunov_andrew_lab_8/README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Как Вы поняли, что называется распределенной системой и как она устроена?
|
||||||
|
|
||||||
|
# Распределенные системы: принципы, инструменты и подходы
|
||||||
|
|
||||||
|
Современные сложные системы, такие как социальные сети и крупные веб-приложения, часто строятся как распределенные. Это позволяет обеспечить их масштабируемость, отказоустойчивость и эффективность. В этом README рассматриваются основные аспекты распределённых систем.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Зачем системы пишутся в распределенном стиле?
|
||||||
|
В распределённых системах каждое приложение (или сервис) выполняет ограниченный спектр задач. Это позволяет:
|
||||||
|
- **Разделить ответственность**: каждый сервис фокусируется на своей задаче, что упрощает разработку и сопровождение.
|
||||||
|
- **Обеспечить масштабируемость**: можно увеличивать мощность отдельных сервисов без необходимости модификации всей системы.
|
||||||
|
- **Повысить отказоустойчивость**: сбой одного сервиса не приводит к остановке всей системы.
|
||||||
|
- Пример: в социальной сети ВКонтакте отдельные сервисы отвечают за отправку сообщений, хранение медиафайлов, обработку запросов API и рекламу.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Для чего нужны системы оркестрации?
|
||||||
|
Системы оркестрации, такие как **Kubernetes** или **Docker Swarm**, были созданы для управления контейнеризированными приложениями. Они:
|
||||||
|
- **Упрощают разработку**: обеспечивают автоматическое масштабирование, балансировку нагрузки и перезапуск сервисов.
|
||||||
|
- **Упрощают сопровождение**: помогают управлять зависимостями, обеспечивать резервное копирование и отслеживать состояние системы.
|
||||||
|
- **Усложняют начальную настройку**: требуют знания инфраструктуры и инструментов, но окупаются на стадии эксплуатации.
|
||||||
|
Пример: в крупной системе оркестрация позволяет автоматически перераспределять ресурсы между сервисами в зависимости от их нагрузки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Зачем нужны очереди обработки сообщений?
|
||||||
|
Очереди сообщений (например, **RabbitMQ**, **Kafka**) используются для обмена данными между сервисами. Под сообщениями могут подразумеваться:
|
||||||
|
- Запросы на выполнение задач.
|
||||||
|
- Уведомления об изменении состояния.
|
||||||
|
- Данные для обработки (например, лог-файлы или транзакции).
|
||||||
|
|
||||||
|
Очереди:
|
||||||
|
- **Развязывают взаимодействие сервисов**: отправитель и получатель могут работать независимо.
|
||||||
|
- **Обеспечивают устойчивость**: сохраняют сообщения до их обработки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Преимущества и недостатки распределённых приложений
|
||||||
|
|
||||||
|
### Преимущества:
|
||||||
|
- Масштабируемость.
|
||||||
|
- Устойчивость к сбоям.
|
||||||
|
- Локализация изменений (меньше шансов нарушить работу всей системы).
|
||||||
|
|
||||||
|
### Недостатки:
|
||||||
|
- Увеличенная сложность разработки.
|
||||||
|
- Зависимость от сетевой инфраструктуры (задержки, потеря данных).
|
||||||
|
- Требуются дополнительные инструменты для мониторинга и управления.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Параллельные вычисления в распределенных системах
|
||||||
|
|
||||||
|
### Когда это необходимо:
|
||||||
|
- **Обработка больших данных**: анализ логов, машинное обучение, трансляции видео.
|
||||||
|
- **Высоконагруженные системы**: расчёт рекомендаций, обновление новостных лент в реальном времени.
|
||||||
|
|
||||||
|
### Когда это избыточно:
|
||||||
|
- Малые системы с низкой нагрузкой.
|
||||||
|
- Простые веб-приложения, где вычисления не требуют значительных ресурсов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
Распределенные системы и связанные с ними инструменты играют важную роль в построении современных приложений. Однако их применение оправдано только там, где есть высокая нагрузка или необходимость в масштабировании. Успех разработки таких систем зависит от правильного выбора архитектуры, инструментов и методов разработки.
|
Loading…
Reference in New Issue
Block a user