> Как сервер и клиент используют proto-файл в gRPC (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
В gRPC proto-файл является единым источником истины (single source of truth) для описания сервисов и сообщений. Процесс использования выглядит так:
-
Определение сервиса в proto-файле - описываются RPC-методы (например,
rpc SayHello(HelloRequest) returns (HelloResponse)) и структуры данных с помощью Protocol Buffers. -
Генерация кода - с помощью компилятора
protocи плагинов (protoc-gen-go, protoc-gen-go-grpc) из proto-файла генерируются Go-пакеты:-
Для сервера: интерфейс сервиса (например,
GreeterServer) с методами, которые нужно реализовать, и вспомогательные функции для регистрации сервиса в gRPC-сервере. -
Для клиента: структура-клиент (например,
GreeterClient) с готовыми методами для вызова удалённых процедур, а также типы сообщений (структуры Go) для сериализации/десериализации.
-
-
На стороне сервера - разработчик реализует сгенерированный интерфейс, заполняя логику методов. Затем создаётся gRPC-сервер, на котором регистрируется реализованный сервис. Сервер слушает порт и обрабатывает входящие запросы, используя сгенерированные типы для парсинга сообщений.
-
На стороне клиента - создаётся gRPC-подключение к серверу, через него инициализируется сгенерированный клиент. Клиент вызывает методы, передавая сгенерированные структуры запросов, и получает структуры ответов. Вся сериализация/десериализация и управление HTTP/2-соединением скрыты внутри сгенерированного кода.
Таким образом, proto-файл обеспечивает строгую типизацию и совместимость между сервером и клиентом: изменения в proto требуют перегенерации кода на обеих сторонах, что предотвращает рассогласование API.
> Похожие задачи по backend
Что такое protobuf и как он используется в gRPC
Как клиенты на разных языках используют протокол gRPC
Что такое len и cap в слайсах Go и как они работают
Для чего нужны два экстра бита внутри бакета map Go и как они используются
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью