✅介绍一下RocketMQ的工作流程?

典型回答

RocketMQ中有这样几个角色:NameServer、Broker、Producer和Consumer

NameServer:NameServer是RocketMQ的路由和寻址中心,它维护了Broker和Topic的路由信息,提供了Producer和Consumer与正确的Broker建立连接的能力。NameServer还负责监控Broker的状态,并提供自动发现和故障恢复的功能。

Broker:Broker是RocketMQ的核心组件,负责存储、传输和路由消息。它接收Producer发送的消息,并将其存储在内部存储中。并且还负责处理Consumer的订阅请求,将消息推送给订阅了相应Topic的Consumer。

Producer(消息生产者):Producer是消息的生产者,用于将消息发送到RocketMQ系统。

Consumer(消息消费者):Consumer是消息的消费者,用于从RocketMQ系统中订阅和消费消息。

RocketMQ的工作过程大致如下:

1687077878860-1ef12f72-2370-4398-831c-9243f1a92189.png

1、启动NameServer,他会等待Broker、Producer以及Consumer的链接。

2、启动Broker,会和NameServer建立连接,定时发送心跳包。心跳包中包含当前Broker信息(ip、port等)、Topic信息以及Borker与Topic的映射关系。

3、启动Producer,启动时先随机和NameServer集群中的一台建立长连接,并从NameServer中获取当前发送的Topic所在的所有Broker的地址;然后从队列列表中轮询选择一个队列,与队列所在的Broker建立长连接,进行消息的发送。

4、Broker接收Producer发送的消息,当配置为同步复制时,master需要先将消息复制到slave节点,然后再返回“写成功状态”响应给生产者;当配置为同步刷盘时,则还需要将消息写入磁盘中,再返回“写成功状态”;要是配置的是异步刷盘和异步复制,则消息只要发送到master节点,就直接返回“写成功”状态。

5、启动Consumer,过程和Producer类似,先随机和一台NameServer建立连接,获取订阅信息,然后在和需要订阅的Broker建立连接,获取消息。

原文: https://www.yuque.com/hollis666/xkm7k3/iagycgg9pxkt78rr