文档章节

MQ学习-基本概念区分

os1cheng
 os1cheng
发布于 02/23 10:06
字数 2300
阅读 15
收藏 1

消息队列 Kafka 涉及的专有名词和术语进行定义和解释,方便您更好地理解相关概念并使用该产品。

  • Broker: 消息队列 Kafka 集群包含一个或多个消息处理服务器,该服务器被称为 Broker。

  • Topic: 每条发布到消息队列 Kafka 集群的消息都有一个主题,这个主题被称为 Topic。通过 Topic 可以对消息进行分类。每个 Topic 可以由一个或多个分区(Partition)组成,存储于一个或多个 Broker 上。

  • 分区(Partition): 消息分区;Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。

  • Producer: 消息发布者,也称为消息生产者,负责生产并发送消息到 Kafka Broker。

  • Consumer: 消息订阅者,也称为消息消费者,负责向 Kafka Broker 读取消息并进行消费。

  • Consumer Group: 一类 Consumer 的标识,这类 Consumer 通常接收并消费同一类消息,且消费逻辑一致。Consumer Group 和 Topic 的关系是 N:N,同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以被多个 Consumer Group 订阅。

    消息队列 Kafka 系统架构

    一个典型的消息队列 Kafka 集群包含:

  • Producer:通过 push 模式向消息队列 Kafka Broker 发送消息,可以是网站的页面访问、服务器日志等,也可以是 CPU 和内存相关的系统资源信息;
  • Kafka Broker:消息队列 Kafka 的服务器,用于存储消息;支持水平扩展,一般 Broker 节点数量越多,集群吞吐率越高;
  • Consumer Group:通过 pull 模式从消息队列 Kafka Broker 订阅并消费消息;
  • Zookeeper:管理集群的配置、选举 leader,以及在 Consumer Group 发生变化时进行负载均衡。
  • 消息队列 Kafka 采用 Pub/Sub(发布/订阅)模型,其中:

  • Consumer Group 和 Topic 的关系是 N:N。 同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以同时被多个 Consumer Group 订阅。
  • 同一 Topic 的一条消息只能被同一个 Consumer Group 内的任意一个 Consumer 消费,但多个 Consumer Group 可同时消费这一消息。
  • 消息队列 Kafka pub/sub

    消息队列 Kafka 架构

    消息队列 Kafka 的 Pub/Sub 模型

 

本文主要对消息队列 RocketMQ 涉及的专有名词及术语进行定义和解析,方便您更好地理解相关概念并使用消息队列 RocketMQ。

Topic

消息主题,一级消息类型,通过 Topic 对消息进行分类。详情请见Topic 与 Tag 最佳实践

Message

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

Message ID

消息的全局唯一标识,由消息队列 RocketMQ 系统自动生成,唯一标识某条消息。

Message Key

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

Tag

消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。详情请见Topic 与 Tag 最佳实践

Producer

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

Producer 实例

Producer 的一个对象实例,不同的 Producer 实例可以运行在不同进程内或者不同机器上。Producer 实例线程安全,可在同一进程内多线程之间共享。

Consumer

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

Consumer 实例

Consumer 的一个对象实例,不同的 Consumer 实例可以运行在不同进程内或者不同机器上。一个 Consumer 实例内配置线程池消费消息。

Group

一类 Producer 或 Consumer,这类 Producer 或 Consumer 通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

Group ID

Group 的标识。

Exactly-Once 投递语义

Exactly-Once 投递语义是指发送到消息系统的消息只能被消费端处理且仅处理一次,即使生产端重试消息发送导致某消息重复投递,该消息也在消费端也只被消费一次。详情请见Exactly-Once 投递语义

集群消费

一个 Group ID 所标识的所有 Consumer 平均分摊消费消息。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在集群消费模式下每个实例平均分摊,只消费其中的 3 条消息。详情请见集群消费和广播消费

广播消费

一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在广播消费模式下每个实例都会各自消费 9 条消息。详情请见集群消费和广播消费

定时消息

Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息。详情请见定时和延时消息

延时消息

Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息。详情请见定时和延时消息

事务消息

消息队列 RocketMQ 提供类似 X/Open XA 的分布事务功能,通过消息队列 RocketMQ 的事务消息能达到分布式事务的最终一致。详情请见事务消息

顺序消息

消息队列 RocketMQ 提供的一种按照顺序进行发布和消费的消息类型, 分为全局顺序消息和分区顺序消息。详情请见顺序消息

全局顺序消息

