【rocketMq-1】基础入门

一:RocketMQ 部署架构

RocketMQ的角色介绍

Producer :消息的发送者
Consumer :消息接收者;
Broker :暂存和传输消息;
NameServer :管理 Broker
Topic :区分消息的种类;一个发送者可以发送消息给一个或者多个 Topic ;一个消息的接收者可以订阅一个或者多个Topic 消息
Message Queue :相当于是 Topic 的分区;用于并行发送和接收消息
 
集群部署如上图:
 
NameServer:无状态节点,可集群部署,节点间无信息同步。
 
Broker

mater:slave一对多,通过指定相同的BrokerName建立关系。

BrokerId为0为master,非0为slave,slave中只有为1的那个可参与读负载。

每个broker与nameServer中所有节点建立长连接,定时注册topic信息上去。

Producer:  与nameServer中随机一个节点建立长连接,定期获取topic路由信息,并与提供topic服务的master建立长连接,定时发送心跳。   无状态,可集群部署。
 
consumer

同producer,另外也会与slave建立长连接和发送心跳。

可以从master或slave订阅消息,如果是master,则master会根据最大偏移量和拉取偏移量对比,(判断是否读取老消息,老消息已持久化,会产生IO),以及slave是否可读等,建议下一次从master还是slave拉取。

 
 
执行流程:
  1. 启动NameServer,监听端口,等待broker、producer、consumer的连接, 相当于一个路由控制中心。
  2. broker启动与NameServer建立连接,定时发送心跳包(包含broker信息:ip、port、存储的所有topic信息)。
  3. 手动创建topic,指明要存储在那些broker上(也可以发送消息时候创建)
  4. producer发消息,启动时先与一台NameServer建立长连接,并获取到要发送的topic在哪些broker,轮询选择一个队列,与所在的broker建立长连接并发送消息。
  5. consumer启动与producer类似。