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 \server

  • 主题文字

进一步,运行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确实维护了一个记录顺序,由于分区也是一个有序的,不可变的记录序列。而且,经过将分区用做结构化提交日志,Kafka会不断附加到分区。在分区中,全部记录都分配了一个顺序ID号,咱们进一步称之为偏移量。该偏移量进一步标识分区内的每一个记录位置。同步

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

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

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

复制:Kafka分区领导者,追随者和ISR。
经过使用 ZooKeeper,Kafka选择一个代理的分区副本做为领导者。此外,咱们能够说,对于分区,具备分区领导者的代理处理全部记录的读写。此外,对于追随者(节点/分区对)的领导者分区,Kafka复制了写入。

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

Kafka架构:Kafka复制 - 复制到分区0
卡夫卡主题

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

卡夫卡主题

相关文章
相关标签/搜索