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的高性能、高可用性和高可扩展性。

相关推荐
你啊我啊你好2 小时前
常用的消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)面试精华
rabbitmq·rocketmq·activemq
Agnoni7 小时前
RabbitMQ消息队列的笔记
java·笔记·spring cloud·rabbitmq·ruby
kingbal1 天前
RabbitMQ:windows系统安装
linux·分布式·rabbitmq
_BugMan1 天前
【业务场景】订单超时取消的各种方案
redis·java-ee·rocketmq
小马爱打代码2 天前
面试题-RabbitMQ如何保证消息不被重复消费?
分布式·rabbitmq
C182981825752 天前
rabbitMq举例
java·rabbitmq·java-rabbitmq
银氨溶液2 天前
RabbitMQ实现消息发送接收——实战篇(路由模式)
java·开发语言·后端·消息队列·rabbitmq·消息分发
fyihdg2 天前
spring boot 接口性能优化实战,类似实现秒杀功能,同时实现spring cloud gateway redis实现限流
spring boot·kafka·gateway·rabbitmq
小林想被监督学习2 天前
RabbitMQ快速入门 - 生产者和消费者的简单实现
linux·分布式·rabbitmq