Что такое gRPC и каковы его основные принципы работы?

«Что такое gRPC и каковы его основные принципы работы?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

gRPC — это современная высокопроизводительная RPC (Remote Procedure Call) платформа с открытым исходным кодом, разработанная Google.

Ключевые принципы и особенности:

  1. Использует HTTP/2: В отличие от REST поверх HTTP/1.1, gRPC работает на HTTP/2, что дает:

    • Мультиплексирование множества запросов в одном TCP-соединении.
    • Бинарный протокол (более компактный и быстрый, чем текстовый JSON).
    • Двунаправленная потоковая передача.
  2. Использует Protocol Buffers (protobuf) по умолчанию:

    • Язык описания интерфейсов (IDL): Сервисы и структуры сообщений определяются в .proto-файлах.
    • Эффективная бинарная сериализация: Protobuf намного быстрее и меньше по размеру, чем JSON/XML.
    • Генерация кода: Утилита protoc генерирует клиентский и серверный код на многих языках из .proto-файла.
  3. Четыре типа вызовов:

    • Унарный (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 идеально подходит для внутренней коммуникации между микросервисами, где важны низкая задержка и высокая пропускная способность.