digital-garden/dev/architecture/Зависимости микросервисов.md
Struchkov Mark 7ba718adb3
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-26 22:19:07 +03:00

6.0 KiB
Raw Blame History

aliases tags date
связи микросервисов
maturity/🌱
2024-11-26

В ../../../../wiki/zero/00 Микросервисная архитектура каждый Микросервис имеет зависимости, которые можно разделить на входящие и исходящие:

  • Входящие зависимости — это другие сервисы или клиенты, которые полагаются на данный сервис для выполнения своих задач.
  • Исходящие зависимости — это внешние системы или микросервисы, от которых данный сервис зависит для выполнения своих функций.

Входящие зависимости

Сервисы с высокой входящей зависимостью обычно выполняют функции, на которых завязаны многие другие компоненты. Отказ такого сервиса может привести к масштабным сбоям, поэтому требуется масштабируемость, мониторинг и резервирование.

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

Исходящие зависимости

Сервисы с множеством исходящих зависимостей сильно зависят от доступности и стабильности внешних систем.

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

Высокое число исходящих зависимостей может замедлять работу сервиса из-за сетевых задержек, ограничения пропускной способности или API-лимитов.

Типы микросервисов на основе зависимостей

  • Центральные (Hub)
    • Много входящих зависимостей, мало исходящих.
    • Выполняют ключевые функции, от которых зависят другие.
    • Пример: API Gateway или сервис аутентификации.
  • Агрегаторы
    • Много исходящих зависимостей, среднее число входящих.
    • Сбор и обработка данных из множества источников.
    • Пример: сервис аналитики или отчётности.
  • Специализированные (Leaf)
    • Мало входящих и исходящих зависимостей.
    • Выполняют автономные задачи, минимально влияя на другие части системы.
    • Пример: сервис генерации отчетов.
  • Мосты (Bridge)
    • Баланс между входящими и исходящими зависимостями.
    • Соединяют разные домены или внешние API с внутренними сервисами.
  • Пример: сервис интеграции с внешней платежной системой.

Рекомендации

  • Минимизируйте исходящие зависимости. Ограничьте количество внешних систем, от которых зависит сервис. Агрегируйте зависимости, чтобы уменьшить количество прямых связей.
  • Делайте отказоустойчивые сервисы с высокой входящей зависимостью. Используйте кэширование, highload/Балансировка нагрузки и highload/Горизонтальное масштабирование, чтобы снизить риски.
  • Используйте асинхронные коммуникации. Асинхронные подходы (например, через Брокер сообщений) помогают уменьшить плотность зависимостей и снизить нагрузку.
  • Мониторьте зависимости. Отслеживайте состояние входящих и исходящих зависимостей с помощью Архитектурная схема, чтобы своевременно выявлять узкие места и проблемы.
  • Сегментируйте систему Разделение архитектуры на домены помогает уменьшить плотность зависимостей и сделать систему более управляемой.

Мета информация

Область:: ../../../../wiki/zero/00 Микросервисная архитектура Родитель:: Источник:: Создана:: 2024-11-26 Автор::

Дополнительные материалы

Дочерние заметки