В чем разница между gRPC и HTTP/1.1 Keep-Alive

«В чем разница между gRPC и HTTP/1.1 Keep-Alive» — вопрос из категории API и интеграции, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

gRPC использует HTTP/2, который поддерживает мультиплексирование (одновременные запросы через одно соединение), бинарный протокол и серверные push-уведомления. HTTP/1.1 Keep-Alive лишь повторно использует TCP-соединение для нескольких последовательных запросов, но не устраняет проблему head-of-line blocking.

Пример gRPC (бинарный protobuf):

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

HTTP/1.1 Keep-Alive просто уменьшает накладные расходы на установку соединения:

GET /resource HTTP/1.1
Host: example.com
Connection: keep-alive

Ключевые отличия:

  • gRPC: бинарный, потоковый, мультиплексированный
  • HTTP/1.1 Keep-Alive: текстовый, последовательный, без мультиплексирования