Маршалинг — процесс преобразования параметров и удаленной функции в пакет, который отправляется по сети. В результате данный пакет преобразуется в вызов метода.
Преимущества, предоставляемые технологией gRPC, — залог ее популярности. Некоторые из них перечислены ниже.
• Высокая эффективность. Вместо текстовых форматов, таких как JSON или XML, для взаимодействия с сервисами и клиентами gRPC использует двоичный протокол на основе Protocol Buffers. Кроме того, Protocol Buffers в gRPC работает поверх HTTP/2, что еще больше ускоряет межпроцессное взаимодействие. Благодаря этому gRPC — одна из самых эффективных технологий IPC.
• Простые, четкие интерфейсы и форматы сообщений. gRPC исповедует контрактный подход к разработке приложений. Сначала определяются интерфейсы сервисов, и только потом начинается работа над их реализацией. Поэтому, в отличие от OpenAPI/Swagger (для REST-сервисов) и WSDL (для веб-сервисов SOAP), gRPC делает процесс разработки приложений простым, но в то же время согласованным, надежным и масштабируемым.
• Сильная типизация. Поскольку для определения gRPC-сервисов используется Protocol Buffers, их контракты однозначно определяют типы данных, которыми будут обмениваться приложения. Это делает разработку распределенных приложений куда более стабильной, поскольку статическая типизация позволяет избежать большинства ошибок выполнения и совместимости, возникающих в ситуациях, когда облачно-ориентированные проекты создаются сразу несколькими командами и с помощью разных технологий.
• Многоязычие. Протокол gRPC рассчитан на поддержку многих языков программирования. Protocol Buffers позволяет определять gRPC-сервисы без привязки к конкретному языку. Поэтому вы можете взаимодействовать с любым существующим gRPC-сервисом или клиентом, используя тот язык, который вам нравится.
• Двунаправленная потоковая передача. gRPC имеет встроенную поддержку потоковой передачи на стороне клиента и сервера, интегрированную непосредственно в сервис. Это существенно упрощает разработку потоковых сервисов и клиентов. Возможность реализовывать как традиционный обмен сообщениями вида «запрос — ответ», так и потоковую передачу данных между клиентом и сервером — ключевое преимущество gRPC перед традиционным архитектурным стилем REST.
• Встроенные практичные возможности. gRPC имеет встроенную поддержку таких часто используемых возможностей, как аутентификация, шифрование, устойчивость (крайние сроки, время ожидания), обмен метаданными, сжатие, балансировка нагрузки, обнаружение сервисов и т.д. (мы исследуем их в главе 5).
• Интеграция с облачно-ориентированными экосистемами. gRPC входит в фонд CNCF и напрямую поддерживается в большинстве современных фреймворков и технологий. В частности, многие проекты, принадлежащие к CNCF (например, Envoy; oreil.ly/vGQsj), используют gRPC в качестве коммуникационного протокола. Технология gRPC совместима со многими инструментами, предоставляющими такие стандартные возможности, как сбор метрик и мониторинг (например, для мониторинга gRPC-приложений можно задействовать Prometheus; oreil.ly/AU3-7).
• Зрелость и широкая распространенность. Зрелость проекта gRPC обусловлена его активным использованием в Google и внедрением другими крупными технологическими компаниями, такими как Square, Lyft, Netflix, Docker, Cisco и CoreOS.
Как и любая другая технология, gRPC имеет не только преимущества, но и недостатки. Понимание последних в процессе разработки приложений может оказаться весьма полезным. Поэтому рассмотрим некоторые ограничения, характерные для gRPC.
Маршалинг — процесс преобразования параметров и удаленной функции в пакет, который отправляется по сети. В результате данный пакет преобразуется в вызов метода.
можете сгенерировать клиентский код (или клиентскую заглушку), инкапсулирующий низкоуровневые аспекты коммуникационного протокола в разных языках программирования.
На основе спецификации сервиса можно сгенерировать серверный код (или серверный каркас), который упрощает создание логики на серверной стороне за счет предоставления абстракций для низкоуровневого взаимодействия.
gRPC в основном использует синхронные запросы и ответы, но вместе с тем имеет полностью асинхронный или потоковый режим, доступный после установления соединения
gRPC (значение буквы g меняется с каждой новой версией (oreil.ly/IKCi3)) — технология межпроцессного взаимодействия, позволяющая соединять, вызывать, администрировать и отлаживать распределенные гетерогенные приложения в стиле, который по своей простоте мало чем отличается от вызова локальных функций.
gRPC в основном использует синхронные запросы и ответы, но вместе с тем имеет полностью асинхронный или потоковый режим, доступный после установления соединения