RocketMQ(一)基础概念及简介

205 阅读3分钟

简介

RokcetMQ使用java语言开发,由阿里巴巴研发,目前作为Apache的开源项目,经历过阿里双十一的流量冲击,是一款高性能分布式中间件。

主流mq简单对比

特性ActiveMQKafkaRocketMQRabbitMq
客户端支持Java,.NET,C ++等Java,Scala等Java,C ++,Go语言无关
协议规范推送模型,支持OpenWire,STOMP,AMQP,MQTT,JMS拉模型,支持TCP拉模型,支持TCP,JMS,OpenMessaging推拉模式,AMQP
顺序消息独占消费者或独占队列可以确保顺序确保分区内消息的顺序确保消息的严格排序,并能够优雅地向外扩展独占消费者或独占队列可以确保顺序
消息调度支持不支持支持支持
批量消息不支持支持异步生产者支持同步避免消息丢失不支持
消息广播支持不支持支持支持
消息过滤支持支持,您可以使用Kafka流来过滤消息支持基于SQL92的属性过滤器表达式不支持
消息重试不支持不支持支持支持
消息持久化使用JDBC和高性能日志(如levelDB、kahaDB)支持非常快的持久性高性能文件存储高性能和低延迟的文件存储内存和文件存储
消息追溯支持支持的时间戳和偏移量两种表示支持偏移量表示未知
消息优先级支持不支持不支持支持
高可用及故障转移支持,取决于存储,如果使用kahadb,它需要一个ZooKeeper服务器支持,需要ZooKeeper服务器支持主从模型,不需要其他工具包支持主从模型
消息追踪不支持支持支持支持
配置难度默认配置是低级的,用户需要优化配置参数Kafka使用键-值对格式进行配置。这些值可以通过文件或编程方式提供。开箱即用,用户只需要注意几个配置配置文件、环境变量、运行时参数
管理及可视化界面支持支持,使用终端命令公开核心指标支持,富web和终端命令,以公开核心指标支持使用终端命令和丰富的后台可视化界面

基本概念

针对上面的对比图,我们下面了解一些基础概念。

  • PUSH(推模式):由消息中间件主动地将消息推送给消费者。 优点:数据变更,客户端立马能感知到。 缺点:会造成消息堆积甚至缓冲区溢出。

  • PULL(拉模式):由消费者主动向消息中间件拉取消息。 优点:由客户端发起请求,故不存在推模式中数据积压的问题。 缺点:会增加消息的延迟,即消息到达消费者的时间有点长。

  • JMS(Java Message Service):JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。 baike.baidu.com/item/JMS/28…

  • AMQP(Advanced Message Queuing Protocol):一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。 baike.baidu.com/item/AMQP

  • OpenMessaging:云原生,与供应商无关的开放式规范,用于分布式消息传递。(RocketMQ) openmessaging.cloud/

  • SQL92:是数据库的一个ANSI/ISO标准。它定义了一种语言(SQL)以及数据库的行为(事务、隔离级别等)。 baike.baidu.com/item/SQL92/…