RocketMQ系列3:核心技术介绍

1 介绍

RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题、队列、消息、生产者、消费者、消费者分组以及订阅关系。以下是对这些核心技术的详细说明:

2 核心技术实现

2.1 主题(Topic)

1. 定义 :主题是RocketMQ中消息传输和存储的顶层容器,用于标识同一类型业务逻辑的消息。它是一个逻辑概念,并非实际的消息容器。
2. 作用

  • 数据分类隔离:RocketMQ建议将不同业务类型的数据拆分到不同的主题中,以实现隔离存储和订阅。
  • 数据身份和权限管理:RocketMQ中的消息本身是匿名无身份的,同一分类的消息使用相同的主题来做身份识别和权限管理。

3. 名称 :主题名称用于标识主题,且在集群内部全局唯一。
4. 队列列表 :作为主题的组成单元,是消息存储的实际容器,一个主题内包含一个或多个队列,消息实际存储在主题的各队列内。
4. 消息类型:在创建主题时,可以指定主题中存放的消息类型,包括Normal(普通消息)、FIFO(顺序消息)、Delay(定时/延迟消息)、Transaction(事务消息)。

2.2 队列(MessageQueue)

1. 定义 :队列是RocketMQ中消息传输和存储的实际容器,也是RocketMQ消息的最小存储单元。
2. 特点

  • RocketMQ中所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。
  • 队列天然具备顺序性,即消息按照进入队列的顺序写入存储,同一队列间的消息天然存在顺序关系。
  • 消息在队列中的位置和消息之间的顺序通过位点(Offset)进行标记管理。

2.3 消息(Message)

1. 定义 :消息是RocketMQ中最小的数据传输单元,生产者将需要发送的数据包装成消息发送给RocketMQ的服务端。
2. 特点

  • 不可变性:消息一旦产生,其内容即不可改变
  • 持久化:RocketMQ默认会对消息进行持久化,保存到服务端的存储文件中,以保证消息的可回溯性和系统故障场景下的可恢复性。

2.4 生产者(Producer)

1. 定义 :生产者负责将消息发送到RocketMQ的指定主题和队列中。
2. 发送方式

  • 同步发送:有返回值,必须等待消息发送成功才会结束。
  • 异步发送:在发送消息后立即返回,同时异步接收传递过去的消息状态。
  • 单向发送:单方面发送消息,不需要等待任何回应。

2.5 消费者(Consumer)

1. 定义 :消费者负责从RocketMQ中订阅并消费指定主题的消息。
2. 消费过程

  • 消费者先从Broker拉取消息到客户端,然后启动消费线程消费这些消息。
  • 消费者可以使用PullMessageService线程不断从Broker拉取消息,并使用ConsumeMessageService线程进行消费。

2.6 消费者分组(Consumer Group)

1. 定义 :消费者分组是RocketMQ中用于管理消费者的一个概念,同一分组内的消费者共同分摊消息并进行消费。
2. 作用

  • 通过消费者分组,可以实现消息的负载均衡和容错处理。
  • RocketMQ要求同一个消费者分组下所有消费者的消费行为要保持一致。

2.7 订阅关系(Subscription)

1. 定义 :订阅关系是指消费者分组与主题之间的关联关系,以及消费者订阅消息时的过滤规则。
2. 作用

  • 通过订阅关系,消费者可以指定要消费的主题和消息类型。
  • RocketMQ通过订阅关系来实现消息的过滤和分发。

3 总结

综上所述,RocketMQ的核心技术涉及多个核心概念,这些概念相互协作,共同实现了RocketMQ的高性能、高可用性和高可扩展性。

相关推荐
星辰_mya6 小时前
rocketMQ之ConsumeQueue
rocketmq
Java 码农8 小时前
RabbitMQ集群部署方案及配置指南05
分布式·rabbitmq
用户02033886131412 小时前
RocketMQ知识点梳理
rocketmq
Java 码农13 小时前
RabbitMQ集群部署方案及配置指南01
linux·服务器·rabbitmq
Overt0p13 小时前
抽奖系统(6)
java·spring boot·redis·设计模式·rabbitmq·状态模式
Java 码农13 小时前
RabbitMQ集群部署方案及配置指南04
分布式·rabbitmq
独自破碎E13 小时前
在RabbitMQ中,怎么确保消息不会丢失?
分布式·rabbitmq
Java 码农13 小时前
RabbitMQ集群部署方案及配置指南02
分布式·rabbitmq
sww_102614 小时前
Kafka和RocketMQ存储模型对比
分布式·kafka·rocketmq
bentengjiayou14 小时前
Kafka和RabbitMQ相比有什么优势?
分布式·kafka·rabbitmq