Что такое gRPC?
gRPC — это современный фреймворк удалённого вызова процедур (Remote Procedure Call, RPC), разработанный Google. Он позволяет сервисам обмениваться данными быстро и эффективно, особенно в распределённых системах и микросервисной архитектуре.
Основные особенности gRPC
Использует HTTP/2
Поддержка мультиплексирования (несколько запросов по одному соединению).
Потоковая передача данных (server streaming, client streaming, bidirectional streaming).
Сжатие заголовков.
Формат сообщений — Protocol Buffers (Protobuf)
Более компактный и быстрый по сравнению с JSON и XML.
Строго типизированный контракт между клиентом и сервером.
Кросс-языковая поддержка
gRPC имеет генераторы кода для многих языков: Python, Java, Go, C#, C++, Node.js и др.
Типы взаимодействия
Unary — обычный запрос-ответ (как HTTP).
Server streaming — один запрос, много ответов.
Client streaming — много запросов, один ответ.
Bidirectional streaming — оба потока могут обмениваться сообщениями параллельно.
Преимущества
Высокая производительность (Protobuf + HTTP/2).
Строгие контракты (минимум ошибок в формате данных).
Поддержка стриминга.
Хорошо подходит для микросервисов.
Недостатки
Менее удобен для работы в браузере (по сравнению с REST, нужен gRPC-Web).
Сложнее отлаживать (сообщения в Protobuf не читаемые человеком без декодирования).
Требует строгого описания схемы (IDL-файлы
.proto).
Для QA важно
Проверка соответствия сообщений контракту (
.proto).Тестирование разных типов вызовов (unary, streaming).
Проверка обработки ошибок и кодов состояния (gRPC использует свои статус-коды, отличные от HTTP).
Нагрузочное тестирование (особенно при стриминге).
В gRPC запросы описываются в виде контрактов на языке Protocol Buffers (Protobuf), а затем на их основе генерируется код для клиента и сервера.
Пример .proto файла
.proto файлаВиды запросов
Unary (один запрос — один ответ) Клиент:
Server streaming (один запрос — много ответов) Клиент:
Client streaming (много запросов — один ответ) Клиент:
Bidirectional streaming (обмен сообщениями в обе стороны) Клиент:
Таким образом, gRPC поддерживает не только стандартную схему «запрос–ответ», но и полноценный стриминг в обе стороны, что делает его мощным инструментом для real-time приложений.
Last updated
Was this helpful?