开发学院,分享开发教程和最新动态

RocketMQ 为什么选择RocketMQ?

翻译声明

  本教程翻译自apache RocketMQ官网,源地址:http://rocketmq.apache.org/docs/quick-start/,翻译时间为,2019年1月4日,文章源以当天为准。个人能力限制,如果翻译的不准确或者有错误还望指正,个人邮箱:serfan@163.com,。

动机

  在早期阶段,我们构建了基于ActiveMQ 5.x之前)的分布式消息中间件。我们的跨国企业将它用于异步通信、搜索、社交网络活动流、数据管道,甚至在贸易过程中。随着我们的贸易业务吞吐量增加,来自我们的消息传递集群的压力也变得紧迫。

为什么选择RocketMQ?

  根据我们的研究,随着队列和 topic的增加,ActiveMQ IO模块遇到了瓶颈。我们尽力通过节流、断路或降级来解决这个问题,但效果不佳。所以我们开始关注当时流行的消息传递解决方案Kafka。不幸的是,Kafka无法满足我们的要求,特别是在低延迟和高可靠性方面。

  在这种情况下,我们决定开发一种新的消息引擎来处理更广泛的用例,从传统的发布/订阅场景到大容量实时零损失容忍交易系统。我们相信这个解决方案是有益的,所以我们希望向社区开放源代码。如今,超过100家公司在其业务中使用开源版本的RocketMQ。我们还发布了一份基于RocketMQ的商业发行,这是一款名为阿里巴巴云平台的PaaS产品。

  下表展示了RocketMQ、ActiveMQ和Kafka ( Apache根据awesome - java最流行的消息传递解决方案)之间的比较:

RocketMQ vs. ActiveMQ vs. Kafka

  请注意,本文档是由RocketMQ团队编写的。尽管理想是对技术和特性进行公正的比较,但作者的专业知识和偏见显然更青睐RocketMQ。

  下表是快速查找RocketMQ和它最受欢迎的替代品之间差异的便捷参考。

产品
sdk协议规范有序消息预定消息批量消息广播信息
消息过滤服务器触发的重新传递信息存储信息追溯优先级高可用性和故障转移
消息跟踪配置管理和操作工具
ActiveMQ

java

 .NET

C++等

推送模型,支持

OpenWire, 

STOMP, 

AMQP,

 MQTT, 

JMS

独占消费者或独占消费者或独占队列支持不支持支持支持不支持支持支持支持不支持默认为低级,需优化配置支持
KafkaJava, Scala等拉取模型,支持TCP确保分区内消息的排序不支持支持不支持支持不支持高性能文件存储支持偏移量指示不支持支持,需要zookeeper不支持使用键值对进行配置支持
RocketMQJava, C++, Go拉取模型,支持TCP,JMS,OpenMessaging严格的消息排序支持支持支持支持支持支持不支持