我们有云托管(Rackspace公司云)Ruby和Java应用程序,将互相配合如下:最快可靠的方式应用程式沟通
- 的Ruby应用程序发送到Java应用程序的请求。请求包含包含字符串,整数,其他映射和列表的映射结构(类似于JSON)。
- Java应用程序分析数据并发送回复到Ruby应用程序。
我们感兴趣的是评估两个邮件格式(JSON,Buffer Protocols,Thrift等)以及消息传输信道/技术(插座,消息队列,RPC,REST,SOAP等)
我们的标准:
- 往返时间短。
- 低往返时间标准偏差。 (我们知道垃圾收集暂停和网络使用率峰值会影响此值)。
- 高可用性。
- 可伸缩性(我们可能希望将来有多个Ruby和Java应用程序交换点对点消息的实例)。
- 易于调试和分析。
- 良好的文档和社区支持。
- Clojure支持奖励积分。
- 良好的动态语言支持。
你会推荐什么消息格式和传输方法的组合?为什么?
我已经在这里聚集,我们已经收集了一些复习材料:
- 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
- Overview of Thrift from Ruby programmer perspective
- Overview of Thrift from Java programmer perspective
- Introduction to MessagePack
- Introduction to BERT by dynamic language enthusiast
- Message Queue Evaluation Notes
- ZeroMQ and Clojure
你真的想可靠性(从标题)?在你所谈论的消息类中,这意味着消息永远不会丢失(并且可能还会以发送的顺序发送消息),这非常昂贵。当然,这里的可靠性指的是甚至抵制诸如反铲攻击(即网络或电力基础设施的物理破坏)之类的事情。我主要更喜欢及时交付,并使应用程序能够抵抗失败,因为这样更容易... – 2010-12-29 23:28:48
嗨,我们希望合理的良好可靠性,并且不关心按订单交付。我们的系统可以容忍偶尔的故障,但保持故障率非常低很重要。 – jkndrkn 2010-12-30 16:51:25