1.目标 - KAFA价格
在我们上一篇Kafka教程中,我们讨论了Kafka用例和应用程序。今天,在这个Kafka教程中,我们将讨论Kafka Architecture。在这篇Kafka Architecture文章中,我们将在Kafka中看到API。此外,我们将了解Kafka Broker,Kafka Consumer,Zookeeper和Kafka Producer。此外,我们将看到卡夫卡的一些基本概念。
那么,让我们开始Apache Kafka架构。
2. Kafka架构 - Apache Kafka API
Apache Kafka Architecture有四个核心API,生产者API,Consumer API,Streams API和Connector API。我们一个一个地讨论它们:
一个。 制片人API
为了将记录流发布到一个或多个Kafka主题,Producer API 允许应用程序。
我们来讨论Kafka Security
湾 消费者API
此API允许应用程序订阅一个或多个主题,并处理为其生成的记录流。
C。 Streams API
此外,为了充当流处理器,消耗来自一个或多个主题的输入流并产生到一个或多个输出主题的输出流,有效地将输入流转换为输出流,流API允许应用。
d。 连接器API
在构建和运行将Kafka主题连接到现有应用程序或数据系统的可重用生产者或消费者时,我们使用Connector API。例如,关系数据库的连接器可能捕获对表的每个更改。
看看前5个Apache Kafka书籍。
3. Apache Kafka架构 - 集群
下图显示了Apache Kafka 的集群图:
让我们描述上图中显示的Kafka Architecture的每个组件:
一个。卡夫卡 经纪人
基本上,为了维持负载平衡,Kafka集群 通常由多个代理组成。但是,这些都是无状态的,因此为了维护集群状态,他们使用ZooKeeper。虽然,一个Kafka Broker实例每秒可以处理数十万次读写操作。然而,在没有性能影响的情况下,每个代理都可以处理TB消息。此外,确保ZooKeeper执行Kafka经纪人领导者选举。
点击链接了解有关Kafka Broker的更多信息
湾 卡夫卡 - ZooKeeper
出于管理和协调的目的,Kafka经纪人使用ZooKeeper。此外,使用它来通知生产者和消费者有关Kafka系统中任何新代理的存在或Kafka系统中代理的故障。一旦Zookeeper发送有关经纪人或生产者和消费者的存在或失败的通知,就做出决定并开始与其他经纪人协调他们的任务。
C。卡夫卡制片人
此外,卡夫卡的生产商将数据推送给经纪人。此外,所有生产者都会搜索它并自动向新代理发送消息,确切地说是新代理启动时。但是,请记住,Kafka生产者以经纪人可以处理的速度发送消息,它不会等待来自经纪人的确认。
d。卡夫卡消费者
基本上,通过使用分区偏移,Kafka Consumer维护消耗了多少消息,因为Kafka代理是无状态的。此外,一旦消费者确认特定的消息偏移,您就可以确保消费者已经消费了所有先前的消息。此外,为了使字节缓冲区准备好消费,消费者向代理发出异步拉取请求。然后,只需提供偏移值,消费者就可以倒带或跳转到分区中的任何位置。此外,ZooKeeper会通知消费者抵消价值。
4.卡夫卡建筑 - 基本概念
在这里,我们列出了您必须知道的Kafka架构的一些基本概念:
一个。卡夫卡 话题
主题是生产者发布消息并且消费者从中接收消息的逻辑通道。
- 主题定义了Kafka中特定类型/数据分类的流。
- 此外,这里的消息是结构化或组织的。在特定主题上发布特定类型的消息。
- 基本上,一开始,生产者将其消息写入主题。然后消费者从主题中读取这些消息。
- 在Kafka群集中,主题由其名称标识,并且必须是唯一的。
- 可以有任意数量的主题,没有限制。
- 一旦发布,我们就无法更改或更新数据。
使用命令阅读Apache Kafka Operations
下面是显示Kafka主题和分区之间关系的图像:
湾 卡夫卡的分区
在Kafka群集中,主题分为多个分区,也可以跨代理进行复制。
- 但是,对于要写入已发布消息的分区,不能保证这一点。
- 此外,我们可以为邮件添加密钥。基本上,如果生产者发布带有密钥的消息,我们将确保所有这些消息(使用相同的密钥)将最终出现在同一分区中。由于此功能,Kafka提供消息排序保证。但是,除非添加密钥,否则数据会随机写入分区。
- 此外,在一个分区中,消息以顺序方式存储。
- 在分区中,为每条消息分配一个增量ID,也称为偏移量。
- 但是,仅在分区内,这些偏移才有意义。而且,在一个主题中,它在分区之间没有任何价值。
- 可以有任意数量的分区,没有限制。
C。Kafka中的主题复制因子
在设计Kafka系统时,将主题复制考虑在内是一个明智的决定。因此,如果经纪人倒闭,其主题来自其他经纪商的副本可以解决危机。例如,我们有3个经纪人和3个主题。Broker1有Topic 1和Partition 0,它的副本在Broker2中,依此类推。它的复制因子为2; 这意味着它将有一个额外的副本,而不是主要副本。下面是主题复制因子的图像:
让我们学习Apache Kafka Streams | 流处理拓扑
一些关键点 -
- 复制仅在分区级别进行。
- 对于给定的分区,一次只能有一个代理可以成为领导者。同时,其他经纪人将拥有同步复制品; 我们称之为ISR。
- 复制因子的数量不可能超过可用代理的数量。
d。消费者集团
- 它可以运行多个消费者进程/实例。
- 基本上,一个消费者群体将拥有一个唯一的群组ID。
- 此外,在读取时,恰好一个消费者实例从一个消费者组中的一个分区读取数据。
- 由于存在多个使用者组,在这种情况下,每个组中的一个实例可以从一个单独的分区读取。
- 但是,如果消费者数量超过分区数量,则会有一些不活跃的消费者。如果一个消费者群体中有8个消费者和6个分区,那么让我们通过一个例子理解它,这意味着将有2个不活跃的消费者。
阅读Apache Kafka + Spark Streaming Integration
所以,这就是Apache Kafka架构。希望你喜欢我们的解释。
5.结论:卡夫卡建筑
因此,我们已经看到了卡夫卡建筑的概念。此外,我们讨论了Kafka组件和基本概念。此外,我们还看到了一位简短的作家Kafka Broker,Consumer,Producer。与此同时,我们讨论了Kafka Architecture API。此外,有关卡夫卡建筑的任何疑问,请随时在评论部分询问。
另请参阅 -
Zookeeper在Kafka中的作用以
供参考