Site icon AppTractor

Что такое gRPC

gRPC — это фреймворк, разработанный компанией Google для удаленных вызовов процедур (remote procedure calls). Он был открыт в 2015 году и с тех пор стал чрезвычайно популярным за пределами Google. Он построен на HTTP/2 и использует протобуферы.

За последнее десятилетие архитектуры, ориентированные на сервисы, становились все более популярными по мере роста инженерных команд (трудно координировать 3000 инженеров вокруг одного монолита).

Как вы понимаете, все эти сервисы должны каким-то образом взаимодействовать друг с другом. Два популярных архитектурных стиля, которые решают эту проблему, — REST (Representative State Transfer) и RPC (Remote Procedure Calls).

gRPC — это фреймворк, разработанный в Google, который широко используется для реализации RPC.

Обратите внимание — «g» в gRPC не означает Google. Это небольшая шутка: в каждом выпуске g обозначает что-то другое. До сих пор g обозначало gizmo, gandalf, godric, gangnam, great, gringotts и многое другое.

Основные характеристики gRPC

  1. Простота в использовании: gRPC обеспечивает простой и понятный способ определения служб и сообщений с использованием Protocol Buffers (Protobuf) — простого, мощного и универсального механизма для сериализации структурированных данных.
  2. Высокая производительность: gRPC использует HTTP/2 для передачи данных, что обеспечивает множество преимуществ, таких как мультиплексирование запросов, сжатие заголовков и тела сообщений, а также поддержку двунаправленной связи.
  3. Поддержка множества языков программирования: gRPC поддерживает множество языков программирования, включая C, C++, C#, Dart, Go, Java, JavaScript (Node.js), Kotlin, Objective-C, PHP, Python, Ruby и многие другие.
  4. Поддержка различных платформ: gRPC поддерживает разработку на различных платформах, включая Linux, Windows, macOS, Android и iOS.
  5. Кодирование сообщений: gRPC использует Protocol Buffers для определения формата сообщений и автоматической генерации кода для их сериализации и десериализации.

gRPC широко используется для построения микросервисных архитектур, IoT-систем, распределенных вычислений и других приложений, требующих эффективного взаимодействия между компонентами через сеть.

Как работает gRPC

gRPC основан на простой идее вызова удаленных процедур (Remote Procedure Call, RPC), но с использованием современных технологий и протоколов для обеспечения высокой производительности и надежности. Вот основные шаги, которые происходят при работе с gRPC:

  1. Определение интерфейса: Сначала определяется интерфейс службы и структура данных, используя специальный язык описания интерфейсов (IDL), такой как Protocol Buffers (Protobuf). Этот файл содержит описания методов, которые служба предоставляет, а также форматы сообщений, которые используются для передачи данных.
  2. Создание сервера: На основе определенного интерфейса создается сервер, который реализует этот интерфейс. Сервер слушает определенный порт и ждет запросов от клиентов.
  3. Создание клиента: Также на основе определенного интерфейса создается клиент, который умеет формировать запросы к серверу, отправлять их через сеть и обрабатывать ответы.
  4. Установление соединения: Когда клиент готов отправить запрос, он устанавливает соединение с сервером. Обычно используется протокол HTTP/2, который обеспечивает мультиплексирование запросов и другие оптимизации для повышения производительности.
  5. Передача данных: Клиент формирует запрос, сериализует его в соответствии с выбранным протоколом (например, Protobuf), отправляет через сеть на сервер, который десериализует запрос и вызывает соответствующий метод. Сервер обрабатывает запрос и формирует ответ, который также сериализуется и отправляется обратно клиенту.
  6. Обработка ответа: Клиент получает ответ от сервера, десериализует его и возвращает результат вызывающему коду.

Важно отметить, что gRPC поддерживает различные типы RPC вызовов, такие как унисокетные (Unary), стриминговые (Server streaming, Client streaming, Bidirectional streaming) и др. Это позволяет реализовывать разнообразные сценарии взаимодействия между клиентом и сервером, включая передачу потоков данных и использование двунаправленной связи.

В чем разница между REST и gRPC?

Это просто два различных подхода к построению распределенных систем и взаимодействию между клиентом и сервером. Вот основные различия между ними.

Протокол связи:

Формат данных:

Типы запросов:

Языки программирования:

Сложность:

Выбор между REST и gRPC зависит от требований вашего проекта, архитектурных предпочтений и конкретных задач, которые вы пытаетесь решить.

Ссылки

Exit mobile version