1. RocketMQ技术架构
RocketMQ的架构主要分为四部分,如下图所示:
Producer
:消息生产者,支持集群方式部署;Consumer
:消息消费者,支持集群方式部署,支持pull,push模式获取消息进行消费,支持集群和广播方式消费;NameServer
:Topic路由注册中心,类似于Dubbo中的zookeeper,支持Broker的动态注册与发现;- 提供心跳检测机制,检查Broker是否存活;
- 接收Broker集群的注册信息,作为路由信息的基本数据;
- NameServier各个实例不相互进行通信,每个NameServer都保存了一份完整的路由信息,这与zookeeper有所区别,不用作复杂的节点数据同步与选主过程;
BrokerServer
:主要负责消息的存储、投递和查询,以及服务高可用保证。BrokerServer包含以下几个重要的子模块:- Remoting Module:整个Broker的实体,负责处理来自clients端的请求;
- Client Manager:负责管理客户端(Producer/Consumer)和维护Consumer的Topic订阅信息;
- StoreService:提供方便简单的API接口处理消息存储到物理硬盘和查询功能;
- HA Service:高可用服务,提供Master Broker 和 Slave Broker之间的数据同步功能;
- Index Service:根据特定的Message key对投递到Broker的消息进行索引服务,以提供消息的快速查询。