В чем разница между gRPC и Restful

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

Ответ

gRPC и REST — это два разных подхода к API.

REST — это архитектурный стиль, работающий поверх HTTP/1.1, использует JSON/XML для передачи данных. Он прост, человекочитаем и кэшируем, но может быть медленным из-за текстовых форматов.

gRPC — это фреймворк RPC от Google, работающий поверх HTTP/2. Использует бинарный Protocol Buffers (Protobuf) для сериализации, что делает его быстрее и компактнее. Поддерживает двунаправленные стримы (streaming).

Пример gRPC (Protobuf):

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

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

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

  • Протокол: HTTP/1.1 (REST) vs HTTP/2 (gRPC)
  • Формат данных: JSON/XML (REST) vs Protobuf (gRPC)
  • Производительность: gRPC быстрее из-за бинарного формата
  • Поддержка стримов: только gRPC
  • Инструменты: REST проще для отладки (curl), gRPC требует генерации кода