> Как клиенты на разных языках используют протокол gRPC (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

Клиенты на разных языках используют gRPC через единый механизм: определение сервиса в .proto файле, генерацию кода для целевого языка с помощью protoc, и последующую реализацию клиента/сервера на сгенерированных заглушках (stubs). В Go, например, это выглядит так:

  1. Определение сервиса (например, hello.proto):

    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloReply);
    }
  2. Генерация Go-кода:

    BASH
    protoc --go_out=. --go-grpc_out=. hello.proto
  3. Клиент на Go:

    GO
    conn, _ := grpc.Dial("localhost:50051", grpc.WithInsecure())
    defer conn.Close()
    client := pb.NewGreeterClient(conn)
    resp, _ := client.SayHello(ctx, &pb.HelloRequest{Name: "Мир"})

Клиенты на Python, Java, C# и других языках следуют аналогичному паттерну: генерируют классы/функции из того же .proto файла и вызывают методы с теми же типами данных. Это обеспечивает полную интероперабельность - сервер на Go может обслуживать клиент на Python, а клиент на C# - сервер на Java, при условии использования одинаковых прото-определений и сериализации Protobuf.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью