消息队列 RocketMQ:(二)系统架构

文章目录

消息队列 RocketMQ:(一)概述


一、系统架构

RocketMQ架构上主要分为四部分构成:
架构

1、Producer

消息生产者,负责生产消息。Producer 通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败并且低延迟。

例:

  • 电商平台中用户提交的秒杀请求写入到MQ的过程,就是消息生产的过程。

RocketMQ 中的消息 Producer 都是以 Producer Group 的形式出现的。Producer Group 是同一类 Producer 的集合,这类 Producer 发送相同 Topic 类型的消息。一个 Producer Group 可以同时发送多个主题的消息。

2、Consumer

消息消费者,负责消费消息。一个消息消费者会从 Broker 服务器中获取到消息,并对消息进行相关业务处理。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费

RocketMQ 中的 Consumer 都是以 Consumer Group 的形式出现的。Consumer Group 是同一类 Consumer 的集合,这类 Consumer 消费的是同一个 Topic 类型的消息。Consumer Group在消息消费方面,实现负载均衡和容错的目标变得非常容易。

消费者组中Consumer的数量应该小于等于订阅Topic的Queue数量。如果超出Queue数量,则多出的Consumer将不能消费消息。

3、Name Server

NameServer 是一个 Broker 与 Topic 路由的注册中心,支持 Broker 的动态注册与发现。

两个功能:

  1. Broker管理:接受 Broker 集群的注册信息并且保存下来作为路由信息的基本数据;提供心跳检测机制,检查 Broker 是否还存活
  2. 路由信息管理:每个 NameServer 中都保存着 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer 和 Conumser 通过 NameServer 可以获取整个 Broker 集群的路由信息,从而进行消息的投递和消费
路由注册

NameServer 是以集群的方式部署,但 NameServer 是无状态,NameServer 集群中的各个节点间是无差异、相互不进行信息通讯的。

在 Broker 节点启动时,轮询 NameServer 列表,与每个 NameServer 节点建立长连接,发起注册请求。在 NameServer 内部维护着⼀个 Broker 列表,用来动态存储 Broker 的信息。

路由剔除

当 Broker 关机、宕机或网络等,NameServer 没有接收到 Broker 心跳时,NameServer 将其从 Broker 列表中剔除。

NameServer 中存在定时任务,每10秒就会扫描⼀次 Broker 列表,查看每个 Broker 的最新心跳时间戳距离当前时间是否超过120s,如果超过会判定 Broker 失效,将其从 Broker 列表中剔除。

路由发现

RocketMQ 的路由发现采用的是 Pull 模型。当 Topic 路由信息出现变化时,NameServer 不会主动推送给客户端,而是客户端定时拉取 Topic 最新的路由。默认客户端每30秒会拉取一次最新的路由。

4、Broke Server

Broker 在 RocketMQ 系统中负责接收并存储从 Producer 发送来的消息,同时为 Consumer 的拉取请求作准备。Broker 同时也存储着消息相关的元数据,包括 Consumer Group 消费进度偏移 offset、Topic、Queue。

Broker Server 的子模块:

  1. Remoting Module:Broker的实体,负责处理来自clients端的请求。
  2. Client Manager:客户端管理器。负责接收、解析客户端(Producer/Consumer)请求,管理客户端。维护Consumer的Topic订阅信息;
  3. Store Service:存储服务。提供方便简单的API接口,处理消息存储到物理硬盘和消息查询功能;
  4. HA Service:高可用服务,提供Master Broker 和 Slave Broker之间的数据同步功能;
  5. Index Service:索引服务。根据特定的Message key,对投递到Broker的消息进行索引服务,同时也提供根据Message Key对消息进行快速查询的功能。
    在这里插入图片描述
    RocketMQ 文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值