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

57 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- связи микросервисов
tags:
- maturity/🌱
date: 2024-11-26
---
В [[../../../../wiki/zero/00 Микросервисная архитектура|микросервисной архитектуре]] каждый [[Микросервис|сервис]] имеет зависимости, которые можно разделить на **входящие** и **исходящие**:
- **Входящие зависимости** — это другие сервисы или клиенты, которые полагаются на данный сервис для выполнения своих задач.
- **Исходящие зависимости** — это внешние системы или микросервисы, от которых данный сервис зависит для выполнения своих функций.
## Входящие зависимости
Сервисы с высокой входящей зависимостью обычно выполняют функции, на которых завязаны многие другие компоненты. Отказ такого сервиса может привести к масштабным сбоям, поэтому требуется масштабируемость, мониторинг и резервирование.
Чем больше входящих зависимостей, тем выше вероятность перегрузки сервиса, особенно в моменты пиковых запросов. Например, сервис авторизации, на который завязаны все остальные микросервисы.
## Исходящие зависимости
Сервисы с множеством исходящих зависимостей сильно зависят от доступности и стабильности внешних систем.
Чем больше исходящих зависимостей, тем сложнее проводить изолированные тесты сервиса. Для таких случаев требуются mock-объекты или тестовые среды.
Высокое число исходящих зависимостей может замедлять работу сервиса из-за сетевых задержек, ограничения пропускной способности или API-лимитов.
## Типы микросервисов на основе зависимостей
- **Центральные (Hub)**
- Много входящих зависимостей, мало исходящих.
- Выполняют ключевые функции, от которых зависят другие.
- Пример: [[API Gateway]] или сервис аутентификации.
- **Агрегаторы**
- Много исходящих зависимостей, среднее число входящих.
- Сбор и обработка данных из множества источников.
- Пример: сервис аналитики или отчётности.
- **Специализированные (Leaf)**
- Мало входящих и исходящих зависимостей.
- Выполняют автономные задачи, минимально влияя на другие части системы.
- Пример: сервис генерации отчетов.
- **Мосты (Bridge)**
- Баланс между входящими и исходящими зависимостями.
- Соединяют разные домены или внешние API с внутренними сервисами.
- Пример: сервис интеграции с внешней платежной системой.
## Рекомендации
- **Минимизируйте исходящие зависимости**. Ограничьте количество внешних систем, от которых зависит сервис. Агрегируйте зависимости, чтобы уменьшить количество прямых связей.
- **Делайте отказоустойчивые сервисы с высокой входящей зависимостью**. Используйте [[кэширование]], [[highload/Балансировка нагрузки|балансировщики нагрузки]] и [[highload/Горизонтальное масштабирование|горизонтальное масштабирование]], чтобы снизить риски.
- **Используйте асинхронные коммуникации**. Асинхронные подходы (например, через [[Брокер сообщений|брокеры сообщений]]) помогают уменьшить плотность зависимостей и снизить нагрузку.
- **Мониторьте зависимости**. Отслеживайте состояние входящих и исходящих зависимостей с помощью [[Архитектурная схема|архитектурных схем]], чтобы своевременно выявлять узкие места и проблемы.
- **Сегментируйте систему** Разделение архитектуры на домены помогает уменьшить плотность зависимостей и сделать систему более управляемой.
***
## Мета информация
**Область**:: [[../../../../wiki/zero/00 Микросервисная архитектура|00 Микросервисная архитектура]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-11-26]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->