GRPC

gRPC
Autor Google
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].

Charakterystyka

[edytuj | edytuj kod]

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].

Wykorzystanie

[edytuj | edytuj kod]

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].

Przypisy

[edytuj | edytuj kod]
  1. Releases - grpc/grpc. GitHub. [dostęp 2023-11-13].
  2. FAQ. gRPC. [dostęp 2023-11-13].
  3. Varun Talwar: gRPC: a true internet-scale RPC framework is now 1.0 and ready for production deployments. Google Cloud, 2016-08-24. [dostęp 2023-11-13].
  4. Authentication. gRPC. [dostęp 2023-11-13].
  5. gRPC interceptors with Java. The Code Data, 2023-02-27. [dostęp 2023-11-13].
  6. Johan Brandhorst: The state of gRPC in the browser. gRPC Blog, 2019-01-08. [dostęp 2023-11-13].
  7. About. gRPC. [dostęp 2023-11-13].
  8. The Architecture of Uber’s API gateway. Uber Blog, 2021-05-19. [dostęp 2023-11-13].
  9. Getting Started With gRPC in Cisco IOS XR. CoscoDevNet GitHub. [dostęp 2023-11-13].
  10. Adopting gRPC at Spotify. JFokus, 2019-02-06. [dostęp 2023-11-13].
  11. Alexey Ivanov, Oleg Guba: How we migrated Dropbox from Nginx to Envoy. Dropbox.Tech, 2020-06-30. [dostęp 2023-11-13].
  12. u-bmc. GitHub. [dostęp 2023-11-13].

Linki zewnętrzne

[edytuj | edytuj kod]