Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

GRPC

Зачем

Alt text

  • поверх Http/2
    • используется одно TCP-соединение, переиспользования одного cокета для нескольких параллельных запросов
    • полного сжатия данных
    • контроль трафика
  • поддержка отмены запроса и таймаутов из коробки
    • сервер может узнать, как об отмене запроса, так и об истечении таймаута и перестать выполнять запрос на своей стороне
  • поддержка как одиночных вызовов, так и стриминга
  • описание сообщений и самих сервисов осуществляется через некий Interface Definition Language или IDL
  • клиент и сервер генерируются при помощи proto-компилятора и gRPC-плагина на основе proto-описания
  • Bi-directional - инициации событий с сервера
  • High perf protobuf binary format

Плюсы и минусы

Плюсы

  • Скорость
  • Строгая типизация, версионность
  • Серверный стриминг
  • поддержка отмены запроса и таймаутов

Минусы

  • Бинарный, сложно отлаживать
  • uses HTTP/2 as a transport protocol, and no native browser support exists
    • Для запросов из браузера требуется библиотека и протокол (grpc-web) и прокси (Envoy или ASP.NET Core gRPC)
    • не полная поддержка протокола (Client-side and Bi-directional streaming)

Паттерны

Утилиты