Apache Kafka主题:架构和分区

什么是卡夫卡主题?

Kafka主题本质上是一个命名的记录流。Kafka在日志中存储主题。但是,Apache Kafka中的主题日志分为几个分区。此外,Kafka将这些日志的分区分布在多个服务器或磁盘上。换句话说,我们可以说Kafka中的主题是类别,流名称或提要。

卡夫卡主题

此外,我们可以说Apache Kafka中的主题是pub-sub样式的消息传递。此外, 在Kafka主题中可以有零到多个称为Kafka消费者群体的订户  基本上,Kafka中的这些主题被分解为分区,以提高速度,可伸缩性和大小。

如何创建卡夫卡主题

首先,运行  kafka-topics.sh 并指定主题名称,复制因子和其他属性,以在Kafka中创建主题:

/bin/kafka-topics.sh --create \
   --zookeeper <hostname>:<port> \
   --topic <topic-name> \
   --partitions <number-of-partitions> \
   --replication -factor <number-of-replicating-servers>

现在,使用一个分区和一个副本,下面的示例创建一个名为“test1”的主题:

斌/ kafka-topics.sh --create \
   --zookeeper localhost:2181 \
   --replication -factor  1 \
   --partitions  1 \
   - 主题文字

进一步,运行list topic命令,查看主题:

> bin / kafka-topics.sh --list  --zookeeper localhost:2181
TEST1

确保当应用程序尝试生成,使用或获取不存在的主题的元数据auto.create.topics.enable ,该  属性设置为true时会自动创建主题。

卡夫卡主题分区

此外,Kafka将主题日志分成几个分区,如果密钥存在且循环,通常通过记录密钥。当密钥丢失时,记录存储在分区上(默认行为)。默认情况下,有助于确定Kafka Producer  将记录发送到哪个分区的  键是Record Key。
基本上,为了在生产者写入的许多服务器上扩展主题,Kafka使用分区。此外,为了促进并行消费者,Kafka使用分区。此外,在故障转移方面,Kafka可以将分区复制到多个Kafka Brokers。

Kafka主题日志分区的订购和基数

好吧,我们可以说,只有在一个分区中,Kafka确实维护了一个记录顺序,因为分区也是一个有序的,不可变的记录序列。并且,通过将分区用作结构化提交日志,Kafka会不断附加到分区。在分区中,所有记录都分配了一个顺序ID号,我们进一步称之为偏移量。该偏移量进一步标识分区内的每个记录位置。

此外,为了扩展到适合单个服务器的大小,Topic分区允许Kafka日志。虽然主题可以跨越许多服务器上托管的许多分区,但主题分区必须适合托管它的服务器。此外,Apache Kafka中的主题分区是并行的一个单元。这意味着在任何时候,分区只能由一个使用者组中的一个Kafka使用者处理。基本上,Kafka中的消费者只能在自己的进程或自己的线程中运行。尽管如此,如果消费者停止,Kafka会在同一个消费者群体中的剩余消费者之间传播分区。

Kafka主题分区复制

出于容错的目的,Kafka可以跨可配置数量的Kafka服务器执行分区复制。基本上,每个分区中都有一个领导服务器和一定数量的跟随服务器。此外,对于分区,领导者是处理所有读写请求的人。

但是,如果领导者去世,追随者会复制领导者并接管。此外,对于组内的并行消费者处理,Kafka还使用分区。

复制:Kafka分区领导者,追随者和ISR。

通过使用 ZooKeeper,Kafka选择一个代理的分区副本作为领导者。此外,我们可以说,对于分区,具有分区领导者的代理处理所有记录的读写。此外,对于追随者(节点/分区对)的领导者分区,Kafka复制了写入。

同步的跟随者就是我们所说的ISR(同步复制品)。尽管如此, 如果分区领导失败,Kafka会选择新的  ISR作为新的领导者。

Kafka架构:Kafka复制 - 复制到分区0

卡夫卡主题

当分区的所有ISR写入其日志时,该记录被视为“已提交”。但是,我们只能读取来自使用者的已提交记录。

卡夫卡主题


猜你喜欢

转载自blog.51cto.com/14009535/2348239
今日推荐