# 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与基于消息属性的过滤

上次更新: : 5 months ago