# 02 核心概念
# 1 架构
# 1.1 NameServer
Topic路由注册中心,为客户端提供路由服务,最终一致性,接收Broker心跳获取路由信息。路由信息存放内存中,不执久化
# 1.2 Broker
消息存储服务,分Master和Slave,主服务负责读写,从服务做为备份,在主压力大时可提供读服务。每隔30s向Broker发送心跳包,包中包含所有Topic的路由信息。路由信息执久化
# 1.3 Client
分Producer和Consumer两种角色,同一时间只连接一台NameServer,异常时尝试另一台,每30s发起Topic路由信息查询
# 1.4 其它
Rocket4.5后引入多副本机制,采用Raft协议保证Broker节点数据强一致性
# 2 消息发布订阅模型
# 2.1 发布订阅的模型
Topic:主题,一类消息集合
ConsumerGroup:消息消费组
# 2.2 消费模式
- 广播模式:消费组中每个消费者处理所有消息,通常用于刷新内存缓存
- 集群模式:共同消费消息
队列负载算法:
- AllocateMessageQueueAveragely:平均分配
- AllocateMessageQueueAveragelyByCircle:轮流平均分配
重平衡机制:
消费进度:以消费组为单位存储。
- 集群模式:存放在Broker端的文件中
${ROCKETMQ_HOME}/store/config/consumerOffset.json
; - 广播模式:存放在用户的主目录
${USER_HOME}/.rocketmq_offsets
消费模型:
- 并发消费:消费者内部创建线程池,对队列中的消息多线程处理
- 顺序消费:提供基于队列的消费模型,对于同一个Queue会加锁
# 3 消息类型
# 3.1 事务消息
提供消息发送与业务落库的一致性,保证消息发送和数据库存储操作的原子性
# 3.2 定时消息
开源版本不支持
# 3.3 消息过滤
提供基于Tag与基于消息属性的过滤
← 01 简介 03 消息API说明 →