34 lines
3.3 KiB
Markdown
34 lines
3.3 KiB
Markdown
|
# Устройство распределенных систем
|
|||
|
|
|||
|
> Сложные системы такие как "ВКонтакте" пишутся в **распределенном** стиле, так как это даёт такие преимущества, как:
|
|||
|
|
|||
|
- **Масштабируемость**: Разделение на микросервисы позволяет масштабировать только те части системы, которые испытывают высокую нагрузку, не затрагивая другие компоненты.
|
|||
|
- **Упрощение разработки и поддержки**: Микросервисная архитектура позволяет выделить разные команды для разработки и поддержки каждого отдельного сервиса, что ускоряет разработку и упрощает управление кодовой базой.
|
|||
|
- **Устойчивость и отказоустойчивость**: Отказ одного микросервиса не ведет к отказу всей системы, что повышает её надежность.
|
|||
|
- **Гибкость в выборе технологий**: Разные сервисы могут использовать разные языки программирования, базы данных и фреймворки, которые лучше подходят для конкретной задачи.
|
|||
|
|
|||
|
> Но у распределённых систем можно выявить и недостатки, такие как:
|
|||
|
|
|||
|
- **Сложность разработки и управления**
|
|||
|
- **Сложность тестирования**
|
|||
|
- **Задержки в сетевом взаимодействии**
|
|||
|
|
|||
|
> Для управления контейнерами в распределенных системах, были созданы специальные системы автоматизации для управления развертыванием. Называется **орекстратор**, и его преимущества заключаются в:
|
|||
|
|
|||
|
- **Автоматическое масштабирование**
|
|||
|
- **Управление отказами**
|
|||
|
- **Облегчение развертывания и обновления**
|
|||
|
- **Управление конфигурациями и секретами**
|
|||
|
|
|||
|
> Для асинхронного взаимодействия между сервисами придуманы **очереди сообщений**, такие как, RabbitMQ или Kafka:
|
|||
|
|
|||
|
- **Сообщения** — это единицы данных, которые сервисы обмениваются друг с другом.
|
|||
|
|
|||
|
**Очереди** обеспечивают:
|
|||
|
|
|||
|
- **Буферизацию нагрузки**
|
|||
|
- **Асинхронность**
|
|||
|
- **Устойчивость к сбоям**
|
|||
|
|
|||
|
> Для внедрения параллельных вычислений в распределенную систему, должны быть весомы поводы, такие как, обработка большого кол-ва данных. Но если задачи простые или важна скорость обмена между сервисами, это может быть уже не так полезно.
|