Sobes.tech
Назад к вопросам
Senior
3

Расскажи про gRPC: как работает, в чём преимущества перед REST

Компании, где спрашивали
Сбер Право

Ответ от нейросети

sobes.tech AI

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

Как работает:

  • Клиент вызывает методы, определённые в protobuf-файле, как если бы они были локальными.
  • Запрос сериализуется в компактный бинарный формат protobuf и отправляется по HTTP/2.
  • Сервер десериализует запрос, выполняет логику и возвращает ответ в protobuf.

Преимущества перед REST:

  • Производительность: бинарный протокол и HTTP/2 обеспечивают меньшую задержку и меньший размер сообщений.
  • Строгая типизация: protobuf описывает контракт API, что снижает ошибки и упрощает генерацию кода.
  • Поддержка потоков: gRPC поддерживает серверные, клиентские и двунаправленные стримы, чего нет в классическом REST.
  • Автоматическая генерация кода: для многих языков, включая Java, что ускоряет разработку.

Пример простого gRPC-сервиса на Java:

// Определение сервиса в protobuf
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// Реализация сервиса
public class GreeterImpl extends GreeterGrpc.GreeterImplBase {
  @Override
  public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
    HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build();
    responseObserver.onNext(reply);
    responseObserver.onCompleted();
  }
}

Таким образом, gRPC отлично подходит для микросервисной архитектуры, где важна высокая производительность и чёткий контракт между сервисами.