总览
从上面的集群架构图能直观的看出,rocketMq的架构整体有四部分组成:NameServer、Broker、Producer、Consumer,其中每一个模块都可以进行水平扩展。
NameServer
NameServer提供轻量级的服务发现和路由。每个NameServer记录完整的路由信息,提供相应的读写服务,并支持快速的存储扩展。
Broker
Broker通过提供轻量级的TOPIC和QUEUE机制来存储消息。它们支持“推和拉”模型,包含容错机制(2个或3个副本),并提供强大的峰值填充功能和按原始时间顺序累积数千亿条消息的能力。此外,Broker还提供灾难恢复,丰富的指标统计信息和警报机制,而这是传统消息中间件所没有的。
Producer
Producer支持分布式部署。分布式生产者通过多种负载平衡模式将消息发送到Broker集群。发送过程支持快速失败并且延迟低。
Consumer
消费者也支持Push和Pull模型,并且支持分布式部署。还支持消息广播、实时消息订阅机制,可以满足大多数消费者的需求。
各组件的具体功能
NameServer
主要包含两个功能:
1)Broker管理:NameServer接受来自Broker群集的注册,并提供心跳机制以检查Broker是否还活着。
2)路由管理:每个NameServer将保存有关Broker群集的整个路由信息以及用于客户端查询的队列信息。
无论消费者还是生产者都需要配置Nameserver的地址,也仅仅需要配置NameServer的地址,以引入rocketmq-stater的springboot项目中的application.yaml为例:
rocketmq:
name-server: http://192.168.204.131:9876
Broker
Broker负责消息的存储和传递,消息查询,HA保证等。
如下图所示,Broker服务器具有几个重要的子模块:
broker主要模块
远程处理模块:处理来自客户端的请求。
客户端管理:管理客户端(生产者/消费者)并维护消费者的主题订阅。
存储服务:提供简单的API在物理磁盘中存储或查询消息。
HA服务:在master和slave之间提供数据同步功能。
索引服务:通过指定的键为条件建立索引,并提供快速的条件查询。
网友评论