Akka gRPC
gRPC is a transport mechanism for request/response and streaming use cases. It can run in almost any environment with bindings to many programming languages. It takes a schema-first approach, where your protocol is declared in a Protobuf service descriptor . From the service descriptor the source code for the messages, client and server stubs are generated.
It has several advantages:
-
Schema-first design favors well-defined and decoupled service interfaces over brittle ad-hoc solutions.
-
The Protobuf-based wire protocol is efficient, well-known, and allows compatible schema evolution.
-
It is based on HTTP/2 which allows multiplexing several data streams over a single connection.
-
Streaming requests and responses are first class.
-
There are tools available for many languages allowing seamless interoperability between clients and services written in different languages.
That makes it well-suited for:
-
Connections between internal services
-
Connecting to external services that expose a gRPC API (even ones written in other languages)
-
Serving data to web or mobile front-ends
Akka gRPC is a gRPC library for the Akka ecosystem. It has support for Maven, gradle and sbt. The gRPC servers and clients use Akka Streams, Scala Future
and Java CompletionStage
in the user facing API.
Learn more
-
The Introduction to Akka gRPC video is a good starting point for learning Akka gRPC.