Apache Kafka 简明教程
Apache Kafka - Fundamentals
在深入了解 Kafka 之前,你必须了解主题、代理、生产者和消费者等主要术语。以下示意图说明了主要术语,表格详细描述了示意图组件。
在上面的示意图中,一个主题被配置为三个分区。分区 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 遵循领导者指令的节点称为跟随者。如果领导者失败,一个跟随者将自动成为新的领导者。跟随者充当正常消费者,拉取消息并更新其自身的数据存储。 |