DAS_2024_1/emelyanov_artem_lab_8/Readme.md

3.3 KiB
Raw Permalink Blame History

Устройство распределенных систем

Сложные системы такие как "ВКонтакте" пишутся в распределенном стиле, так как это даёт такие преимущества, как:

  • Масштабируемость: Разделение на микросервисы позволяет масштабировать только те части системы, которые испытывают высокую нагрузку, не затрагивая другие компоненты.
  • Упрощение разработки и поддержки: Микросервисная архитектура позволяет выделить разные команды для разработки и поддержки каждого отдельного сервиса, что ускоряет разработку и упрощает управление кодовой базой.
  • Устойчивость и отказоустойчивость: Отказ одного микросервиса не ведет к отказу всей системы, что повышает её надежность.
  • Гибкость в выборе технологий: Разные сервисы могут использовать разные языки программирования, базы данных и фреймворки, которые лучше подходят для конкретной задачи.

Но у распределённых систем можно выявить и недостатки, такие как:

  • Сложность разработки и управления
  • Сложность тестирования
  • Задержки в сетевом взаимодействии

Для управления контейнерами в распределенных системах, были созданы специальные системы автоматизации для управления развертыванием. Называется орекстратор, и его преимущества заключаются в:

  • Автоматическое масштабирование
  • Управление отказами
  • Облегчение развертывания и обновления
  • Управление конфигурациями и секретами

Для асинхронного взаимодействия между сервисами придуманы очереди сообщений, такие как, RabbitMQ или Kafka:

  • Сообщения — это единицы данных, которые сервисы обмениваются друг с другом.

Очереди обеспечивают:

  • Буферизацию нагрузки
  • Асинхронность
  • Устойчивость к сбоям

Для внедрения параллельных вычислений в распределенную систему, должны быть весомы поводы, такие как, обработка большого кол-ва данных. Но если задачи простые или важна скорость обмена между сервисами, это может быть уже не так полезно.