// личный канал‑лог
gavrilovlog
← все записи

gRPC (Remote Procedure Call) - это протокол удаленного вызова функций, который…

👁 7509
Этот протокол позволяет создавать связи между сервисами используя синхронные и асинхронные операции. Основа gRPC это HTTP/2 и исопльзование формата сериализации данных Protocol Buffers (protobuf) для обмена данными между клиентом и сервером. Как это работает? 1. Определение контракта: Сначала определяем контракт взаимодействия между клиентом и сервером с использованием языка определения интерфейса Protocol Buffers (protobuf). В этом контракте определяются структуры данных и сигнатуры функций (называемые RPC). 2. Компиляция: Protobuf компилируются с использованием специального компилятора, который генерирует код на выбранном языке программирования для клиента и сервера. Этот код включает структуры данных и методы-заглушки для работы с удаленными вызовами процедур. 3. Реализация: Заполняем методы-заглушки, созданные на этапе компиляции. А со стороны клиента, разработчики вызывают эти же методы, как будто они являются локальными. 4. Взаимодействие: Когда клиент делает вызов RPC, gRPC клиентская библиотека сериализует данные в бинарный формат Protocol Buffers и отправляет их на сервер с использованием протокола HTTP/2. Сервер принимает запрос, десериализует данные и вызывает соответствующую функцию. После выполнения функции, сервер сериализует ответ обратно в protobuf и отправляет его клиенту по HTTP/2. Где можно использовать gRPC: 1. Микросервисная архитектура: gRPC очень полезен для взаимодействия между микросервисами в распределенной системе. 2. Клиент-серверное взаимодействие: gRPC позволяет клиентам и серверам из различных языков программирования и платформ взаимодействовать между собой. 3. Потоковая передача данных: gRPC поддерживает двунаправленную потоковую передачу данных между клиентами и серверами. 4. Интеграция с сервисами Google Cloud: gRPC является основным протоколом для взаимодействия с различными сервисами Google Cloud, такими как Cloud Spanner, Cloud Datastore и Cloud Pub/Sub.
721