Gymterview
middle

Какие способы взаимодействия микросервисов существуют?

Взаимодействие микросервисов делится на два основных типа: синхронное (Request-Response) и асинхронное (Event-Driven).

Синхронное взаимодействие (Request-Response)

  • REST (HTTP) — наиболее распространённый способ. Простой, основан на стандартах HTTP.
  • gRPC — бинарный протокол на основе Protocol Buffers. Быстрее REST, поддерживает стриминг.
  • GraphQL — гибкие запросы, клиент сам определяет структуру ответа.

Асинхронное взаимодействие (Event-Driven)

  • Message Brokers (Kafka, RabbitMQ) — сервис публикует события, подписчики обрабатывают.
  • Event Streaming (Apache Kafka) — поток событий с возможностью повторного чтения.
Критерий Синхронное Асинхронное
Связность Временная связность (оба сервиса должны быть доступны) Слабая связность
Latency Суммируется по всей цепочке Не блокирует вызывающую сторону
Сложность Простая реализация Сложнее (idempotency, ordering)
Отладка Проще (request-response) Сложнее (асинхронные цепочки)
Надёжность Ниже (cascade failures) Выше (буферизация в брокере)

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

  • Для операций, требующих немедленного ответа (запрос баланса) — синхронное взаимодействие.
  • Для операций, допускающих задержку (отправка уведомления после платежа) — асинхронное.
  • В банковских системах предпочтительно асинхронное взаимодействие, так как оно обеспечивает лучшую отказоустойчивость.
Пример
Синхронное:          Асинхронное:
A ──REST──► B        A ──event──► Kafka ──event──► B
A ◄─resp.── B                                     (A не ждёт B)

На собеседовании: покажите, что понимаете, когда какой способ применять. Ключевой критерий — нужен ли немедленный ответ. Частая ошибка — забыть упомянуть temporal coupling в синхронном взаимодействии.