Термин · Глоссарий B2B-ПО

gRPC (gRPC)

gRPC – высокопроизводительный фреймворк удалённого вызова процедур (RPC) от Google, использующий HTTP/2 и Protocol Buffers. Обеспечивает строгую типизацию API, двунаправленную потоковую передачу и на 20-40% меньшую задержку по сравнению с REST.

Буква «G» В категориях: 4 Платформ: 6+

Введение

gRPC (gRPC Remote Procedure Calls) – открытый высокопроизводительный фреймворк удалённого вызова процедур, разработанный Google и выпущенный в 2015 году. gRPC строится на двух ключевых технологиях: HTTP/2 как транспортный протокол и Protocol Buffers (protobuf) как формат сериализации данных и описания интерфейсов.

gRPC стал стандартным протоколом взаимодействия в cloud-native архитектурах: его используют Kubernetes, Istio, Envoy, etcd, TensorFlow Serving, Jaeger. По данным бенчмарков, gRPC обеспечивает на 20-40% меньшую задержку по сравнению с REST/JSON за счёт бинарной сериализации и мультиплексирования HTTP/2.

История и контекст

gRPC является эволюцией внутреннего фреймворка Google Stubby, использовавшегося для взаимодействия между тысячами внутренних сервисов. В 2015 году Google открыл исходный код и создал gRPC на основе Stubby с использованием открытого стандарта HTTP/2 (вместо проприетарного транспорта) и Protocol Buffers (которые уже были открыты ранее).

В 2016 году gRPC был передан в CNCF. Сегодня gRPC поддерживается на более чем 11 языках программирования: Go, Java, C++, Python, Ruby, C#, Node.js, PHP, Dart, Kotlin, Swift. Версия 1.0 была выпущена в 2016 году, и фреймворк активно развивается.

Как это работает

Работа с gRPC начинается с определения сервиса в .proto файле на языке Protocol Buffers:

  • Определяются сообщения (структуры данных) с типизированными полями.
  • Определяется сервис с методами (RPC-вызовами).
  • Компилятор protoc генерирует клиентский и серверный код на целевом языке.

gRPC поддерживает 4 типа вызовов:

  • Unary RPC: классический запрос-ответ. Клиент отправляет один запрос, сервер отвечает одним сообщением.
  • Server Streaming RPC: клиент отправляет один запрос, сервер возвращает поток сообщений (например, результаты поиска по частям).
  • Client Streaming RPC: клиент отправляет поток сообщений, сервер отвечает одним сообщением (например, загрузка файла по частям).
  • Bidirectional Streaming RPC: оба участника обмениваются потоками сообщений независимо (например, чат, real-time аналитика).

Технические преимущества gRPC:

  • HTTP/2: мультиплексирование нескольких запросов в одном TCP-соединении, сжатие заголовков (HPACK), server push.
  • Protocol Buffers: бинарная сериализация – в 3-10 раз компактнее JSON. Строгая схема с версионированием (номера полей).
  • Deadlines/Timeouts: встроенный механизм отмены запросов по таймауту, передаётся через контекст.
  • Interceptors: middleware-механизм для аутентификации, логирования, трассировки (аналог middleware в HTTP-фреймворках).
  • Load Balancing: gRPC поддерживает клиентскую балансировку (round robin, lookaside) – важно для микросервисов.

gRPC vs REST

Сравнение gRPC и REST/HTTP+JSON:

  • Производительность: gRPC значительно быстрее за счёт бинарного protobuf и HTTP/2.
  • Типобезопасность: gRPC гарантирует типы через proto-схему; REST – нет (JSON невалидируем без дополнительных инструментов).
  • Streaming: gRPC нативно поддерживает двунаправленный стриминг; в REST для этого нужны WebSocket или SSE.
  • Читаемость: REST/JSON читается человеком без инструментов; для gRPC/protobuf нужен protoc или инструмент типа grpcurl.
  • Браузерная поддержка: REST поддерживается напрямую; gRPC в браузере требует grpc-web транслятора.

Где применяется

  • Внутренние микросервисные API: gRPC – стандарт для east-west трафика между микросервисами благодаря производительности и типобезопасности.
  • ML-инференс: TensorFlow Serving, Triton Inference Server используют gRPC для высокопроизводительной передачи тензоров.
  • Kubernetes internals: kube-apiserver, etcd, kubelet общаются по gRPC.
  • Мобильные приложения: gRPC эффективен на мобильных сетях благодаря компактности protobuf.
  • Финансовые системы: биржевые платформы используют gRPC для streaming рыночных данных.

Связь с другими понятиями

  • Service Mesh (Istio): service mesh обеспечивает L7 балансировку gRPC-запросов, mTLS и observability. Без service mesh Kubernetes балансирует только TCP-соединения, что ломает равномерное распределение gRPC-нагрузки.
  • OpenTelemetry: gRPC поддерживает propagation контекста трассировки через метаданные (binary и text format).
  • Protocol Buffers: основной формат сериализации gRPC, определяет строгую схему API.
  • Microservices: gRPC является предпочтительным протоколом для синхронного взаимодействия в микросервисных архитектурах.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «gRPC».

Платформы класса «gRPC»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

OS

OData Server

iPaaS платформы
OData Server — программное обеспечение от архангельской компании (ИНН 2901260216) для организации сервера данн...
Цена по запросу
Подробнее →
Готовый модуль обмена данными между конфигурацией «ЭСТИ: Управление фирмой-франчайзи для 1С» и облачной систем...
Цена по запросу
Подробнее →
П«

Программа «SYSCO»

iPaaS платформы
Программа «SYSCO» (ИНН 7840421014) — специализированное программное обеспечение для организации корпоративных...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «gRPC».

Где применяется

Отрасли, в которых «gRPC» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про gRPC

Почему gRPC быстрее REST?

gRPC использует Protocol Buffers (бинарный формат, в 3-10 раз компактнее JSON) и HTTP/2 (мультиплексирование, сжатие заголовков). Это даёт 20-40% меньшую задержку и выше пропускную способность.

Можно ли вызывать gRPC из браузера?

Напрямую нет: браузеры не поддерживают HTTP/2 на уровне gRPC. Используется grpc-web – протокол с JavaScript-библиотекой и прокси-транслятором (Envoy или grpc-web-proxy).

Что такое Protocol Buffers?

Protocol Buffers (protobuf) – бинарный формат сериализации от Google. Данные описываются в .proto-файле, компилятор генерирует код на любом языке. Компактнее JSON, строго типизирован.

Как gRPC обрабатывает ошибки?

gRPC использует стандартные Status Codes (OK, CANCELLED, UNKNOWN, INVALID_ARGUMENT, NOT_FOUND, ALREADY_EXISTS, PERMISSION_DENIED и др.) – аналог HTTP-кодов, но более специфичный для RPC-семантики.

Нужен ли service mesh для балансировки gRPC?

Для production – рекомендуется. Kubernetes балансирует TCP-соединения (L4), но gRPC держит долгоживущее HTTP/2-соединение. Без L7-балансировки весь трафик уходит на одну реплику. Service mesh решает эту проблему.

Что такое gRPC Reflection?

gRPC Reflection – расширение, позволяющее клиентам запросить у сервера список его методов и схему сообщений без .proto-файла. Используется в инструментах grpcurl и gRPC UI для интроспекции.