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

Был ли у тебя опыт с gRPC и GraphQL? Расскажи про них.

Компании, где спрашивали
X5 techX5 tech

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

sobes.tech AI

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

GraphQL — это язык запросов к API и среда выполнения, позволяющая клиенту запрашивать ровно те данные, которые нужны, без избыточности. В отличие от REST, где сервер определяет структуру ответа, в GraphQL клиент формирует запросы динамически. В Go можно использовать библиотеки, такие как gqlgen, для генерации серверной части.

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

// proto файл
syntax = "proto3";
package example;

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

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Реализация сервера:

func (s *server) SayHello(ctx context.Context, req *example.HelloRequest) (*example.HelloReply, error) {
    return &example.HelloReply{Message: "Hello " + req.Name}, nil
}

GraphQL пример запроса:

query {
  user(id: "123") {
    id
    name
    email
  }
}

Таким образом, gRPC хорошо подходит для высокопроизводительных внутренних сервисов, а GraphQL — для гибких API с разнообразными клиентами.