暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

程序员必备 | 起底RocketMQ的相关术语/概念

Hugh的白板 2021-04-10
320

最近在整理一些MQ
相关的内容,顺便从头到尾过了一遍,对于初次接触MQ
的小伙伴来讲,MQ的一些术语概念还是挺多的,我这边以RocketMQ
为例整理一下,防止遗忘,大家一起学习。

虽然MQ
的产品很多,但是概念基本上还是一样的,懂了一个,另外一个也就通了,这个不必担心。

对于MQ
适用业务场景还不太了解的同学,可以看一下这篇文章:MQ都能用来干什么?

市面上的MQ
产品很多,那该如何选择呢?可以看一下这篇文章:消息队列(MQ)的产品这么多,怎么选?

如果你想安装一个,自己玩玩,那么可以看一下这两篇文章:

RocketMQ的术语/概念



概念还是比较多的,所以我整理了一个脑图,可以比较清晰的了解,如果文章内看不清,有需要高清原图的,关注「Hugh的白板」公众号,回复「MQ脑图」即可。

消息主题

「Topic:消息主题」

一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,RocketMQ的基本订阅单位

「Tag:消息标签」

用来进一步区分某个Topic下的消息分类,消息从生产者发出即带上的属性。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。

消息

「Message:消息载体」

消息队列中信息传递的载体。

「Message ID」

消息的全局唯一标识

「Message Key」

消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。

消息模型

「Producer:生产者」

消息生产者,也称为消息发布者,负责生产并发送消息。

「Broker:消息代理」

消息中转角色,负责存储消息,转发消息。

「Consumer:消费者」

消息消费者,也称为消息订阅者,负责接收并消费消息。

部署结构

「Name Server:名字服务」

主要用于存储topic,broker的关系,功能类似于zookeeper。生产者/消费者通过名字服务查找各主题相应的Broker列表。

NameServer之间互相不通信,支持集群,一个挂掉之后不会影响其他的节点。

「Broker Server:代理服务器」

消息中转角色,负责存储消息、转发消息

消费模式

「Pull Consumer:拉取式消费」

应用调用Consumer的拉取信息方法从Broker拉取消息

「Push Consumer:推动式消费」

Broker收到消息后主动推送给消费端,该模式实时性比较高

Group组

「Producer Group:生产者组」

同一类Producer的集合,这类Producer发送同一类消息且发送逻辑一致,一个 Producer Group 可以发送多个 Topic 消息。

Producer Group 还有个好处就是在发送分布式事务消息时,如果 Producer 中途意外宕机,Broker 会主动回调 Producer Group 内的任意 一台机器来确认事务状态。

「Consumer Group:消费者组」

同一类Consumer的集合,这类Consumer通常消费同一类消息且发送逻辑一致,一个 Consumer Group 下的多个 Consumer 以均摊方式消费消息,如果设置为广播方式,那么这个 Consumer Group 下的每个实例都消费全量数据。


消息传播模式

「Clustering:集群消费」

相同Consumer Group的每个Consumer实例平均分摊消息

「Broadcasting:广播消费」

相同Consumer Group的每个Consumer实例都会各自消费某条消息一次

消息类型

「普通消息」

没有特殊功能的消息

「顺序消息」

按照一种顺序进行发布和消费的消息类型

「定时/延时消息」

消息可以延迟一段特定时间进行消费。

定时消息与延时消息在代码配置上存在一些差异,但是最终达到的效果相同:消息在发送到消息队列RocketMQ版服务端后并不会立马投递,而是根据消息中的属性延迟固定时间后才投递给消费者。

定时消息和延时消息适用于以下一些场景:

  • 消息生产和消费有时间窗口要求,例如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在30分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。如支付未完成,则关闭订单。如已完成支付则忽略。
  • 通过消息触发一些定时任务,例如在某一固定时间点向用户发送提醒消息。

「事务消息」

二阶段事务消息,先进行prepare投递消息,此时不能进行消息消费,当二阶段发出commit或者rollback的时候才会进行消息的消费或者回滚。

以上,梳理了常用到的概念信息,比较多,慢慢理解。

有意思的内容,关注下方公众号,快速获取更多内容,等你来~

点赞、在看、收藏三连击一下,然后再分享给需要的小伙伴!

文章转载自Hugh的白板,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论