Apache Kafka是一个分布式流处理平台,它由多个关键组件组成,这些组件共同协作以实现高效、可靠和可扩展的消息传递。以下是Kafka中的主要组件:
-
Broker:
- Kafka Broker是Kafka集群的核心服务器节点。每个Broker负责存储和管理消息主题的分区,并提供数据读写服务。客户端应用程序(生产者和消费者)与Brokers交互来发布和订阅消息。
-
Topic:
- Topic是Kafka中消息发布的逻辑分类或通道。每条发布到Kafka的消息都属于一个特定的Topic。可以有任意数量的生产者向同一个Topic发布消息,同时也可以有任意数量的消费者从该Topic消费消息。
-
Partition:
- 每个Topic被分成多个Partition(分区)。Partition是物理上的概念,它是日志文件在硬盘上的表现形式,每个Partition都是有序且不可变的消息序列。Partition增强了系统的并行能力和容错性。
-
Producer:
- 生产者是创建和发送消息到Kafka Broker的客户端应用程序。生产者可以选择将消息发送到Topic的某个指定分区,或者让Kafka根据配置的策略自动选择分区。
-
Consumer:
- 消费者是从Kafka Broker读取消息的应用程序。消费者可以通过订阅Topic并在消费组内工作,消费组内的消费者可以负载均衡地消费Topic的所有分区。
-
Consumer Group:
- 消费者组是一组消费者的逻辑集合,它们共同消费一个Topic,但每个分区在同一时刻只能被一个消费者组中的一个消费者实例消费,从而实现了水平扩展和消息的顺序处理。
-
Zookeeper (早期版本) / Controller (新版本):
- 在较早版本的Kafka中,Zookeeper作为协调服务,用于管理和维护Broker的状态信息,以及进行Leader选举等操作。
- 在较新的Kafka版本中,Controller的概念被引入,它是集群中的一个特殊Broker,负责维护分区的Leader分配、监控副本状态变化以及执行必要的故障恢复任务。
-
Offset:
- Offset是Kafka用来跟踪消费者在每个分区上消费位置的机制。每个消费者都有自己的偏移量,用于记录它已经读取过的最后一条消息的位置。
-
Replication:
- 每个分区都有多个副本,其中一个为Leader副本,其他为Follower副本。Leader副本负责处理所有读写请求,而Follower副本定期从Leader复制数据以保持同步,当Leader发生故障时,会从ISR(In-Sync Replicas,同步副本集)中选举新的Leader。这提高了整个系统的可用性和容错能力。