为什么是RocketMQ(翻译)-阿里云开发者社区

开发者社区> 开发与运维> 正文

为什么是RocketMQ(翻译)

简介: 低延迟,高可用,不依赖zookeeper类组件

动机

在早期阶段,我们构建分布式中间件基于ActiveMQ 5.x(早于 5.3)。我们的国际业务将其用于异步通信,搜索,社交网络活动流,数据管道,甚至在其交易流程中。随着我们的交易业务吞吐量增加,源自我们的消息集群的压力也变得迫切。

为什么是RocketMQ

基于我们的研究,随着使用的队列和虚拟主题的增加,ActiveMQ IO 模块成为了瓶颈。 我们尽力通过节流,断路器或降级解决这个问题,但效果不佳。因此我们开始关注那时候比较流行的消息解决方案kafka。不幸的是,就低延迟和高可用方面而言,kafka不能解决我们的特殊需求,详情看这里

在这种情况下,我们决定创造一个新的消息引擎来解决更广泛的使用场景,从传统的发布/订阅情景到大容量的实时零容错零容忍事物系统。我们认为这个解决方案可能是有益的,因此我们希望将它向社区开源。目前,有超过100家公司在生产环境中使用开源的RocketMQ版本。我们还发布了基于RocketMQ的商业发行版,一种被称为阿里云平台的paas产品。

下面的表格展示RocketMQ,ActiveMQ 和Kafka (来自awesome-java的流行消息解决方案)之间的对比

Rocket ,ActiveMQ ,kafka比较

消息产品 ActiveMQ Kafka RocketMQ
客户端SDK Java, .NET, C++ 等 Java, Scala 等 Java, C++, Go
协议和规范 push模式,支持OpenWire, STOMP, AMQP, MQTT, JMS pull模式,支持TCP pull模式,支持TCP,JMS,OpenMessaging
有序消息 独有消费者或队列可保证顺序 分区内保证消息顺序 保证严格的消息顺序,可优雅的横向扩展
定时消息 支持 不支持 支持
批量消息 不支持 支持,通过异步发送者 支持,通过同步模式避免消息丢失
广播消息 支持 不支持 支持
消息过滤器 支持 支持,可通过streams来过滤消息 支持,基于SqL92的属性过滤器表达式
服务器触发重发 不支持 不支持 支持
消息存储 支持快速持久化jdbc和高性能日志文件,例如levelDB,kahaDB 高性能文件存储 高性能低延迟文件存储
消息回溯 支持 支持偏移量 支持时间偏移量
消息优先级 支持 不支持 支持
高可用故障转移 支持,依赖存储,kahadb需zookeeper 支持,需要zookeeper 支持,主从模式,不需其他组件
消息追踪 不支持 不支持 支持
配置 默认配置是低级别的,用户需优化配置参数 kafka使用格式化键值对配置。值可通过文件或编程提供 开箱即用,用户只需关注一部分配置
管理和操纵工具 支持 支持,使用命令行暴露核心指标 支持,web和命令行暴露核心指标

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章