6.0 KiB
aliases | tags | date | ||
---|---|---|---|---|
|
|
2024-11-26 |
В ../../../../wiki/zero/00 Микросервисная архитектура каждый Микросервис имеет зависимости, которые можно разделить на входящие и исходящие:
- Входящие зависимости — это другие сервисы или клиенты, которые полагаются на данный сервис для выполнения своих задач.
- Исходящие зависимости — это внешние системы или микросервисы, от которых данный сервис зависит для выполнения своих функций.
Входящие зависимости
Сервисы с высокой входящей зависимостью обычно выполняют функции, на которых завязаны многие другие компоненты. Отказ такого сервиса может привести к масштабным сбоям, поэтому требуется масштабируемость, мониторинг и резервирование.
Чем больше входящих зависимостей, тем выше вероятность перегрузки сервиса, особенно в моменты пиковых запросов. Например, сервис авторизации, на который завязаны все остальные микросервисы.
Исходящие зависимости
Сервисы с множеством исходящих зависимостей сильно зависят от доступности и стабильности внешних систем.
Чем больше исходящих зависимостей, тем сложнее проводить изолированные тесты сервиса. Для таких случаев требуются mock-объекты или тестовые среды.
Высокое число исходящих зависимостей может замедлять работу сервиса из-за сетевых задержек, ограничения пропускной способности или API-лимитов.
Типы микросервисов на основе зависимостей
- Центральные (Hub)
- Много входящих зависимостей, мало исходящих.
- Выполняют ключевые функции, от которых зависят другие.
- Пример: API Gateway или сервис аутентификации.
- Агрегаторы
- Много исходящих зависимостей, среднее число входящих.
- Сбор и обработка данных из множества источников.
- Пример: сервис аналитики или отчётности.
- Специализированные (Leaf)
- Мало входящих и исходящих зависимостей.
- Выполняют автономные задачи, минимально влияя на другие части системы.
- Пример: сервис генерации отчетов.
- Мосты (Bridge)
- Баланс между входящими и исходящими зависимостями.
- Соединяют разные домены или внешние API с внутренними сервисами.
- Пример: сервис интеграции с внешней платежной системой.
Рекомендации
- Минимизируйте исходящие зависимости. Ограничьте количество внешних систем, от которых зависит сервис. Агрегируйте зависимости, чтобы уменьшить количество прямых связей.
- Делайте отказоустойчивые сервисы с высокой входящей зависимостью. Используйте кэширование, highload/Балансировка нагрузки и highload/Горизонтальное масштабирование, чтобы снизить риски.
- Используйте асинхронные коммуникации. Асинхронные подходы (например, через Брокер сообщений) помогают уменьшить плотность зависимостей и снизить нагрузку.
- Мониторьте зависимости. Отслеживайте состояние входящих и исходящих зависимостей с помощью Архитектурная схема, чтобы своевременно выявлять узкие места и проблемы.
- Сегментируйте систему Разделение архитектуры на домены помогает уменьшить плотность зависимостей и сделать систему более управляемой.
Мета информация
Область:: ../../../../wiki/zero/00 Микросервисная архитектура Родитель:: Источник:: Создана:: 2024-11-26 Автор::