对于指定的一个 Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。详情请见顺序消息

分区顺序消息

对于指定的一个 Topic,所有消息根据 sharding key 进行区块分区。同一个分区内的消息按照严格的 FIFO 顺序进行发布和消费。Sharding key 是顺序消息中用来区分不同分区的关键字段,和普通消息的 key 是完全不同的概念。详情请见顺序消息

消息堆积

Producer 已经将消息发送到消息队列 RocketMQ 的服务端,但由于 Consumer 消费能力有限,未能在短时间内将所有消息正确消费掉,此时在消息队列 RocketMQ 的服务端保存着未被消费的消息,该状态即消息堆积。

消息过滤

消费者可以根据消息标签(Tag)对消息进行过滤,确保消费者最终只接收被过滤后的消息类型。消息过滤在消息队列 RocketMQ 的服务端完成。详情请见消息过滤

消息轨迹

在一条消息从生产者发出到订阅者消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从生产者发出,经由消息队列 RocketMQ 服务端,投递给消息消费者的完整链路,方便定位排查问题。详情请见消息轨迹简介

重置消费位点

以时间轴为坐标,在消息持久化存储的时间范围内(默认 3 天),重新设置消息消费者对其订阅 Topic 的消费进度,设置完成后订阅者将接收设定时间点之后由消息生产者发送到消息队列 RocketMQ 服务端的消息。详情请见重置消费位点

死信队列

死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列 RocketMQ 会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列 RocketMQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。

消息队列 RocketMQ 将这种正常情况下无法被消费的消息称为死信消息(Dead-Letter Message),将存储死信消息的特殊队列称为死信队列(Dead-Letter Queue)。

详情请见死信队列

消息路由

消息路由常用于不同地域之间的消息同步,保证地域之间的数据一致性。消息队列 RocketMQ 的全球消息路由功能依托阿里云优质基础设施实现的高速通道专线,可以高效地实现国内外不同地域之间的消息同步复制。详情请见全球消息路由

© 著作权归作者所有

共有 人打赏支持
上一篇: websphere Mq
下一篇: redis学习-摘抄
os1cheng
粉丝 1
博文 70
码字总数 85764
作品 0
朝阳
程序员
私信 提问
消息队列--RocketMQ学习笔记

序言 本文是RocketMQ学习及使用过程中整理的笔记,主要是个人觉得很关键或者是需要加深理解部分知识的纪录,主要涉及RocketMQ基本概念、部署结构、消息相关知识等,可以做入门资料阅读 消息队...

LY丶Smile
2018/06/19
0
0
Spring Boot 集成 RabbitMq 实战操作(二)

本人学习新框架方法、 一、先学习框架基本知识,也就是看这本书的前三章,了解基本概念。比如这个Rabbitmq,我会先看一些概念,比如,交换机,路由器,队列,虚拟机。 二、然后写代码,写dem...

豆芽菜橙
2017/07/10
0
0
springboot集成activeMQ实现消息队列监听以及实现MQ延迟

1.简介 1.1 什么是ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个 完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现,尽管 JMS 规范出台已经是...

beyondLi71的博客
2017/12/22
0
0
消息队列如何利用标签实现消息过滤

场景介绍 一个消息队列(MQ)存储的消息,可以包含不同实际用途。如果这些消息不加区分,消费者每次消费都会按顺序拉取消息,直到完成对所有消息的消费。如果消费者只对某一类型的消息感兴趣...

中间件小哥
2018/06/27
0
0
Kafka系列4-基本概念及消费者组(Consumer Group)的理解

几个基本概念: Kafka是一个分布式流数据系统,使用Zookeeper进行集群的管理。与其他消息系统类似,整个系统由生产者、Broker Server和消费者三部分组成,生产者和消费者由开发人员编写,通过...

kuluzs
2017/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
4
0
错题

无知的小狼
今天
2
0
PowerShell因为在此系统中禁止执行脚本的解决方法

参考:window系统包管理工具--chocolatey 报错提示: & : 无法加载文件 C:\Users\liuzidong\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall.ps1,因为在此系统上禁止运...

近在咫尺远在天涯
今天
3
0
TP5 跨域请求处理

https://blog.csdn.net/a593706205/article/details/81774987 https://blog.csdn.net/wyk9916/article/details/82315700...

15834278076
今天
3
0
深入理解java虚拟机-Java内存区域与内存溢出异常

深入理解java虚拟机 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 线程私有,内存小,是当前线程执行的字节码行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行...

须臾之余
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部