Как организуют взаимодействие между микросервисами?

HTTP/REST: синхронный и простой способ с широкой поддержкой gRPC: высокопроизводительный бинарный протокол для быстрых вызовов Message Broker (RabbitMQ, Kafka): асинхронный обмен через очереди, повышающий устойчивость…

Короткий ответ

Что ответить на собеседовании

HTTP/REST: синхронный и простой способ с широкой поддержкой gRPC: высокопроизводительный бинарный протокол для быстрых вызовов Message Broker (RabbitMQ, Kafka): асинхронный обмен через очереди, повышающий устойчивость Event-driven: сервисы реагируют на события, благодаря чему снижается связанность Shared database: общая база данных для нескольких сервисов (используется редко и считается антипаттерном) WebSockets/Streaming: двунаправленная связь для приложений реального времени GraphQL Gateway: объединяет данные из нескольких сервисов для удобства клиента Конкретный вариант выбирают с учётом требуемой задержки, надёжности и архитектуры…

Подробный разбор

Ответ с пояснениями

Как организуют взаимодействие между микросервисами?

  • HTTP/REST: синхронный и простой способ с широкой поддержкой
  • gRPC: высокопроизводительный бинарный протокол для быстрых вызовов
  • Message Broker (RabbitMQ, Kafka): асинхронный обмен через очереди, повышающий устойчивость
  • Event-driven: сервисы реагируют на события, благодаря чему снижается связанность
  • Shared database: общая база данных для нескольких сервисов (используется редко и считается антипаттерном)
  • WebSockets/Streaming: двунаправленная связь для приложений реального времени
  • GraphQL Gateway: объединяет данные из нескольких сервисов для удобства клиента Конкретный вариант выбирают с учётом требуемой задержки, надёжности и архитектуры системы.

Подробный ответ

Основной ответ

Взаимодействие микросервисов обычно строится по одной из двух моделей: синхронной или асинхронной. В первом случае сервис отправляет прямой запрос, например через HTTP/REST или gRPC, и ожидает ответ, прежде чем продолжить работу. При асинхронной модели сообщения передаются через брокер, такой как Kafka или RabbitMQ, поэтому сервисы могут функционировать независимо и обрабатывать поступившие данные в собственном темпе.

Ключевые моменты

  • Для синхронного взаимодействия чаще всего применяют HTTP/REST и gRPC. REST получил широкое распространение благодаря простоте и использованию HTTP/JSON. gRPC даёт высокую производительность и контрактное взаимодействие на основе protobuf, а начиная с версии 1.0+ поддерживает потоки (streaming). Недостатком синхронного подхода считается более сильная связанность: задержка одного сервиса влияет на вызывающий сервис.
  • При асинхронном взаимодействии сообщения проходят через брокеры или очереди. Такой подход снижает связанность компонентов, улучшает отказоустойчивость и масштабируемость, позволяя сервисам обрабатывать события и задачи с собственной скоростью.
  • К основным моделям обмена сообщениями относятся Publish/Subscribe, Event-driven архитектура, Command/Queue и Sagas. Они применяются для управления распространением событий и поддержания согласованности в распределённой системе.
  • Также важно учитывать компромисс между консистентностью и доступностью, описываемый CAP-теоремой. Способ коммуникации выбирают на основании требований к задержке, отказоустойчивости и сложности обработки ошибок.

Практический контекст

В проектах с React 18+ на клиентской стороне и backend на Kubernetes для публичных API часто выбирают REST с OpenAPI. Во внутреннем взаимодействии Kafka используют для передачи событий, а RabbitMQ — для команд, требующих подтверждения. Такая схема разделяет ответственность между микросервисами, сохраняет гибкость и помогает выдерживать SLA: latency около 50-100ms для синхронных вызовов и повышенную нагрузку при асинхронной обработке.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку