Fastest reliable way for Clojure (Java) and Ruby apps to communicate
Posted
by
jkndrkn
on Stack Overflow
See other posts from Stack Overflow
or by jkndrkn
Published on 2010-12-17T18:18:57Z
Indexed on
2010/12/29
21:54 UTC
Read the original article
Hit count: 192
Hi There,
We have cloud-hosted (RackSpace cloud) Ruby and Java apps that will interact as follows:
- Ruby app sends a request to Java app. Request consists of map structure containing strings, integers, other maps, and lists (analogous to JSON).
- Java app analyzes data and sends reply to Ruby App.
We are interested in evaluating both messaging formats (JSON, Buffer Protocols, Thrift, etc.) as well as message transmission channels/techniques (sockets, message queues, RPC, REST, SOAP, etc.)
Our criteria:
- Short round-trip time.
- Low round-trip-time standard deviation. (We understand that garbage collection pauses and network usage spikes can affect this value).
- High availability.
- Scalability (we may want to have multiple instances of Ruby and Java app exchanging point-to-point messages in the future).
- Ease of debugging and profiling.
- Good documentation and community support.
- Bonus points for Clojure support.
What combination of message format and transmission method would you recommend? Why?
I've gathered here some materials we have already collected for review:
- Comparison of various java serialization options
- Comparison of Thrift and Protocol Buffers (old)
- Comparison of various data interchange formats
- Comparison of Thrift and Protocol Buffers
- Fallacies of Protocol Buffers RPC features
- Discussion of RPC in the context of AMQP (Message-Queueing)
- Comparison of RPC and message-passing in distributed systems (pdf)
- Criticism of RPC from perspective of message-passing fan
- Overview of Avro from Ruby programmer perspective
© Stack Overflow or respective owner