Rocketmq 基本概念和核心组件

一、基本概念

1. 消息模型

RocketMQ 采取了发布订阅模式作为消息模型,由消息生产者、代理服务器、消息消费者三方构成了消息模型
在这里插入图片描述

2. 消息

概念:消息即消息系统所传输信息的物理载体,是生产和消费数据的最小单位。

属性:在 RocketMQ 中,消息具有以下属性

  • topic:每个消息都属于一个主题,通过订阅发布模式在生产者和消费者之间传递。
  • ID:每个消息都具有的唯一的 Message ID。
  • key:业务标识 key。
  • tag:消息标签,用于同一主题下区分不同类型的消息。

RocketMQ 提供了根据 Message ID 和 key 查询消息的功能。

3. 消息生产者(Producer)

概念:消息的生产者主要负责生产消息并将消息发送至 broker 服务器中,一般由业务系统担任。

扩展:生产者组(Producer Group),是同一类 Producer 的集合,一般用做集群部署用以避免单点故障,提高性能等。通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递。

消息发送方式:RocketMQ 提供了多种消息发送方式,包括同步发送、异步发送、顺序发送、单向发送等。

4. 消息消费者(Consumer)

概念:消息消费者负责消费消息,一般由后台系统负责消费消息。消息消费者从 broker 服务器拉取消息,并将消息提供至应用程序。

扩展:消费者组(Consumer Group),是同一类 Consumer 的集合。

消息消费方式:RocketMQ支持两种消息模式:集群消费(Clustering)和广播消费(Broadcasting)。

  • 集群消费:集群模式下,相同消费者组的每个消费者实例平均分摊消息,即一个消息只会被某个消费者消费一次。

  • 广播模式:广播模式下,相同消费者组的每个消费者实例都接受全量的消息,即一个消息会被消费者组内的所有实例各消费一次。

消息拉取方式:RocketMQ支持以 push 和 pull 两种模式对消息进行消费。从概念上讲

  • Pull 模式:应用侧会主动调用 Consumer 的拉取消息方法,从 Broker 服务器拉取消息,主动权由应用控制。一旦获取了批量消息,应用会启动消费过程
  • Push 模式:Broker 服务器收到消息数据后会主动推送给消费端,该模式一般实时性比较高

实际上,Push 模式只是对 pull 模式的一种封装。其本质实现为:消息拉取线程在从服务器拉取到一批消息后,提交到消息消费线程池,然后“马不停蹄”的继续向服务器再次尝试拉取消息;当没有拉取到消息,则延迟一下后又继续拉取。

5. 代理服务器(Broker Server)

概念:代理服务器是消息的中转角色,主要功能是进行消息的存储和消息的转发,是消息队列中间件的核心。Broker 在 RocketMQ 系统中,负责接收从生产者发送来的消息,并进行存储,同时为消费者的拉取请求做准备。

模块:为了实现消息的基本功能并保证服务的高可用,broker 包含了以下几个重要的子模块

  • Remoting Module:整个 Broker 实体,负责处理来自 clients 端的请求
  • Client Manager:负责管理客户端和维护 Consumer 的 Topic 订阅信息
  • Store Service:提供方便简单的 API 接口处理消息存储到物理硬盘和查询功能
  • HA Service:高可用服务,提供了 Broker 主从节点之间的数据同步功能
  • Index Service:根据特点的 Message key 对投递到 Broker 的消息进行索引服务,以提供消息的快速查询

6. 名字服务(Name Server)

概念:名字服务充当路由消息的提供者。生产者和消费者能够通过名字服务查找各主题相应的 Broker IP 列表。Name Server 主要包括两个功能:Broker管理和路由信息管理。

  • Broker管理:接受 Broker 集群的注册信息并保存下来作为路由信息的基本数据。提供心跳检测机制,检测 Broker 是否还存活。
  • 路由信息管理:每个 NameServer 将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。

扩展:多个Namesrv实例组成集群,但相互独立,没有信息交换,Broker 是向每一台 NameServer 注册自己的路由信息,因此每个 Namesrv 实例上面都保存了一份完整的路由信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值