Что такое gRPC? Когда выбрать его вместо REST?
Подробный ответ
Что такое gRPC
gRPC строит взаимодействие вокруг удалённых вызовов методов. Контракт описывают в файле .proto, после чего генератор создаёт клиентский и серверный код для нужных языков программирования.
service UserService {
rpc GetUser(GetUserRequest) returns (UserResponse);
}
message GetUserRequest {
string user_id = 1;
}
message UserResponse {
string id = 1;
string email = 2;
}Особенности gRPC
HTTP/2 multiplexing и долгоживущие соединения;
бинарная сериализация Protocol Buffers;
строгий контракт и code generation;
unary, server streaming, client streaming и bidirectional streaming;
поддержка deadlines, metadata и стандартизированных status codes.
Когда выбрать gRPC
внутренние вызовы между сервисами с высокой частотой;
системы, где важна компактность сообщений и низкая задержка;
многозадачные backend-системы на разных языках;
сценарии streaming: чат, telemetry, live updates, передача больших потоков;
когда важны формальная схема и генерация клиентов.
Когда REST удобнее
публичный API для браузеров и внешних разработчиков;
простая интеграция через HTTP и JSON;
кэширование через стандартные HTTP-механизмы и CDN;
сценарии, где удобны URL-ресурсы, curl и широкая экосистема API-инструментов.
Практика
Часто используют оба подхода: внешний REST API или GraphQL gateway для клиентов, а gRPC — между внутренними сервисами. При gRPC нужно отдельно продумать observability, retries, deadlines, load balancing и graceful handling долгоживущих соединений.
Как ответить на собеседовании
gRPC — RPC-фреймворк на HTTP/2 с Protobuf и генерацией типизированных клиентов. Я выбираю его для высокочастотных внутренних вызовов, streaming и строгих межсервисных контрактов. REST удобнее для публичных JSON API и браузерных клиентов. На практике внешний API часто остаётся REST, а внутреннее взаимодействие реализуется через gRPC.
Оцени свой прогресс