Какие бывают транспорты между микросервисами и чем отличаются REST, gRPC, Kafka, RabbitMQ и NATS?

Транспорты между микросервисами: синхронный и асинхронный обмен Синхронные: клиент отправляет API-запрос и ожидает получения ответа REST: HTTP/JSON, простая интеграция и широкая совместимость gRPC: HTTP/2 и бинарный…

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

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

Транспорты между микросервисами: синхронный и асинхронный обмен Синхронные: клиент отправляет API-запрос и ожидает получения ответа REST: HTTP/JSON, простая интеграция и широкая совместимость gRPC: HTTP/2 и бинарный протокол, высокая скорость, поддержка стриминга Асинхронные: сервисы обмениваются сообщениями без необходимости ждать немедленный ответ Kafka: событийная очередь с высокой пропускной способностью и длительным хранением сообщений RabbitMQ: брокер сообщений с AMQP и возможностями сложной маршрутизации NATS: лёгкий брокер с низкой задержкой и простым масштабированием Выбор: определяется требованиями к скорости, согласованности…

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

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

Транспорты между микросервисами: синхронный и асинхронный обмен

  • Синхронные: клиент отправляет API-запрос и ожидает получения ответа
  • REST: HTTP/JSON, простая интеграция и широкая совместимость
  • gRPC: HTTP/2 и бинарный протокол, высокая скорость, поддержка стриминга
  • Асинхронные: сервисы обмениваются сообщениями без необходимости ждать немедленный ответ
  • Kafka: событийная очередь с высокой пропускной способностью и длительным хранением сообщений
  • RabbitMQ: брокер сообщений с AMQP и возможностями сложной маршрутизации
  • NATS: лёгкий брокер с низкой задержкой и простым масштабированием
  • Выбор: определяется требованиями к скорости, согласованности данных и отказоустойчивости
  • Практика: синхронный транспорт применяют для запроса-ответа, асинхронный — для интеграций и событий

Главная задача — найти баланс между надежностью, производительностью и сложностью архитектуры.

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

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

Для связи микросервисов применяют два базовых варианта транспорта: синхронный и асинхронный. При синхронном взаимодействии один сервис напрямую обращается к другому и ждёт его ответа — обычно это делается через HTTP REST или gRPC. Асинхронная модель строится на обмене сообщениями: сервисы передают события через брокеры, такие как Kafka, RabbitMQ или NATS. Благодаря этому отправитель и получатель оказываются разделены, а система становится устойчивее.

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

  • Синхронный транспорт:
  • REST (HTTP/1.1, JSON) — распространённый и удобный для отладки и интеграции вариант, однако он характеризуется большей задержкой и зависит от доступности вызываемого сервиса.
  • gRPC (HTTP/2, protobuf) обеспечивает более высокую производительность и меньший размер сообщений, поддерживает bi-directional streaming и хорошо подходит для высоконагруженных внутренних сервисов.
  • Асинхронный транспорт:
  • Kafka — распределённый commit log, устойчивый к сбоям; особенно эффективен для event-driven архитектуры и обработки событий в большом масштабе.
  • RabbitMQ — классический брокер сообщений, позволяющий строить сложные схемы маршрутизации с использованием exchange и queue. Он удобен для интеграций, в которых нужны разные паттерны доставки.
  • NATS — лёгкий и производительный messaging system, ориентированный на простоту и low latency; его часто выбирают для real-time communication.
  • Конкретный вариант выбирают с учётом задержки, надежности, особенностей обработки событий и требований к масштабированию: синхронный транспорт удобнее для request-response, а асинхронный — для decoupling, масштабируемости и fault tolerance.

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

В крупных системах эти подходы обычно сочетают: gRPC используют для быстрых вызовов внутри дата-центра, а Kafka или RabbitMQ — для передачи событий, например обновлений состояния и сообщений между различными подсистемами. Такая комбинация помогает поддерживать 99.9% uptime при реальных нагрузках.

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

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

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

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