Sobes.tech
Back to questions
Middle
7

Расскажи про протоколы прикладного уровня. Что такое gRPC? Чем отличается от REST?

Companies where asked
YadroYadro

Answer from AI

sobes.tech AI

Протоколы прикладного уровня — это набор правил и форматов, которые определяют, как приложения обмениваются данными. Они работают поверх транспортного уровня (например, TCP) и обеспечивают структуру сообщений и взаимодействия.

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

REST (Representational State Transfer) — архитектурный стиль, основанный на использовании стандартных HTTP-методов (GET, POST, PUT, DELETE) и URI для доступа к ресурсам. Обычно данные передаются в формате JSON или XML.

Основные отличия gRPC от REST:

  • Формат данных: gRPC использует бинарный protobuf, что быстрее и компактнее JSON в REST.
  • Транспорт: gRPC работает поверх HTTP/2 с поддержкой мультиплексирования и стриминга, REST обычно HTTP/1.1.
  • Тип взаимодействия: gRPC поддерживает синхронные и асинхронные вызовы, включая стриминг данных в обе стороны, REST — в основном запрос-ответ.
  • Контракты: gRPC требует определения сервисов и сообщений в protobuf, что обеспечивает строгую типизацию и автогенерацию кода, REST более свободен и не требует жестких контрактов.

Пример gRPC-сервиса на Go:

syntax = "proto3";

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

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Такой сервис генерирует сервер и клиентский код для вызова метода SayHello.