gRPC — cross-platform open source RPC over HTTP/2
Written by Manik Surtani.
Heads up, we’ve moved! If you’d like to continue keeping up with the latest technical content from Square please visit us at our new home https://developer.squareup.com/blog
Several months ago, we evaluated open sourcing our proprietary, internal RPC library (which is based on protocol buffers). Along the way, we also decided to move this framework to HTTP/2. Luckily before putting forth too much effort, we learned Google was attempting to open source something similar — and was much further along. We paused our efforts and reached out to Google to see how we could help.
Google looped us in, and we got involved with gRPC, an open source (BSD-licensed) cross-platform library for making remote procedure calls. (This is useful for both client-server communications as well as server-server communications in a microservice architecture.) It’s been a fun process discussing designs, playing with an early implementation, and collaborating to open source gRPC.
You may be thinking, “Another RPC library? What’s wrong with JSON-over-REST?” Well, nothing — except that binary protocols have inherent benefits in terms of bandwidth and CPU efficiency, type safety, and memory footprint. Also, building on top of the recently finalized HTTP/2 specification gives us bidirectional streaming, multiplexed connections, flow control, and header compression.
gRPC is cross-platform too with support for C, C++, Java, Go, Node.js, Python, and Ruby, with libraries for Objective-C, PHP, and C# being planned.
The project is run completely in the open with upstream master repositories on GitHub. Communications (IRC, Google Group) and documentation is all open and public. Please tag StackOverflow questions with “grpc”.
Google blogged about this release too.
We’d love to hear your thoughts on gRPC. Contribute by forking and submitting pull requests, chat with us, and follow @grpcio.