gRPC ( gRPC Remote Procedure Calls [2] ) — это кроссплатформенная высокопроизводительная среда удаленного вызова процедур (RPC). gRPC изначально была создана Google , но имеет открытый исходный код и используется во многих организациях. Варианты использования варьируются от микросервисов до «последней мили» вычислений (мобильные, веб и Интернет вещей). gRPC использует HTTP/2 для транспорта, буферы протоколов в качестве языка описания интерфейса и предоставляет такие функции, как аутентификация, двунаправленная потоковая передача и управление потоком , блокирующие или неблокирующие привязки, а также отмена и тайм-ауты. Он генерирует кроссплатформенные клиентские и серверные привязки для многих языков. Наиболее распространенные сценарии использования включают подключение сервисов в архитектуре стиля микросервисов или подключение клиентов мобильных устройств к бэкэнд-сервисам. [3]
Начиная с 2019 года использование gRPC HTTP/2 делает невозможным реализацию клиента gRPC в браузере, вместо этого требуется прокси-сервер. [4]
Примерно с 2001 года Google создала универсальную инфраструктуру RPC под названием Stubby для соединения большого количества микросервисов, работающих внутри и за пределами ее центров обработки данных . [5] В марте 2015 года Google решила создать следующую версию Stubby и сделать ее с открытым исходным кодом. Результатом стал gRPC.
gRPC поддерживает использование Transport Layer Security (TLS) и аутентификации на основе токенов. Подключение к службам Google должно использовать TLS. Существует два типа учетных данных: учетные данные канала и учетные данные вызова.
Для авторизации на основе токенов gRPC предоставляет Server Interceptor [6] и Client Interceptor [7] .
gRPC использует буферы протоколов для кодирования данных. Буферы протоколов предоставляют формат сериализации и язык определения интерфейса. [8]
Некоторые программные инструменты, используемые для тестирования реализаций gRPC, включают Postman , ezy, [9] Insomnia и Step CI. [10]
Многие организации используют gRPC, включая Uber , [11] Square , Netflix , IBM , CoreOS , Docker , CockroachDB , Arista Networks , Cisco , Juniper Networks , [12] Spotify , [13] Zalando , [14] Dropbox , [15] и Google как оригинальный разработчик.
Проект с открытым исходным кодом u-bmc использует gRPC для замены интеллектуального интерфейса управления платформой (IPMI). [16] 8 января 2019 года Dropbox объявила, что следующая версия «Courier», их фреймворка RPC, лежащего в основе их сервисно-ориентированной архитектуры (SOA), будет переведена на gRPC, в первую очередь потому, что она хорошо согласуется с их существующими пользовательскими фреймворками RPC. [17]