Apache Kafka 简明教程

Apache Kafka - Fundamentals

在深入了解 Kafka 之前,你必须了解主题、代理、生产者和消费者等主要术语。以下示意图说明了主要术语,表格详细描述了示意图组件。

fundamentals

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

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

S.No

Components and Description

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 Cluster 拥有多个代理的 Kafka 被称为 Kafka 集群。Kafka 集群可以在没有停机的情况下进行扩展。这些集群用于管理消息数据的持久性并复制消息数据。

7

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

8

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

9

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

10

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