Какие типы вызовов поддерживает gRPC?

gRPC — фреймворк для удалённых процедурных вызовов Unary RPC: один запрос и один ответ Server streaming RPC: один запрос и поток ответов Client streaming RPC: поток запросов и один ответ Bidirectional streaming RPC:…

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

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

gRPC — фреймворк для удалённых процедурных вызовов Unary RPC: один запрос и один ответ Server streaming RPC: один запрос и поток ответов Client streaming RPC: поток запросов и один ответ Bidirectional streaming RPC: двунаправленный обмен потоками запросов и ответов Для эффективной передачи данных и мультиплексирования используется HTTP/2 Такой подход подходит для микросервисов и приложений реального времени Выбранный тип вызова определяет архитектуру и способ обработки сообщений

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

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

Типы вызовов в gRPC

  • gRPC — фреймворк для удалённых процедурных вызовов
  • Unary RPC: один запрос и один ответ
  • Server streaming RPC: один запрос и поток ответов
  • Client streaming RPC: поток запросов и один ответ
  • Bidirectional streaming RPC: двунаправленный обмен потоками запросов и ответов
  • Для эффективной передачи данных и мультиплексирования используется HTTP/2
  • Такой подход подходит для микросервисов и приложений реального времени
  • Выбранный тип вызова определяет архитектуру и способ обработки сообщений

Развёрнутый ответ

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

В gRPC предусмотрено четыре основных типа RPC-вызовов для разных вариантов взаимодействия клиента и сервера. Они отличаются направлением передачи данных и количеством сообщений, которыми стороны обмениваются в рамках одного вызова.

Основные типы вызовов gRPC

  • Unary (одноразовый вызов): клиент передаёт один запрос и получает от сервера один ответ. Это наиболее простой и распространённый сценарий, аналогичный классической модели запрос-ответ.
  • Server streaming: после одного запроса клиента сервер возвращает поток из нескольких сообщений. Данные поступают постепенно, поэтому этот тип удобен для передачи больших объёмов или последовательностей.
  • Client streaming: клиент последовательно отправляет серверу поток сообщений. Сервер обрабатывает его целиком и после завершения передачи возвращает одно итоговое сообщение. Такой вариант полезен, когда перед формированием ответа нужно собрать данные клиента.
  • Bidirectional streaming (двунаправленный поток): клиент и сервер одновременно обмениваются потоками сообщений, формируя двустороннее взаимодействие. Тип применяется для real-time-коммуникаций, например чатов или live-стриминга.

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

В React 18+, а также при серверной разработке на Go или Java тип вызова выбирают по сценарию. Unary подходит для синхронных операций, тогда как streaming — для обработки больших данных и real-time-обмена. Потоковые вызовы gRPC используют HTTP/2, благодаря чему достигаются низкая задержка (~10-50ms) и эффективное расходование ресурсов.

Следовательно, знание этих типов помогает спроектировать сервисы под требования приложения и найти баланс между сложностью реализации и производительностью.

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

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

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

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