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