RocketMQ基础-核心架构剖析
RocketMQ的核心架构
RocketMQ主要分为四个部分:
- Producer:负责生产消息;消息发布的角色,支持分布式集群方式部署,Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
- Consumer:负责消费消息;消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。
- NameServer:NameServer是一个非常简单的Topic路由注册中心,支持Broker的动态注册和发现,支持分布式集群方式部署。
- BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证,支持分布式集群+主从架构部署。
核心模块剖析
NameServer
路由注册中心,充当路由消息的提供者,支持Broker的动态注册与发现。NameServer是整个RocketMQ架构中非常关键的一个角色,如果只是单机部署的话,一单NameServer出现故障将会导致整个RocketMQ服务出现问题,所以NameServer通常都是需要集群部署,达到高可用的效果。
主要包括两个功能:
- Broker管理:接收保存Broker集群的注册信息作为路由信息的基本数据,并且提供心跳检测机制,检测已注册的Broker服务是否存活。
- 路由信息管理:每个NameServer节点都保存了关于Broker集群的整个路由信息以及用于客户端查询的队列信息,Producer和Consumer就可以通过NameServer集群获取整个Broker集群的路由信息,进行消息投递及消费。