RocketMQ 的核心组件包括以下部分:
- Name Server(名称服务器):用于管理和维护 RocketMQ 集群的元数据信息,包括 Topic、Broker、路由信息等。生产者和消费者通过与 Name Server 交互来获取相关信息。
- Producer(生产者):负责将消息发送到指定的 Topic。生产者可以同步或异步地发送消息,并可以设置消息的属性、顺序和延迟等特性。
- Consumer(消费者):订阅一个或多个 Topic,并从 RocketMQ 集群中拉取消息。消费者可以以集群模式或广播模式消费消息,并支持顺序消费和消息过滤等功能。
- Broker(代理服务器):RocketMQ 集群中的消息存储和处理节点。每个 Broker 负责存储一部分 Topic 的消息,并处理生产者和消费者的请求。每个 Broker 都有自己的角色和身份,并通过与 Name Server 交互来注册和获取路由信息。
- Topic(主题):消息的逻辑分类单位。生产者将消息发送到特定的主题中,而消费者则订阅感兴趣的主题。
- Message Queue(消息队列):每个主题可以被细分为多个消息队列,用于实现负载均衡和并行处理。每个消息队列都有自己的消费进度和消费者。
RocketMQ 的工作流程如下:
- Producer 将消息发送到指定的 Topic。生产者与 Name Server 交互,获取目标 Topic 的路由信息,然后选择合适的 Broker 发送消息。
- Broker 接收到生产者发送的消息,并将其存储到磁盘上的消息队列中。Broker 将消息持久化,并根据配置的同步或异步刷盘策略将消息刷写到磁盘。
- Consumer 订阅感兴趣的 Topic。消费者与 Name Server 交互,获取订阅 Topic 的路由信息,然后选择合适的 Broker 进行消息拉取。
- 消费者从 Broker 拉取消息,并进行消费处理。消费者可以以集群模式或广播模式消费消息,集群模式下的消费者组共同消费消息,广播模式下每个消费者都会接收到所有消息。
- 消费者消费消息后,可以向 Broker 发送确认信息(确认消费成功),Broker 更新消息的消费进度。
- Name Server 定期向 Producer 和 Consumer 提供最新的路由信息,以便它们能够根据变化的集群状态进行更新。
通过这种工作流程,RocketMQ 实现了高吞吐量、低延迟和可靠性的消息传递和处理,适用于分布式系统、微服务架构、实时数据处理等场景。