Autor | |
---|---|
Pierwsze wydanie | 0.5.0 – 26 lutego 2015; ponad 9 lat temu |
Aktualna wersja stabilna | 1.59.2 – 31 października 2023; ponad rok temu[1] |
Język programowania | Android Java, C#, C++, Dart, Go, Java, Kotlin/JVM, Node.js, Objective-C, PHP, Python, Ruby |
Platforma sprzętowa | wieloplatformowy |
Rodzaj | protokół RPC |
Licencja | Apache License 2.0 |
Strona internetowa |
gRPC (gRPC Remote Procedure Calls[2]) – wieloplatformowy, otwartoźródłowy oraz wysokowydajny framework protokołu zdalnego wywołania procedury. Został napisany przez Google będąc wersją rozwojową ich wewnętrznego protokołu RPC o nazwie Stubby wykorzystywanego do komunikacji pomiędzy licznymi mikroserwisami działającymi w centrach danych od 2001 roku. W marcu 2015 roku zapadła decyzja o zastąpieniu Stubby nowym protokołem, który miał być tworzony jako otwarte oprogramowanie. Efektem tych prac było wydanie w 2016 roku pierwszej wersji gRPC[3].
gRPC wykorzystuje HTTP/2 jako protokół komunikacyjny oraz Protocol Buffers jako język opisu interfejsu, definiujący również format serializacji i kodowanie danych. W celu uwierzytelniania stosowany jest protokół kryptograficzny TLS. Obsługiwane są dwa typy list uwierzytelniających: kanałowa (ang. channel) oraz wywoławcza (ang. call)[4]. Do autoryzacji dostarczane są dwa typy przechwytywaczy: Service Interceptor oraz Client Interceptor[5].
Ze względu na silne oparcie się o HTTP/2 nie jest możliwa implementacja klienta gRPC w przeglądarce internetowej, w tym celu wymagane jest użycie odpowiedniego proxy[6].
gRPC wykorzystuje się głównie do komunikacji pomiędzy serwisami w architekturze mikroserwisów oraz komunikacji urządzeń mobilnych z serwisami backendowymi[7]. Do swoich rozwiązań produkcyjnych został on zaadaptowany przez między innymi Uber[8], Block, Inc., Netflix, IBM, Docker, Arista Networks, Cisco Systems[9], Spotify[10], Dropbox[11] oraz własnego autora Google.
Otwartoźródłowy project u-bmc wykorzystuje gRPC jako zastępstwo dla Intelligent Platform Management Interface[12].