Jump to content

gRPC

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 86.183.132.15 (talk) at 09:45, 30 November 2022. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

gRPC
Developer(s)Google
Initial releaseAugust 2016; 8 years ago (2016-08)
Stable release
1.49.1[1] / September 22, 2022; 2 years ago (2022-09-22)
Repository
Written inAndroid Java, C#, C++, Dart, Go, Java, Kotlin/JVM, Node.js, Objective-C, PHP, Python, Ruby
TypeRemote procedure call framework
LicenseApache License 2.0
Websitegrpc.io

gRPC (Google Remote Procedure Calls[2]) is a cross-platform open source high performance Remote Procedure Call (RPC) framework. gRPC was initially created by Google, which has used a single general-purpose RPC infrastructure called Stubby to connect the large number of microservices running within and across its data centers for over a decade[when?]. In March 2015, Google decided to build the next version of Stubby and make it open source. The result was gRPC, which is now used in many organizations outside of Google to power use cases from microservices to the “last mile” of computing (mobile, web, and Internet of Things). It uses HTTP/2 for transport, Protocol Buffers as the interface description language, and provides features such as authentication, bidirectional streaming and flow control, blocking or nonblocking bindings, and cancellation and timeouts. It generates cross-platform client and server bindings for many languages. Most common usage scenarios include connecting services in a microservices style architecture, or connecting mobile device clients to backend services.[3]

gRPC's complex use of HTTP/2 makes it impossible to implement a gRPC client in the browser, instead requiring a proxy.[4]

Authentication

gRPC supports the usage of TLS and token-based authentication. Connection to Google services must use TLS. There are two types of credentials: channel credentials and call credentials.[5]

Encoding

gRPC uses Protocol Buffers to encode data. Contrary to REST APIs with JSON, they have a more strict specification. Due to having a single specification, gRPC eliminates debate and saves developer time because gRPC is consistent across platforms and implementations.[6]

Adoption

A number of different organizations have adopted gRPC, such as Uber,[7] Square, Netflix, IBM, CoreOS, Docker, CockroachDB, Cisco, Juniper Networks,[8] Spotify,[9] Zalando,[10] Dropbox,[11] and Google as the original developer.

The open source project u-bmc uses gRPC to replace IPMI.[12] On 8 January 2019, Dropbox announced that the next version of "Courier", their RPC framework at the core of their service-oriented architecture (SOA), would be migrated to be based on gRPC, primarily because it aligned well with their existing custom RPC frameworks.[13]

See also

References

  1. ^ "gRPC releases". GitHub. Retrieved 2022-10-10.
  2. ^ "FAQ". gRPC.
  3. ^ "About gRPC". gRPC. Retrieved 2021-05-25.
  4. ^ "The state of gRPC in the browser". gRPC. 8 January 2019.
  5. ^ "gRPC". grpc.io. Retrieved 2020-02-24.
  6. ^ JamesNK. "Compare gRPC services with HTTP APIs". docs.microsoft.com. Retrieved 2020-02-24.
  7. ^ "gRPC at Uber". 19 May 2021.
  8. ^ "gRPC". grpc.io. Retrieved 2020-02-24.
  9. ^ "gRPC at Spotify" (PDF). jfokus.se. Retrieved 2020-05-12.
  10. ^ "Zalando Tech Radar". opensource.zalando.com. Retrieved 2021-04-08.
  11. ^ "How we migrated Dropbox from Nginx to Envoy". Dropbox.Tech. Retrieved 2020-10-30.
  12. ^ "u-bmc". GitHub.com. 5 October 2022.
  13. ^ Nigmatullin, Ruslan; Ivanov, Alexey (2019-01-08). "Courier: Dropbox migration to gRPC". Retrieved 2019-01-09.