Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

RPC FrameworkSupported LanguagesSerializationTransport LayerServer-Client push?Dynamic type definition?
Avroat least Java, Python, Ruby, C#, C++Binary or JSONtransport-agnosticNoYes
BERTscroll to the bottom on the website to see. NO native Java support (though there is Scala).Erlangtransport-agnostic or BERP (custom)NoNo
gRPC10 (incl. C++,Java,C#,Go)ProtobufHttp2, Java uses NettyYesNo

Apache Thrift

quite a few (incl. C++,Java,C#, (unofficial) Go)CustomPluggable: TTransport interface.NoNo

Raw Socket with

Serialization Framework

See supported languages of the serialization frameworkProtobuf, Avro, Cap n ProtoSocketChannelNoNo

Testing Setup

All perf tests were run on a  4x 2.4Ghz (4-Core), 48Gb RAM.

...

FrameworkIDL Message definition files
Avro (using raw socket)client.avdl
Cap n Proto (using raw socket)protocol.capnp
Protobuf (using raw socket)clientProtocol.proto region_API.proto
GRPC + ProtobufgrpcService.proto clientProtocol.proto region_API.proto 

 

The results can be found in Results.zip. This archive file contains all the results for both testing scenarios, including GFS files for more detailed stats.

Results

1 Server, 1 Client (1 Thread)

 ProtobufAvroCap n ProtoGRPC StreamingGRPC Blocking
Median (msg/s)37593.9849621012.8178223245.0023247370.914266931.447979
Average (msg/s)37040.2269520541.2210923182.097745986.40686868.469895

Image Added

 

 

1 Server, 2 Client (1 Thread)

 
  
     
  
ProtobufAvroCap n ProtoGRPC StreamingGRPC Blocking
Median (msg/s)65307.391540355.2581843851.9591788949.444711974.32611
Average (msg/s)65471.258940375.6038643770.1022583513.3669411933.20999

Image Added