Apache Kafka - 基础知识



在深入研究 Kafka 之前,您必须了解主要术语,例如主题、代理、生产者和消费者。下图说明了主要术语,表格详细描述了图表的组成部分。

Fundamentals

在上图中,一个主题被配置为三个分区。分区 1 有两个偏移量因子 0 和 1。分区 2 有四个偏移量因子 0、1、2 和 3。分区 3 有一个偏移量因子 0。副本的 ID 与托管它的服务器的 ID 相同。

假设主题的复制因子设置为 3,则 Kafka 将创建每个分区的 3 个相同副本并将它们放置在集群中,以使其可用于所有操作。为了平衡集群中的负载,每个代理存储一个或多个这些分区。多个生产者和消费者可以同时发布和检索消息。

序号 组件和描述
1

主题 (Topics)

属于特定类别的一系列消息称为主题。数据存储在主题中。

主题被分成分区。对于每个主题,Kafka 保持至少一个分区。每个这样的分区都包含按不可变顺序排列的消息。分区实现为一组大小相等的段文件。

2

分区 (Partition)

主题可能有多个分区,因此它可以处理任意数量的数据。

3

分区偏移量 (Partition offset)

每个分区消息都有一个唯一的序列 ID,称为偏移量

4

分区的副本 (Replicas of partition)

副本不过是分区的备份。副本从不读取或写入数据。它们用于防止数据丢失。

5

代理 (Brokers)

  • 代理是负责维护已发布数据的简单系统。每个代理可能每个主题有零个或多个分区。假设一个主题中有 N 个分区和 N 个代理,则每个代理将拥有一个分区。

  • 假设一个主题中有 N 个分区,并且代理数量超过 N (n + m),则前 N 个代理将各有一个分区,接下来的 M 个代理将不为此特定主题拥有任何分区。

  • 假设一个主题中有 N 个分区,而代理数量少于 N (n-m),则每个代理将共享一个或多个分区。由于代理之间负载分配不均,因此不推荐此方案。

6

Kafka 集群 (Kafka Cluster)

拥有多个代理的 Kafka 称为 Kafka 集群。Kafka 集群可以在不停机的情况下扩展。这些集群用于管理消息数据的持久性和复制。

7

生产者 (Producers)

生产者是向一个或多个 Kafka 主题发布消息的发布者。生产者将数据发送到 Kafka 代理。每次生产者向代理发布消息时,代理都会简单地将消息追加到最后一个段文件中。实际上,消息将被追加到分区中。生产者还可以将消息发送到他们选择的特定分区。

8

消费者 (Consumers)

消费者从代理读取数据。消费者订阅一个或多个主题,并通过从代理提取数据来使用已发布的消息。

9

领导者 (Leader)

领导者是负责给定分区的所有读写操作的节点。每个分区都有一个充当领导者的服务器。

10

跟随者 (Follower)

遵循领导者指令的节点称为跟随者。如果领导者失败,则其中一个跟随者将自动成为新的领导者。跟随者充当普通消费者,拉取消息并更新其自身的数据存储。

广告