За счет чего происходит экономия на Decoding и Encoding в gRPC

«За счет чего происходит экономия на Decoding и Encoding в gRPC» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

gRPC использует Protocol Buffers (protobuf) для сериализации данных, что обеспечивает экономию на encoding/decoding благодаря:

  1. Бинарному формату – protobuf кодирует данные в компактный бинарный формат, который меньше по размеру, чем текстовые форматы (JSON/XML).

  2. Схеме данных – заранее определенная схема (.proto файл) позволяет избежать передачи метаданных (имен полей), сокращая объем данных.

  3. Оптимизированному коду – кодогенерация создает эффективные методы сериализации/десериализации, минимизируя накладные расходы.

Пример сравнения с JSON:

// Protobuf (бинарный, компактный)
message User {
  string name = 1;
  int32 age = 2;
}

// JSON (текстовый, избыточный)
{"name": "Alice", "age": 30}

Также gRPC использует HTTP/2, что уменьшает накладные расходы на транспортном уровне.