为什么是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和命令行暴露核心指标
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
消息中间件 存储 JSON
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
40 0
|
8月前
|
消息中间件 Java Maven
RocketMQ 入门使用
RocketMQ 入门使用
172 1
|
9月前
|
消息中间件 存储 负载均衡
RocketMQ极简入门-RocketMQ的工作原理
RocketMQ架构上主要分为四部分,如上图所示 Producer 消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集 群队列进行消息投递,投递的过程支持快速失败并且低延迟。 Consumer 消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时 也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。 Broker Broker主要负责消息的存储、投递和查询以及服务高可用保证。 NameServer NameServer是一个Broker与Topic路由的注册中心
165 0
|
9月前
|
消息中间件 存储 负载均衡
二.RocketMQ极简入门-RocketMQ的工作原理
RocketMQ极简入门-RocketMQ的工作原理
|
11月前
|
消息中间件 存储 Oracle
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
120 0
|
消息中间件 RocketMQ 索引
Rocketmq学习一
首先从github中拉取Rocketmq的代码,进行运行。 1.由于rocketmq需要依赖nameServer,类似于zookeeper。首先启动时,配置好NamesrvStartup的环境变量信息,也即rocketmq的ROCKEMQ_HOME与你的项目对应。接着就可以启动了。
261 2
Rocketmq学习一
|
消息中间件 RocketMQ
rocketmq学习2
前面我们已经通过quickstrat可以看到nameServer的启动:从启动类中,我们看到:首先创建NamesrvConfig、nettyServerConfig,设置监听端口,将8888改成9876。填充NamesrvConfig、NettyServerConfig、BrokerConfig,获取namesrvAddr,创建Controller,注册钩子函数,启动start。 NamesrvController的属性信息、构造函数:
87 2
rocketmq学习2
|
消息中间件 存储 Apache
RocketMQ 简介 | 学习笔记
快速学习 RocketMQ 简介,介绍了 RocketMQ 简介系统机制, 以及在实际应用过程中如何使用。
295 0
RocketMQ 简介 | 学习笔记
|
消息中间件 存储 负载均衡
|
消息中间件 运维 NoSQL
3万字聊聊什么是RocketMQ(一)
大家好,我是Leo。 这是开端的第三次循环了。当前正在正处于RocketMQ基础原理。
3万字聊聊什么是RocketMQ(一)