文章目录

  • RocketMQ
  • Message (消息)
  • Producer(生产者)
  • Consumer(消费者)
  • Broker Server(代理服务器)
  • Topic (主题)
  • Name Server(名字服务)
  • Group(群组)
  • Producer Group(生产者群组)
  • Consumer Group(消费者群组)
  • 消费方式
  • 推动式消费(Push Consumer)
  • 拉取式消费(Pull Consumer)
  • Clustering(集群消费)
  • Broadcasting(广播消费)
  • 普通顺序消息(Normal Ordered Message)
  • 严格顺序消息(Strictly Ordered Message)
  • 标签(Tag)

RocketMQ

github地址https://github.com/apache/rocketmq

Message (消息)

MQ处理的最小数据单元

Producer(生产者)

数据制造者,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。同步和异步方式均需要Broker返回确认信息,单向发送不需要。

Consumer(消费者)

数据使用者(订阅者),一般是后台系统负责异步消费。一个消息消费者会从Broker服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。

Broker Server(代理服务器)

消息中转角色,负责存储消息、转发消息。代理服务器在RocketMQ系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。

Topic (主题)

一类消息集合,每一个消息只能属于一个主题,MQ订阅的基本单位

Name Server(名字服务)

名字服务充当路有消息的提供者,Producer和Consumer能够通过NameServer查找到对应BrokerIP的列表,多个NamerServer实例组成集群,但是每一个NameServer相互独立,没有信息交互。

Group(群组)

同一类逻辑的处理组合

Producer Group(生产者群组)

同一类Producer的组合,发送消息的逻辑一致,如果发送者崩溃额,Broker会通知同一个组内的其他Producer

Consumer Group(消费者群组)

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

消费方式

推动式消费(Push Consumer)

Consumer消费的一种类型,该模式下Broker收到数据后会主动推送给消费端,该消费模式一般实时性较高。

拉取式消费(Pull Consumer)

Consumer消费的一种类型,应用通常主动调用Consumer的拉消息方法从Broker服务器拉消息、主动权由应用控制。一旦获取了批量消息,应用就会启动消费过程。

Clustering(集群消费)

集群消费模式下,相同Consumer Group的每个Consumer实例平均分摊消息(相当于均分消息到每一个订阅者)

Broadcasting(广播消费)

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

普通顺序消息(Normal Ordered Message)

普通顺序消费模式下,消费者通过同一个消费队列收到的消息是有顺序的,不同消息队列收到的消息则可能是无顺序的。

严格顺序消息(Strictly Ordered Message)

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

标签(Tag)

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