DAS_2024_1/emelyanov_artem_lab_8/Readme.md

34 lines
3.3 KiB
Markdown
Raw Normal View History

2024-10-19 18:40:59 +04:00
# Устройство распределенных систем
> Сложные системы такие как "ВКонтакте" пишутся в **распределенном** стиле, так как это даёт такие преимущества, как:
- **Масштабируемость**: Разделение на микросервисы позволяет масштабировать только те части системы, которые испытывают высокую нагрузку, не затрагивая другие компоненты.
- **Упрощение разработки и поддержки**: Микросервисная архитектура позволяет выделить разные команды для разработки и поддержки каждого отдельного сервиса, что ускоряет разработку и упрощает управление кодовой базой.
- **Устойчивость и отказоустойчивость**: Отказ одного микросервиса не ведет к отказу всей системы, что повышает её надежность.
- **Гибкость в выборе технологий**: Разные сервисы могут использовать разные языки программирования, базы данных и фреймворки, которые лучше подходят для конкретной задачи.
> Но у распределённых систем можно выявить и недостатки, такие как:
- **Сложность разработки и управления**
- **Сложность тестирования**
- **Задержки в сетевом взаимодействии**
> Для управления контейнерами в распределенных системах, были созданы специальные системы автоматизации для управления развертыванием. Называется **орекстратор**, и его преимущества заключаются в:
- **Автоматическое масштабирование**
- **Управление отказами**
- **Облегчение развертывания и обновления**
- **Управление конфигурациями и секретами**
> Для асинхронного взаимодействия между сервисами придуманы **очереди сообщений**, такие как, RabbitMQ или Kafka:
- **Сообщения** — это единицы данных, которые сервисы обмениваются друг с другом.
**Очереди** обеспечивают:
- **Буферизацию нагрузки**
- **Асинхронность**
- **Устойчивость к сбоям**
> Для внедрения параллельных вычислений в распределенную систему, должны быть весомы поводы, такие как, обработка большого кол-ва данных. Но если задачи простые или важна скорость обмена между сервисами, это может быть уже не так полезно.