参考答案
这个是 RocketMQ 的集群架构图,包含了四个主要部分:NameServer 集群、Producer 集群、Cosumer 集群、Broker 集群。
NameServer 担任路由消息的提供者。
生产者或消费者能够通过 NameServer 、查找各 Topic 相应的 Broker IP 列表,分别进行发送消息和消费消息。
nameServer 由多个无状态的节点构成,节点之间无任何信息同步。
Broker 会定期向 NameServer 以发送心跳包的方式,轮询向所有 NameServer 注册以下元数据信息:
- Broker 的基本信息( ip port 等)
- 主题 Topic 的地址信息
- Broker 集群信息
- 存活的 Broker 信息
- filter 过滤器
也就是说,每个 NameServer 注册的信息都是一样的,而且是当前系统中的所有 broker 的元数据信息。
- Producer 负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息、发送到 Broker 服务器。
- RocketMQ 提供多种发送方式(同步发送、异步发送、顺序发送、单向发送),同步和异步方式均需要 Broker 返回确认信息,单向发送不需要 Broker。
- 消息中转角色负责存储消息、转发消息,在 RocketMQ 系统中,负责接收并存储从生产者发送来的消息,同时为消费者的拉取请求作准备。
- Consumer 负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从 Broker 服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。
以上,是消息队列 RocketMQ 面试题【RocketMQ 的部署架构】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—