Компания Google представила новый высокопроизводительный RPC-фреймворк gRPC, позволяющий организовать прозрачное взаимодействие клиентских и серверных приложений. Сетевое взаимодействие в gRPC базируется на применении протокола HTTP/2. gRPC позволяет создавать микросервисы на различных языках программирования, которые взаимодействуют между собой при помощи универсального API. Код фреймворка написан на языке Си и распространяется под лицензией BSD. Обвязки подготовлены для языков C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Go и Java.

Для определения формата передаваемых сообщений и генерации клиентского и серверного кода по умолчанию предлагается использовать язык описания интерфейсов (IDL), предлагаемый инструментарием Protocol Buffers. В дальнейшем планируется обеспечить в gRPC поддержку и других форматов, таких как JSON, Thrift и XML. Поддерживается как синхронная, так и асинхронная обработка запросов. Одновременно с gRPC компания Google представила третью версию протокола сериализации данных Protocol Buffers, в котором среди прочего добавлены новые типы полей и появилась поддержка маппинга в формат JSON. gRPC уже активно применяется в облачных продуктах Google и будет использован для организации доступа к большинству публичных сервисов Google.

Новая система изначально развивалась с оглядкой на высокие требования к масштабируемости и надёжности инфраструктуры Google, обеспечивающей выполнение десятков миллиардов запросов в секунду. Из особенностей gRPC отмечается минимальное время задержки, высокая масштабируемость, возможность использования в распределённых системах, поддержка применения для организации взаимодействия мобильных клиентов с облачными сервисами, независимость от используемых языков программирования, пригодность для использования в приложениях реального времени и в "умных" устройствах, многослойная архитектура, позволяющая подключать в виде расширений новые методы аутентификации, балансировки нагрузки, журналирования и мониторинга.

Источник: http://www.opennet.ru/opennews/art.shtml?num=41737