forked from Alexey/DAS_2024_1
.. | ||
Readme.md |
Устройство распределенных систем
Сложные системы такие как "ВКонтакте" пишутся в распределенном стиле, так как это даёт такие преимущества, как:
- Масштабируемость: Разделение на микросервисы позволяет масштабировать только те части системы, которые испытывают высокую нагрузку, не затрагивая другие компоненты.
- Упрощение разработки и поддержки: Микросервисная архитектура позволяет выделить разные команды для разработки и поддержки каждого отдельного сервиса, что ускоряет разработку и упрощает управление кодовой базой.
- Устойчивость и отказоустойчивость: Отказ одного микросервиса не ведет к отказу всей системы, что повышает её надежность.
- Гибкость в выборе технологий: Разные сервисы могут использовать разные языки программирования, базы данных и фреймворки, которые лучше подходят для конкретной задачи.
Но у распределённых систем можно выявить и недостатки, такие как:
- Сложность разработки и управления
- Сложность тестирования
- Задержки в сетевом взаимодействии
Для управления контейнерами в распределенных системах, были созданы специальные системы автоматизации для управления развертыванием. Называется орекстратор, и его преимущества заключаются в:
- Автоматическое масштабирование
- Управление отказами
- Облегчение развертывания и обновления
- Управление конфигурациями и секретами
Для асинхронного взаимодействия между сервисами придуманы очереди сообщений, такие как, RabbitMQ или Kafka:
- Сообщения — это единицы данных, которые сервисы обмениваются друг с другом.
Очереди обеспечивают:
- Буферизацию нагрузки
- Асинхронность
- Устойчивость к сбоям
Для внедрения параллельных вычислений в распределенную систему, должны быть весомы поводы, такие как, обработка большого кол-ва данных. Но если задачи простые или важна скорость обмена между сервисами, это может быть уже не так полезно.