> Как клиенты на разных языках используют протокол gRPC (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
Клиенты на разных языках используют gRPC через единый механизм: определение сервиса в .proto файле, генерацию кода для целевого языка с помощью protoc, и последующую реализацию клиента/сервера на сгенерированных заглушках (stubs). В Go, например, это выглядит так:
-
Определение сервиса (например,
hello.proto):service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } -
Генерация Go-кода:
BASHprotoc --go_out=. --go-grpc_out=. hello.proto -
Клиент на Go:
GOconn, _ := 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.
> Похожие задачи по backend
Как устроена передача сообщений в gRPC
Что такое protobuf и как он используется в gRPC
Как сервер и клиент используют proto-файл в gRPC
Что такое len и cap в слайсах Go и как они работают
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью