Rocketmq Broker与队列关系,怎么存储的
RocketMQ Broker与队列关系图解说明
基本概念
在RocketMQ中,Broker是消息存储和转发的核心组件,而队列(Queue)是消息存储的基本单位。理解它们之间的关系对于设计高效的消息系统至关重要。
关系图解
复制
下载
+---------------------+ | Broker | | +---------------+ | | | Topic A | | | | +-----------+ | | | | | Queue 0 | | | | | +-----------+ | | | | +-----------+ | | | | | Queue 1 | | | | | +-----------+ | | | | +-----------+ | | | | | Queue 2 | | | | | +-----------+ | | | +---------------+ | | | | +---------------+ | | | Topic B | | | | +-----------+ | | | | | Queue 0 | | | | | +-----------+ | | | | +-----------+ | | | | | Queue 1 | | | | | +-----------+ | | | +---------------+ | +---------------------+
关键点说明
-
一个Broker包含多个Topic
-
每个Broker可以存储多个Topic的消息
-
-
一个Topic包含多个Queue
-
每个Topic在Broker中被划分为多个Queue(默认4个)
-
Queue是消息存储和消费的最小单位
-
-
队列分布示例
复制
下载
Topic: OrderTopic - Broker A- Queue 0- Queue 1 - Broker B- Queue 2- Queue 3
生产消费关系
-
生产者发送消息
-
消息会被路由到Topic下的某个Queue
-
路由策略可以是轮询、哈希等
-
-
消费者消费消息
-
消费者组从Queue中拉取消息
-
同一个消费者组内的消费者分摊Queue的消费
-
实际部署示例
复制
下载
集群部署: +------------+ +------------+ | Broker A | | Broker B | | - Topic1 | <---> | - Topic1 | | - Queue0 | | - Queue1 | | - Queue2 | | - Queue3 | | - Topic2 | | - Topic2 | | - Queue0 | | - Queue1 | +------------+ +------------+
重要特性
-
队列数量决定并行度
-
更多队列意味着更高的生产消费并行度
-
-
队列是持久化的
-
队列中的消息会持久化到磁盘
-
-
主从复制以队列为单位
-
每个队列在主从之间同步数据
-
理解Broker与队列的关系有助于合理设计Topic和队列数量,优化消息系统的性能和可靠性。