Ответ
gRPC — это современная высокопроизводительная RPC (Remote Procedure Call) платформа с открытым исходным кодом, разработанная Google.
Ключевые принципы и особенности:
-
Использует HTTP/2: В отличие от REST поверх HTTP/1.1, gRPC работает на HTTP/2, что дает:
- Мультиплексирование множества запросов в одном TCP-соединении.
- Бинарный протокол (более компактный и быстрый, чем текстовый JSON).
- Двунаправленная потоковая передача.
-
Использует Protocol Buffers (protobuf) по умолчанию:
- Язык описания интерфейсов (IDL): Сервисы и структуры сообщений определяются в
.proto-файлах. - Эффективная бинарная сериализация: Protobuf намного быстрее и меньше по размеру, чем JSON/XML.
- Генерация кода: Утилита
protocгенерирует клиентский и серверный код на многих языках из.proto-файла.
- Язык описания интерфейсов (IDL): Сервисы и структуры сообщений определяются в
-
Четыре типа вызовов:
- Унарный (Unary): Один запрос — один ответ.
- Серверный поток (Server streaming): Один запрос — поток ответов.
- Клиентский поток (Client streaming): Поток запросов — один ответ.
- Двунаправленный поток (Bidirectional streaming): Поток запросов — поток ответов.
Пример .proto-файла:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
gRPC идеально подходит для внутренней коммуникации между микросервисами, где важны низкая задержка и высокая пропускная способность.