airframe-grpc: Support gRPC backend#1192
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1192 +/- ##
==========================================
+ Coverage 82.95% 83.03% +0.08%
==========================================
Files 283 288 +5
Lines 10962 11018 +56
Branches 727 740 +13
==========================================
+ Hits 9093 9149 +56
Misses 1869 1869
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
@xerial I don't have any comments on the implementation for now. Rather, I would like to ask a question about the motivation of this gRPC backend. In my understanding, one of major advantages of gRPC is interoperability with many other languages based on ProtocolBuffer. Can we offer or leverage this advantage with this backend?
For example, if we can generate Protobuf-IDL from Airframe-RPC endpoint definition, we might be able to benefit from gRPC interoperability by implementing MessagePack marshaller for other languages.
|
Good point! The initial motivation is leveraging HTTP2 and server/client-side streaming of gRPC so that we can build fast and interactive RPC services. Generating a Protobuf IDL from an Airframe RPC interface looks promising and should be easy. What we need to do will be adding a filter for converting Protobuf requests into MessagePack requests (like airframe-codec) to call RPC methods. Then we can leverage existing gRPC client generators for various programming languages. I think most of the people who are already familiar with gRPC will be interested in this direction (Airframe RPC -> Protobuf IDL -> Protobuf gRPC client). For Scala/Java users, we need to provide sbt-airframe Airframe gRPC client generator, which should be the most efficient client implementation. |
shimamoto
left a comment
There was a problem hiding this comment.
Looks good so far. In terms of Airframe RPC, I think it's great to use this in almost the same manner.
Added an experimental implementation of gRPC backend:
TODO in another PR: