You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Network protocol design is hard to get exactly right, and networking/serialization code has high standards of correctness – all the other code in a project depends on the right data getting sent across the wire. If you're trying to communicate between programs written in multiple languages, that code has to be written (and tested, and maintained) separately in each language.

RPC frameworks offer a nice solution to this problem: write the interface you want your messaging to take in some Interface Definition Language (IDL), and then compile it to working (and hopefully idiomatic) code in a multitude of languages.

However, there are drawbacks: we don't control the implementation, which means it is hard to optimize for performance.

RPC FrameworkSupported LanguagesSerializationTransport Layer 
Avro    
BERT Erlang  
gRPCa lot (incl C++,Java,C#,Go)ProtobufNetty 

Apache Thrift

quite a few (incl C++,Java,C#, (unofficial) Go)CustomPluggable (NIO,  
  • No labels