RocketMQ解析-架构原理

 学习思路

  1. 名词解释
  2. 架构设计分析
  3. 网络部署特点
  4. 消息发送流程分析

1、名词解释

BrokerServer 消息中转角色,用于接收客户端消息,存储,为消费端消费消息做准备
Producer 消息生产者,发送消息到Broker
Consumer 消息消费者,接收/拉取消息进行消费
NameServer 类似于zookeeper注册中心,用于接收Broker的注册(IP/Port、Topic),Producer、Consumer对配置的订阅
Topic 代表一类消息,每个主题包含多个消息,每个消息属于一个主题,是订阅消息的基本单位
Tag 消息标签,每类消息的功能细分,订阅的时候可细分功能分别处理
推送消息 Broker接收到消息后会主动推送到Consumer端进行消费,实时性比较高
拉取消息 Consumer主动拉取Broker的消息,主动权在应用,一旦拉取立马消费
Producer端group 生产者集群一个分组,只有在发送事务消息时用到,发送消息后Broker回调时发现Producer宕机可选择分组下的其它Producer,告知提交或回滚
Consumer端group 消费者集群一个分组,可保证消费者高可用,消息模式分为:集群模式、广播模式
集群模式 同一个分组的消费者集群下,确保一个消息只被一个消费者消费
广播模式 同一个分组的消费者集群,一个消息被所有消费者都消费
严格顺序消费 消费端消费消息严格按照发送的顺序消费
事务消息 Producer事务跟发送消息要么同时成功要么同时失败

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、架构设计分析

架构图

 

RocketMQ解析-架构原理

 解释:

  1. NameServer:类似于zookeeper注册中心,存放Producer、Consumer、Broker的IP/Port以及Topic对应Broker等信息,与各个系统保持心跳,无状态集群部署
  2. Broker:接收Producer消息、存储消息、查询消息、推送Consumer消息,无状态支持水平扩展
  3. Producer:与NameServer保持长连接,订阅Topic对应Broker等信息,与Broker建立长连接发送消息
  4. Consumer:与NameServer保持长连接,订阅Topic对应Broker等信息,与Broker建立长连接接收/拉取Broker消息进行消费,支持集群/广播模式

3、网络部署特点

还是上图

解释:

  1. 第一步启动NameServer,不依赖任何项目,启动后等待Producer、Consumer、Broker注册/订阅,可无限水平扩展
  2. 第二步启动Broker,依赖NameServer,启动后向NameServer注册自己的IP/Port并跟Broker建立长连接保持心跳,支持单Master、单Master多Slave、多Master多Slave部署
  3. 第三步新建Topic(指定Broker)或者在启动Broker是设置自动创建Topic(生产不建议),向Broker注册Topic和Broker关系
  4. 第四步启动Producer,依赖NameServer,启动后跟NameServer建立长连接,定时发送心跳,订阅Broker信息(包含IP/Port、Topic和Broker关系)和指定Broker建立长连接定时发送心跳,选择队列发送消息
  5. 第五步启动Consumer,依赖NameServer,启动后跟NameServer建立长连接,定时发送心跳,订阅Broker信息(包含IP/Port、Topic和Broker关系)和与Broker的Master、Slave建立长连接定时发送心跳,订阅消息

4、消息发送流程分析

还是上图

解释:

  1. Broker启动后将与Topic的关系等信息注册到NameServer并与系统保持心跳定时同步配置
  2. Producer订阅配置后与拉取的Broker建立长连接,推消息到指定Broker
  3. Broker接收消息后进行同步/异步刷盘
  4. Consumer订阅配置后(确认Topic在哪个Broker上)与Broker建立长连接订阅消息进行消费