05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

2024-01-09 09:25:51

CMAK 各个功能的作用解释(主题)



★ 主题

Kafka 主题虽然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 topic 都不同(AMQP 的 topic 只是 Exchange 的类型)。

Kafka 的主题只是盛装消息的逻辑容器(注意是逻辑容器),主题之下会分为若干个分区,分区才是盛装消息的物理容器。

▲ 消息组织方式实际上是三级结构:主题 → 分区 → 消息。

▲ 主题只是消息的逻辑分类,它只是发布消息的类别或消费源的名称。

发布消息时,面向主题发布消息;
消费消息时,也面向主题消费;
但实际会由 Kafka 将消息存储到分区中,从分区中消费消息。

就是消息是存在分区中的,但是发布和消费消息是面向主题来的。


主题在物理上是不存在的,实际上程序存在的只是分区。



★ 分区

▲ 分区才是真正存储消息的地方,分区在物理存储层面就是一个一个的日志文件(就是数据文件),这些日志文件保存在 server.properties文件下的 log.dirs属性 指定目录下。
在这里插入图片描述

▲ 分区文件都是一个有序的记录序列,序列的数据项可通过下标访问,下标从0开始,如图所示:

在这里插入图片描述
▲ 分区文件的结构有点类似于 List 集合,只不过 List 集合存储在内存中,而分区文件则持久化地、存储在磁盘上。

消息被消费完成之后,是不会自动从分区中移除的,只能通过设置,比如过某一段时间之后,再从分区中移除。

在这里插入图片描述



★ 创建主题:

【备注】 Kafka 的 Broker 之间的地位是平等,没有所谓谁是主Broker,谁是副Broker的概念。

Kafka的主、从是体现在分区上的 ,分区可分为领导者分区(主)、追随者分区(副)。

领导者分区,其实就是主分区:对外提供服务。
追随者分区,就是所谓副分区:作用是作为主分区的后备。

kafka-topics.bat(.sh)命令可用于操作主题,包括创建主题、删除主题及列出主题、查看主题等。
例如如下命令即可创建一个主题:

^ 这个符号表示命令还没有写完,要换一行

kafka-topics.bat --create ^
–bootstrap-server localhost:9092 ^
–replication-factor 2 ^
–partitions 3 ^
–topic test1

上面命令指定了如下几个选项:

–create:指定创建主题。

–bootstrap-server:指定Kafka Broker的地址。

–replication-factor:指定复制因子。此处指定的复制因子为2,表明每个分区都有两个副本,一个领导者副本,一个追随者副本。

–partions:指定该主题包含的分区数。此处指定的分区数为3,表明该主题由3个分区组成。
–partions选项指定该主题由3个分区组成,而–replication-factor指定每个分区有2个副本,因此实际上该分区包含6(3 * 2)个分区,其中3个领导者分区,3个追随者分区。

–topic:指定主题名。


用命令行创建 topic

在这里插入图片描述

创建出来了,如图

在这里插入图片描述

主题信息:

因为分区是3,复制因子是2,所以一共有6个分区;
因为我们弄了3个broker节点。
如图:每个broker节点分配了两个分区

在这里插入图片描述



CMAK 界面创建topic

在这里插入图片描述

创建出来的主题

在这里插入图片描述

细看主题的分区之类的
因为分区是4,复制因子是3,所以一共有12个分区;
因为我们弄了3个broker节点。
如图:每个broker节点分配了4分区
在这里插入图片描述

分区的存放位置详解:

在这里插入图片描述



★ 列出和查看主题

▲ 可在CMAK列出和查看主题

▲ 也可使用 kafka-topics.bat 的 --list 选项来查看主题列表:

kafka-topics.bat --list --bootstrap-server localhost:9092

Kafka 的 Broker 之间的地位是平等,没有所谓谁是主Broker,谁是副Broker的概念。所以这里就随便写其中一个broker的端口号来查看主题:
如图,跟 CMAK 显示的一样,是3个主题。
在这里插入图片描述

▲ 可使用 kafka-topics.bat 的 --describe 选项来查看指定主题的详细信息。

kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic 主题名

kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic test2

在这里插入图片描述

不知道怎么查看,不知道有哪些命令的时候,可以直接输:kafka-topics 这个命令来看。

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_44411039/article/details/135415775
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。