一、概述
RocketMQ是一款高性能、高吞吐量的分布式消息队列系统,它采用了分布式架构,支持多生产者和消费者并发读写,具有高可用性、高吞吐量、低延迟等特点。本文将对RocketMQ的系统架构进行详细解析。
二、架构设计
RocketMQ采用了分布式架构,主要包括以下部分:
- NameServer集群:NameServer集群负责存储和管理生产者和消费者的元数据信息,以及提供负载均衡和故障转移功能。
- Broker集群:Broker集群负责存储和转发消息,以及提供负载均衡和故障转移功能。每个Broker都有一个独立的NameServer实例,用于与NameServer通信。
- 生产者集群:生产者集群负责向Broker投递消息,以及提供负载均衡和故障转移功能。生产者通过连接到NameServer获取队列的元数据信息,然后将消息发送到指定的队列中。
- 消费者集群:消费者集群负责从Broker中拉取消息并进行处理,以及提供负载均衡和故障转移功能。消费者通过连接到NameServer获取队列的元数据信息,然后从指定的队列中拉取消息。
三、相关概念
消息(Message)
传输最小单元
主题(Topic)
有点类似RabbitMQ的交换机。一类消息的集合,RocketMQ消息订阅基本单位。每个主题包含若干消息,每条消息只能属于一个主题。
标签(Tag)
有点类似RabbitMQ的路由键,为主题设置不同的标签,同一个工程不同业务,不同标签
eg:
Topic:product-servicetag:price、stock消费者可以监听主题product-service,不同tag消息
队列(Queue)
存放消息。一个主题多个队列(分区)
注意:一个Topic的队列中消息只能被一个消费组的的的一个消费者消费。不允许同个消费者组的多个消费者消费
消息标识(MessageId/Key)
RocketMQ中每个消息拥有唯一的MessageId,且可以携带具有业务标识的Key,以方便对消息的查询
Name Server(类似注册中心)
NameServer是一个Broker与Topic路由的注册中心,支持Broker的动态注册与发现。
主要两个功能:
Broker管理:维护broke信息,位置心跳,检查B荣可人是否存活
路由信息管理:Producer和Conumser通过NameServer获取整个Broker集群的路由信息,从而进行消息的投递和消费
四、总结
RocketMQ采用分布式架构,包括NameServer、Broker、Producer和Consumer等核心组件。NameServer负责存储和管理生产者和消费者的元数据信息,Broker负责消息的存储、转发、持久化等功能,Producer负责向Broker投递消息,Consumer负责从Broker中拉取消息并进行处理。