Struchkov Mark
7ba718adb3
All checks were successful
continuous-integration/drone/push Build is passing
57 lines
6.0 KiB
Markdown
57 lines
6.0 KiB
Markdown
---
|
||
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) -->
|
||
|