Srujan Narkedamalli created AVRO-2172:
-----------------------------------------

             Summary: Avro over gRPC (Java Implementation)
                 Key: AVRO-2172
                 URL: https://issues.apache.org/jira/browse/AVRO-2172
             Project: Avro
          Issue Type: New Feature
          Components: java
            Reporter: Srujan Narkedamalli


We (wavefront/VMware) have implemented a java library/module for using RPC 
defined using Avro (.avdl/.avpr) over gRPC, and would like to contribute this 
to Apache Avro. gRPC provides ability to build streaming RPC and also in terms 
of Java implementation its built on recent version of Netty (4.x).  

Overview of our Avro-gRPC Java Implementation:

gRPC by default provides support for Protobuf  IDL and the APIs are tuned 
towards it. Following are main differences in gRPC API/Protobuf and Avro's RPC 
IDL that our library bridges:
 * Protobuf/gRPC supports only single argument for RPC request vs Avro's 
multiple arguments. This is handled in serialization logic.
 * Protobuf/gRPC does not support throwing typed exceptions over wire natively. 
Avro’s typed RPC exceptions are handled in the serialization logic.
 * Protobuf/gRPC does not support one-way RPC. We don’t avoid doing round-trip 
to server but respond back with null response as soon as request is received at 
server, and then invoke the server implementation.
 * gRPC provides RPC code generation for Protobuf. For Avro, we use the current 
minimal code generation, and provide Client and Server Invocation handlers.

 

Can we have this as a new artifact/maven child project in Avro Java project 
with a name something like `avro-grpc` ?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to