RocketMQ概念介绍

本文最后更新于:2021年9月20日 上午

本文介绍了一些RocketMQ的基本概念

RocketMQ概念介绍

消息模型

RocketMQ主要由Producer(生产者)、Broker、Consumer(消费者)三部分组成。Broker在实际部署过程中相当于一台服务器,每一个Broker都可以存储多个Topic的消息,每一个Topic的消息也可以分片存储在不同的Broker中。Message Queue用于存储消息的物理地址,每一个Topic的消息都存储在不多Message Queue中

Producer

负责生产消息。一个Producer会把消息发送到broker服务器中,RocketMQ提供了同步发送、异步发送、单向发送、顺序发送多种发送方式,同步、异步均需要Broker返回确认消息,单向发送不需要

Consumer

负责消费消息,提供了拉取式消费、推动式消费两种消费方式

Topic

表示一类消息的集合,每一个祖逖包含若干消息,是Rocket MQ进行消息订阅的基本单位

Broker Server

消息中转角色,负责存储、转发消息。Broker Server也存储消息相关的元数据,如消费者组、消费进度偏移和主题、队列消息等

NameServer

NameServer充当路由消息的提供者。生产者或消费者能够通过名字服务查找各主题相应的Broker IP列表。多个Namesrv实例组成集群,但相互独立,没有信息交换。

Producer Group

同一类Producer的集合

Consumer Group

同一类Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。消费者组使得在消息消费方面,实现负载均衡和容错的目标变得非常容易。要注意的是,消费者组的消费者实例必须订阅完全相同的Topic。RocketMQ 支持两种消息模式:集群消费(Clustering)和广播消费(Broadcasting)。

集群消费(Clustering)

集群消费模式下,相同Consumer Group的每个Consumer实例平均分摊消息。

广播消费(Broadcasting)

广播消费模式下,相同Consumer Group的每个Consumer实例都接收全量的消息。

普通顺序消息(Normal Ordered Message)

普通顺序消费模式下,消费者通过同一个消息队列( Topic 分区,称作 Message Queue) 收到的消息是有顺序的,不同消息队列收到的消息则可能是无顺序的。

严格顺序消息(Strictly Ordered Message)

严格顺序消息模式下,消费者收到的所有消息均是有顺序的。

消息(Message)

消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。RocketMQ中每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。系统提供了通过Message ID和Key查询消息的功能。

标签(Tag)

为消息设置的标志,用于同一主题下区分不同类型的消息。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。标签能够有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统。消费者可以根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!