2024年5月3日发(作者:)

Apache Kafka总体架构由多个关键组件组成,每个组件在消息传递和数据

流处理中扮演特定角色。以下是Kafka主要组件及其功能概述:

1. Broker:

Kafka Broker是集群中的一个工作节点,负责接收、存储和转发消息。

每个Broker都保存了一部分的消息分区,并为客户端提供读写服务。

Broker之间通过复制机制实现高可用性和容错性。

2. Topic:

Topic是Kafka中消息的逻辑分类,生产者发布消息到特定的Topic,消费

者从Topic订阅并消费消息。

Topic可以被分为多个Partition(分区),每个Partition是一个有序且不

可变的消息序列。

3. Producer:

生产者是向Kafka Broker发送消息的应用程序或进程。

生产者可以选择将消息发布到Topic的哪个Partition上,可以通过指定键

(Key)和分区器策略来决定消息的路由。

4. Consumer:

消费者是订阅并从Kafka Broker读取消息的应用程序或进程。

消费者可以以组的形式组织起来,每个消费组内的消费者会共同消费Topic

的所有分区,但确保每条消息只被组内一个消费者消费一次(即实现了负载均衡

和容错)。

5. Consumer Group:

消费者组允许多个消费者实例共同消费一个Topic,同时保证了消息的唯一

消费(只要组内不重复即可)。

6. Offsets:

消费者跟踪自己在每个Partition上的消费位置,这个位置被称为Offset。

Kafka自动管理这些Offset,允许消费者重新消费或者跳过某些已消费过的

消息。

7. Zookeeper(早期版本使用):

在较早版本的Kafka中,Zookeeper作为元数据存储系统,用于管理和协

调Broker、消费者组等的状态信息,如Broker注册、消费者组协调、分区首领

选举等。

新版Kafka自2.0开始,逐渐弃用Zookeeper,转而使用更先进的控制器

模型和Kafka Raft协议来管理集群内部的元数据和协调。

8. Kafka Connect:

一个用于连接Kafka和其他外部系统的工具,提供了预定义的连接器,方

便导入导出数据,实现数据管道。

9. Kafka Streams API:

提供了一个简单的Java库,使开发者能够构建分布式流处理应用,直接在

Kafka集群上进行数据转换和聚合操作。

以上内容概括了Kafka的主要组件及其核心功能,具体的功能细节和技术

实现可能随着Kafka版本的迭代有所更新和增强。