2 ms·
I guess Google wanted to start with a clean slate based on the design principles already established internally (a system called Stubby). gRPC was designed fro
by atombender 9y ago
I guess Google wanted to start with a clean slate based on the design principles already established internally (a system called Stubby).
gRPC was designed from the start for HTTP/2, which comes with some benefits: It's able to work wherever HTTP works (load balancers and proxies), can multiplex calls over a single stream (Thrift on the JVM, where it's most popular, uses a thread per socket), supports cancelation and streaming and so on. gRPC is arguably more opinionated than Thrift here; Thrift is both a serialization format and an RPC mechanism, and for Thrift RPC you can choose between different transports and framings, of which HTTP is just one. gRPC is HTTP-only, and is (at least nominally) serialization-format-agnostic; you could, in principle, use Thrift over gRPC instead of Protocol Buffers, for example. So in this sense, gRPC is more pure and generic than Thrift. (I'm sure Thrift fans might disagree here.)
I haven't actually used Thrift, so maybe someone else can chime in about other reasons gRPC is preferable.