RocketMQ基础概念

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: RocketMQ基础概念

1.简介

RocketMQ 是一款开源的分布式消息中间件,最初由阿里巴巴集团开发并开源。它旨在为分布式系统提供可靠、高性能、可扩展的消息通信能力。RocketMQ和RabbitMQ、KAFKA一起并列为现在主流的三大消息中间件。

一般MQ可以从三个维度来分析其特点:

  1. 吞吐量和延迟
  2. 可靠性
  3. 消息模型的丰富度

1.吞吐量和延迟:

消息中间件作为常用来实现“流量削峰”的组件,其能在一个时间单位吞吐消息的量是个很重要的指标。RocketMQ最初就是为阿里的“双十一”设计的,目前也是“双十一”期间用来保证系统吞吐量的核心组件之一,其从三个方面保证了高吞吐量和低延迟:


分布式架构,RocketMQ 的设计采用了分布式架构,可以将消息存储和处理分散到多个节点上。这样可以实现消息的并行处理,提高系统的吞吐量和并发性能。

零拷贝,RocketMQ 在消息传输过程中采用了零拷贝技术,避免了数据在用户空间和内核空间之间的多次拷贝。这样可以减少不必要的数据复制操作,提高数据传输效率,降低延迟。

RocketMQ 使用了基于消息索引的方式来加速消息的查找和检索。通过构建消息索引,可以快速定位消息存储的位置,提高消息的读取效率。

2.可靠性

消息可靠性,即消息容不容易丢失。RocketMQ和RabbitMQ一样,具有良好的消息可靠性,其用了以下的手段来保证消息的可靠性:

  1. 持久化,RocketMQ允许将消息持久化到磁盘中,以防止断电丢失。
  2. 确认和应答,RocketMQ支持发布确认和消费应答,可以在消息在发送到交换器后,向生产者返回确认;可以在消费者成功消费消息后向MQ进行应答。

3.消息模型的丰富度

RocketMQ支持五种消息模型:

  1. 点对点模型
  2. 发布订阅模型
  3. 请求响应模型
  4. 定时消息模型
  5. 顺序消息模型

其消息模型的丰富度来说要高于Kafka但是低于RabbitMQ

适合的场景:

从上面三个维度综合来说,RocketMQ 适用于需要可靠、高吞吐量和低延迟的分布式消息通信的场景。以下举例一些RocketMQ适用的具体的业务场景:

  1. 电商订单处理:在电商平台中,订单处理是一个关键的业务环节。RocketMQ 可以用于异步处理订单相关的消息,包括订单创建、支付状态更新、库存扣减等。它可以确保订单消息的可靠传递和顺序处理,同时提供高吞吐量和低延迟。
  2. 实时日志处理:在大规模分布式系统中,日志处理对于故障排查、性能监控和数据分析至关重要。RocketMQ 可以用于收集、传输和处理系统生成的实时日志消息。它能够快速处理大量的日志数据,并保证日志消息的可靠传递和顺序处理。
  3. 移动应用消息推送:移动应用中的消息推送通常需要快速、可靠地将通知消息发送给用户。RocketMQ 可以作为消息推送的后端基础设施,支持大规模的消息推送和即时通知,保证消息的可靠传递和顺序处理。
  4. 物联网设备通信:物联网领域涉及大量的设备和传感器数据的收集和处理。RocketMQ 可以用于设备之间的实时通信,将设备生成的数据发送到云端进行处理和分析。它提供了可靠的消息传递和高吞吐量的能力,适用于大规模的物联网场景。
  5. 金融交易系统:在金融领域,交易系统对于消息的可靠性和顺序性要求非常高。RocketMQ 可以用于处理金融交易相关的消息,包括支付通知、资金结算、交易确认等。它提供了事务消息支持和顺序消息处理能力,确保交易的一致性和顺序性。

2.架构

整个RocketMQ集群的架构和微服务架构类似,有一个存放节点信息的name server,生产者和消费者都去找name server拿broker的信息,再去定位到具体的某一个broker上,进行消息的收发。 broker之间可以用主从的方式进行互相备份,进行容错。

3.核心概念

  • Message,消息,数据单元。由topic、tag、body组成。body就是要传输的具体数据。
  • Producer,消息的发送者。它负责将消息发送到 RocketMQ 的消息队列中。
  • Consumer ,消息接收者。它订阅特定的消息主题(Topic),从 RocketMQ 的消息队列中拉取消息并进行处理。
  • topic,消息的逻辑分类,类似于消息的主题或者标签。Producer 发送消息时,需要指定发送到哪个 Topic 下。
  • tag,对消息的附加标记,用于在一个主题下对消息进行更细粒度的分类。Consumer 可以根据标签来选择性地订阅和过滤消息。
  • message queue,一个消息主题的分区或者分片。每个主题可以被划分为多个消息队列,这样消息就可以被并行处理,提高系统的吞吐量和并发性能。
  • broker,负责存储和转发消息。它接收来自 Producer 的消息,并将其存储到合适的消息队列中。同时,它还接收来自 Consumer 的消费请求,并将消息传递给消费者。
  • name server,名称服务,负责管理整个 RocketMQ 系统的元数据信息,包括 Topic、Producer、Consumer 等的注册和发现。Producer 和 Consumer 在启动时需要与 Namesrv 进行交互,获取路由信息和元数据。



相关实践学习
消息队列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
目录
相关文章
|
6月前
|
消息中间件 中间件 数据安全/隐私保护
RabbitMQ 的核心概念
RabbitMQ 的核心概念
42 2
|
3月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
|
4月前
|
消息中间件 负载均衡 算法
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
119 2
|
4月前
|
消息中间件 NoSQL 关系型数据库
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
129 1
|
4月前
|
消息中间件 存储 RocketMQ
【RocketMQ系列十】RocketMQ的核心概念说明
【RocketMQ系列十】RocketMQ的核心概念说明
68 1
|
5月前
|
消息中间件 存储 中间件
【主流技术】聊一聊消息队列 RocketMQ 的基本结构与概念
2.6Broker 代理服务器(Broker)是消息中转角色,负责存储消息、转发消息。代理服务器在 RocketMQ 系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。 2.7Pull Consumer 拉取式消费(Pull Consumer)是 Consumer 消费的一种类型,也是默认的类型。下游应用系统通常主动调用 Consumer 的拉消息方法从 Broke r服务器拉消息,即主动权由下游应用控制。一旦获取了批量消息,应用就会启动消费过程。
|
6月前
|
消息中间件 存储 Apache
RocketMQ实战教程之常见概念和模型
Apache RocketMQ 实战教程介绍了其核心概念和模型。消息是基本的数据传输单元,主题是消息的分类容器,支持字节、数字和短划线命名,最长64个字符。消息类型包括普通、顺序、事务和定时/延时消息。消息队列是实际存储和传输消息的容器,是主题的分区。消费者分组是一组行为一致的消费者的逻辑集合,也有命名限制。此外,文档还提到了一些使用约束和建议,如主题和消费者组名的命名规则,消息大小限制,请求超时时间等。RocketMQ 提供了多种消息模型,包括发布/订阅模型,有助于理解和优化消息处理。
|
6月前
|
消息中间件 Java API
RabbitMQ(基础概念, 简单使用)(下)
RabbitMQ(基础概念, 简单使用)
52 0
|
6月前
|
消息中间件 存储 Java
RabbitMQ(基础概念, 简单使用)(中)
RabbitMQ(基础概念, 简单使用)
35 0
|
6月前
|
消息中间件 存储 中间件
RabbitMQ(基础概念, 简单使用)(上)
RabbitMQ(基础概念, 简单使用)
53 0