为什么是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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
7月前
|
消息中间件 存储 JSON
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
74 0
|
7月前
|
消息中间件 Java RocketMQ
RocketMQ实战教程之RocketMQ安装
这是一篇关于RocketMQ安装的实战教程,主要介绍了在CentOS系统上使用传统安装和Docker两种方式安装RocketMQ。首先,系统需要是64位,并且已经安装了JDK 1.8。传统安装包括下载安装包,解压并启动NameServer和Broker。Docker安装则涉及安装docker和docker-compose,然后通过docker-compose.yaml文件配置并启动服务。教程还提供了启动命令和解决问题的提示。
|
4月前
|
消息中间件 存储 Java
如何使用RocketMQ
【8月更文挑战第29天】如何使用RocketMQ
200 1
|
7月前
|
消息中间件 存储 Java
RocketMQ部署文档
RocketMQ部署文档
|
消息中间件 存储 负载均衡
RocketMQ极简入门-RocketMQ的工作原理
RocketMQ架构上主要分为四部分,如上图所示 Producer 消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集 群队列进行消息投递,投递的过程支持快速失败并且低延迟。 Consumer 消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时 也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。 Broker Broker主要负责消息的存储、投递和查询以及服务高可用保证。 NameServer NameServer是一个Broker与Topic路由的注册中心
299 0
|
消息中间件 存储 Java
RocketMQ极简入门-MQ概述&RocketMQ安装
1.MQ是什么 MQ全称为Message Queue,即消息队列 ,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程的软件系统,遵循FIFO原则。在高并发的分布式系统中使用居多。
284 0
|
消息中间件 存储 负载均衡
二.RocketMQ极简入门-RocketMQ的工作原理
RocketMQ极简入门-RocketMQ的工作原理
|
消息中间件 存储 Java
一.RocketMQ极简入门-MQ概述&RocketMQ安装
RocketMQ极简入门-MQ概述&RocketMQ安装
|
消息中间件 存储 Oracle
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
160 0
|
消息中间件 RocketMQ
rocketmq学习2
前面我们已经通过quickstrat可以看到nameServer的启动:从启动类中,我们看到:首先创建NamesrvConfig、nettyServerConfig,设置监听端口,将8888改成9876。填充NamesrvConfig、NettyServerConfig、BrokerConfig,获取namesrvAddr,创建Controller,注册钩子函数,启动start。 NamesrvController的属性信息、构造函数:
104 2
rocketmq学习2