我们有云托管(RackSpace云)的Ruby和Java应用程序,它们将按以下方式进行交互:
我们的标准:
我建议选择使用Thrift作为消息格式,并使用RabbitMQ作为消息传输通道。因为Thrift文件定义语言简单易懂,具有极高的性能,并支持多种编程语言。而RabbitMQ则是一个可靠、可扩展、高可用、易于使用和部署的消息代理平台,它支持多种消息传输模式,如发布/订阅、点对点和RPC。Thrift和Protocol Buffers的比较
Protocol Buffers RPC功能的谬论
在AMQP(消息队列)上下文中讨论RPC
比较分布式系统中的RPC和消息传递(pdf)
从消息传递粉丝的角度批评RPC
从Ruby程序员的角度概述Avro
从Ruby程序员的角度概述Thrift
从Java程序员的角度概述Thrift
介绍MessagePack
动态语言爱好者介绍BERT
消息队列评估笔记 ZeroMQ和Clojure
- Ruby应用程序向Java应用程序发送请求。请求包含映射结构,包含字符串、整数、其他映射和列表(类似于JSON)。
- Java应用程序分析数据并将回复发送给Ruby应用程序。
我们的标准:
- 短的往返时间。
- 低的往返时间标准差。(我们知道垃圾回收暂停和网络使用峰值可能会影响这个值)。
- 高可用性。
- 可扩展性(我们未来可能想要有多个Ruby和Java应用程序实例交换点对点消息)。
- 易于调试和分析性能。
- 良好的文档和社区支持。
- 如果支持Clojure,则额外加分。
- 良好的动态语言支持。
我建议选择使用Thrift作为消息格式,并使用RabbitMQ作为消息传输通道。因为Thrift文件定义语言简单易懂,具有极高的性能,并支持多种编程语言。而RabbitMQ则是一个可靠、可扩展、高可用、易于使用和部署的消息代理平台,它支持多种消息传输模式,如发布/订阅、点对点和RPC。