-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
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.
|
Co-authored-by: kenji yoshida <6b656e6a69@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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: